Devops项目(jenkins-gitlab-web)
持续交付/部署
- Jenkins实现自动上传网站代码
- 开启虚拟机web-server,安装nginx
[root@web-server ~]# yum -y install epel-release
[root@web-server ~]# yum -y install nginx
[root@web-server ~]# systemctl start nginx
- Jenkins上编写上传nginx脚本
[root@jenkins-server ~]# mkdir /scripts
[root@jenkins-server ~]# vim /scripts/web1.sh
添加:
#!/bin/sh
CODE_DIR=/var/lib/jenkins/workspace/web/
WEB_DIR=/usr/share/nginx
IP=192.168.10.15
TIME=$(date +%F-%H-%M-%S)
cd $CODE_DIR && tar zcf /tmp/web-${TIME}.tar.gz ./*
scp /tmp/web-${TIME}.tar.gz $IP:$WEB_DIR
ssh root@$IP "cd $WEB_DIR && mkdir web-$TIME"
ssh root@$IP "cd $WEB_DIR && tar xf web-${TIME}.tar.gz -C web-$TIME && rm -rf web-${TIME}.tar.gz"
ssh root@$IP "cd $WEB_DIR && rm -rf html && ln -s web-$TIME html"
保存退出
为方便阅读,脚本可写出如下方式:
#!/bin/sh
TIME=$(date +%F-%H-%M-%S)
cd /var/lib/jenkins/workspace/web/ && tar zcf /tmp/web-$TIME.tar.gz ./*
scp /tmp/web-$TIME.tar.gz 192.168.10.15:/usr/share/nginx
ssh root@192.168.10.15 "cd /usr/share/nginx && mkdir web-$TIME"
ssh root@192.168.10.15 "cd /usr/share/nginx && tar xf web-$TIME.tar.gz -C web-$TIME && rm -rf web-$TIME.tar.gz"
ssh root@192.168.10.15 "cd /usr/share/nginx && rm -rf html && ln -s web-$TIME html"
- jenkins传输公钥到nginx,执行脚本,测试查看nginx网站
[root@jenkins-server ~]# ssh-copy-id root@192.168.10.15
[root@jenkins-server ~]# sh /scripts/web1.sh
![]()
Web服务器上验证:
[root@web-server ~]# ls /usr/share/nginx/html/

- Jekins主机上,关联脚本,手动构建,自动上传
项目web -- configure -- build steps -- (Add build step)Execute shell -- sh /scripts/web1.sh——save

sh /scripts/web1.sh 输入上面的方框中 ——save
在/var/lib/jenkins/workspace目录中创建新文件:
[root@jenkins-server ~]# cd /var/lib/jenkins/workspace
[root@jenkins-server workspace]# cd web
[root@jenkins-server web]# touch test
[root@jenkins-server web]# ls
![]()
在web1项目中重新执行build now动作:


在web服务器上验证(192.168.10.15)
[root@web-server ~]# ls /usr/share/nginx/html/

- jenkins关联gitlab,实现自动构建上传代码
- Jenkins-server主机上(安装gitlab插件才有此项)

web1项目-- configure -- build triggers -- 勾选最长选项 -- 点击高级advanced
-- 选择Filter branches by name --在include填写“master” -- 点击generate生成令牌 -- 复制令牌和触发器顶部url路径
-- save保存


复制令牌和URL路径:
URL:http://192.168.10.13:8080/project/web
5e8f20130743f0ceeb9fdfae7d790785
- gitlab-server主机:
配置当有代码更新时,通知jenkins,从而触发build动作
web项目 -- settings -- integrations -- 把复制的令牌和url粘贴过来 -- add webhook



- Dev主机:更新push代码,测试自动构建上传
克隆下载项目:
[root@dev ]# git clone git@192.168.10.12:web/web1.git

修改文件内容,再推送上传代码(管理员身份)
[root@dev data]# cd web1/
[root@dev web1]# echo "devops-test-page" > index.html
[root@dev web1]# git add .
[root@dev web1]# git config --global user.email "wlb@163.com"
[root@dev web1]# git config --global user.name "wlb"
[root@dev web1]# git commit -m "add index.html"
[root@dev web1]# git push -u origin master

- 登录nginx网站,查看更新内容
windows浏览器访问: http://192.168.10.15

- 应用案例
- 在dev主机上执行下载项目代码(gitee码云仓库下载),测试自动部署
[root@dev web1]# cd /root
[root@dev ~]# git clone https://gitee.com/kangjie1209/monitor.git
[root@dev ~]# rm -rf web1/*
[root@dev ~]# mv monitor/* web1/
[root@dev ~]# cd web1/
[root@dev web1]# git add -A .
[root@dev web1]# git commit -m "add monitor pages"
[root@dev web1]# git push -u origin master

- 在nginx主机上查看
[root@web-server ~]# ls /usr/share/nginx/html

通过浏览器访问http://192.168.10.15

- 更改代码文件,重新上传测试
[root@dev web1]# vim /root/web1/index.html
修改:10行,43行
<title>移动能效管理平台v1</title>
移动能效管理平台v1


[root@dev web1]# git add .
[root@dev web1]# git commit -m "change monitor v1"
[root@dev web1]# git push -u origin master

再通过浏览器访问http://192.168.10.15

更多推荐
所有评论(0)