持续交付/部署

  • Jenkins实现自动上传网站代码
  1. 开启虚拟机web-server,安装nginx

[root@web-server ~]# yum -y install epel-release

[root@web-server ~]# yum -y install nginx

[root@web-server ~]# systemctl start nginx

  1. 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"

  1. 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/

  1. 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,实现自动构建上传代码
  1. 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

  1. gitlab-server主机:

配置当有代码更新时,通知jenkins,从而触发build动作

web项目 -- settings -- integrations -- 把复制的令牌和url粘贴过来 -- add webhook

  1. 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

  1. 登录nginx网站,查看更新内容

windows浏览器访问: http://192.168.10.15

  • 应用案例
  1. 在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

  1. 在nginx主机上查看

[root@web-server ~]# ls /usr/share/nginx/html

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

  1. 更改代码文件,重新上传测试

[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

      

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐