部署Jenkins
1. 登录jenkins
2. 输入密码
复制加密密码字段,粘贴到web端。
1. [root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword 2. 3. a76f65bd63294aae93d3adf8c6bbe2a1
3. 安装插件选项
如果弹出插件选项点击右上角“X”,进入点击开始使用就可以看到默认页面,插件将在后面本地安装(解压tar包的方式)。
4. 修改admin用户密码
右上角→admin点击下拉三角→Configure→Password字段→修改密码→save保存,将会弹出登录页面,输入新密码登录即可。
5.复制插件包到虚拟机
解压jenkins-plugins.tar.gz包到jenkins路径下。
1. [root@jenkins ~]# cd /media/ 2. 3. [root@jenkins media]# tar zxf jenkins-plugins.tar.gz -C /var/lib/jenkins/ 4. 5. [root@jenkins media]# systemctl restart jenkins
6.关联gitlab
(1)初始配置
创建与服务器及web站点之间的互信
①jenkins服务器跟web之间做互信
1. [root@jenkins ~]# ssh-keygen -t rsa 2. 3. [root@jenkins ~]# cat /root/.ssh/id_rsa.pub
②jenkins服务器跟gitlab服务器做互信(双方互信)
1. [root@jenkins ~]# ssh-copy-id root@192.168.1.4 2. 3. [root@git ~]# ssh-copy-id root@192.168.1.5
(2)点击左上角logo回到主页面→选择新项目→New Item→填写项目名→选择项目类型→Freestyle project→save保存。
(3)配置web项目→源代码管理General→git→填写存储库网址(git@192.168.1.4:dev/web.git)→报红字错误,则需要添加私钥认证→如果认证成功→save保存。
选择web项目→左侧选择build now(点一下就行,稍等几秒)→等待构建历史出现蓝色标志→选择蓝色标志小三角下拉列表→console output→查看输出执行过程。
(4)jenkins服务器上查看/var/lib/jenkins/workspace目录,会有项目同名文件夹,保存git clone 的所有代码
自动上传
拓扑图如下:
1. 在gitee码云上下载项目代码(gitlab服务器)
1. [root@gitlab ~]# cd /data 2. 3. [root@gitlab data]# git clone https://gitee.com/kangjie1209/monitor.git 4. 5. 正克隆到 'monitor'... 6. 7. remote: Enumerating objects: 435, done. 8. 9. remote: Total 435 (delta 0), reused 0 (delta 0), pack-reused 435 10. 11. 接收对象中: 100% (435/435), 8.78 MiB | 2.02 MiB/s, done. 12. 13. 处理 delta 中: 100% (54/54), done.
2. 登录gitlab,创建新的web项目,也可以直接使用之前创建的web项目。
admin area→new project→选择dev组→项目名:web1 →create。
3. 在gitlab本地服务器上传代码到gitlab
1. [root@gitlab data]# mv monitor/* web 2. 3. [root@gitlab data]# cd web
1. [root@gitlab web]# git add . 2. 3. [root@gitlab web]# git commit -m "vip_1" 4. 5. [root@gitlab web]# git push -u origin master //把代码推送上去
4. 登录jenkins,新建自由项目web。
(1)new item→ create → freestyle。
(2)configure→源代码库Source Code Management→git→gitlab路径及私钥认证→ save。
(3)build now:手动同步测试。
5. jenjins实现脚本上传网站代码
(1)打开nginx服务器,安装nginx。
1. yum -y install epel-release 2. yum -y install nginx 3. systemctl start nginx 4. systemctl stop firewalld 5. setenforce 0
(2)在jenkins上编写上传nginx的脚本
1. [root@jenkins ~]# mkdir /scripts 2. [root@jenkins ~]# vim /scripts/web.sh 3. #!/bin/sh 4. CODE_DIR=/var/lib/jenkins/workspace/web/ 5. WEB_DIR=/usr/share/nginx 6. IP=192.168.1.6 //指定nginx主机 7. TIME=`date +%F-%H-%M-%S` 8. cd $CODE_DIR && tar zcf /tmp/web-${TIME}.tar.gz ./* 9. scp /tmp/web-${TIME}.tar.gz $IP:$WEB_DIR 10. ssh root@$IP "cd $WEB_DIR && mkdir web-$TIME" 11. ssh root@$IP "cd $WEB_DIR && tar xf web-${TIME}.tar.gz -C web-$TIME && rm -rf web-${TIME}.tar.gz" 12. ssh root@$IP "cd $WEB_DIR && rm -rf html && ln -s web-$TIME html"
(3)jenkins传输公钥到nginx,执行脚本,测试查看nginx网站
1. [root@nginx ~]# ssh-keygen -t rsa 2. 3. [root@nginx ~]# ssh-copy-id root@192.168.1.5 4. 5. [root@jenkins ~]# ssh-copy-id root@192.168.1.6 6. 7. [root@jenkins ~]# chmod +x /scripts/web.sh 8. 9. [root@jenkins ~]# sh /scripts/web.sh
(4)打开jenkins手动构建,关联脚本,自动上传
项目web→configure → build→Execute shell→ 输入sh /scripts/web.sh→save。
注意:如果安装jenkins后没有修改配置为root,脚本执行如果有权限问题,如已修改可直接跳过此步,解决方法如下。
(1)修改jenkins登录shell为修改jenkins登录shell为/bin/bash
1. vim /etc/passwd 2. 3. 修改: 4. 5. jenkins:x:990:985:Jenkins Automation Server:/var/lib/jenkins:/bin/bash 6. 7. 保存退出
(2)修改jenkins服务器的本地profile
1. vim /root/.bash_profile 2. 3. 添加: 4. 5. export PS1='[\u@\h \W]\$' 6. 7. 保存退出 8. 9. source /root/.bash_profile
(3)赋予jenkins用户sudo权限
1. isudo 2. 3. 添加: 4. 5. jenkins ALL=(ALL) NOPASSWD: ALL 6. 7. 保存退出
8. jenkins关联gitlab,实现自动构建上传代码
(1)jenkins:
web项目→configure→build triggers→ 勾选最长选项→ 点击高级advanced→ 选择Filter branches by name →在include填写master→ 点击generate生成令牌→复制令牌和触发器顶部url路径→save保存。
d4cb388a26fbd53c209f5523ac396c1b 用自己的令牌和URL路径
http://192.168.1.5:8081/project/web
(2)gitlab:
web项目→settings→ integrations→把复制的令牌和url粘贴过来→下拉网页点击add webhook。
(3)更新push代码,测试自动构建上传。
修改前查看网站是下图所示
在gitlab上,修改网站首页index.html文件并上传master。
[root@gitlab web]# vim index.html //修改43行测试
1. [root@gitlab web]# git add . 2. [root@gitlab web]# git commit -m "vip2" 3. [master b06646d] vip2 4. 1 file changed, 1 insertion(+), 1 deletion(-) 5. [root@gitlab web]# git push -u origin master 6. Counting objects: 5, done. 7. Compressing objects: 100% (3/3), done. 8. Writing objects: 100% (3/3), 292 bytes | 0 bytes/s, done. 9. Total 3 (delta 2), reused 0 (delta 0) 10. To git@192.168.1.4:dev/web.git 11. ae26759..b06646d master -> master 12. 分支 master 设置为跟踪来自 origin 的远程分支 master。
(4)登录nginx网站,查看更新内容。
通过下图可以看到,首页名称已自动修改成功。