06-自动化发布静态页面
1.需求
一键部署静态页面到 web7 web8 ,且支持后续的页面更新
流程
jenkins部署流水线
1. 准备web7,web8,两个客户端,部署好nginx,支持静态页面推送
2. jenkins编写部署脚本,创建job,触发shell脚本执行
3. 确保jenkins可以拉取代码仓库
4. 确保jenkins可以和目标机器,实现免密通信(因为要远程执行命令,远程部署)
2.准备好代码仓库gitlab
1.登录码云,获取我们测试的静态文件
git@gitee.com:kangjie1209/monitor.git
2.导入到自己的gitlab
导入中
3.配置jenkins
3.1 创建自由风格job
3.2 配置gitlab连接
3.3 开发部署脚本
开发思路就是
1. 下载代码
2. 压缩代码,便于传输
3. 脚本提交到目标机器上
代码
#!/bin/bash
#author: www.yuchaoit.cn
# 1.进入代码目录,打包传输
DATE=$(date +%Y-%m-%d-%H-%M-%S)
web_server_list="10.0.0.7 10.0.0.8"
get_code(){
cd ${WORKSPACE} && \
tar czf /opt/web-${DATE}.tar.gz ./*
}
# 2.代码发送给web集群组
# 基于软连接,指向具体的文件目录,实现发版
scp_web_server(){
for hosts in $web_server_list
do
scp /opt/web-${DATE}.tar.gz root@$hosts:/opt/
ssh root@$hosts "mkdir -p /code/web-${DATE} && \
tar -zxf /opt/web-${DATE}.tar.gz -C /code/web-${DATE}
rm -rf /code/web && \
ln -s /code/web-${DATE} /code/web"
done
}
deploy(){
get_code
scp_web_server
}
# 执行入口
deploy
脚本创建
[root@jenkins-100 /jenkins_shell]#chmod u+x deploy_nginx.sh
[root@jenkins-100 /jenkins_shell]#ls
deploy_nginx.sh
3.4 jenkins调用执行shell脚本
4.确保web7-8环境正常
# 上述部署脚本,是将静态文件放在了 /code/web
# nginx配置
cat > /etc/nginx/conf.d/monitor.conf <<'EOF'
server{
listen 80;
server_name _;
location / {
root /code/web;
index index.html;
}
}
EOF
# 重启
pkill -9 nginx
systemctl restart nginx
5.测试jenkins构建
先确保和目标机器免密ssh
[root@jenkins-100 ~]#for i in 7 8 ;do ssh-copy-id root@10.0.0.$i;done
[root@jenkins-100 ~]#for i in 7 8 ;do ssh root@10.0.0.$i "hostname" ;done
web-7
web-8
确保2台机器开启nginx
for i in 7 8 ;do ssh root@10.0.0.$i 'pkill -9 nginx;systemctl restart nginx' ;done
6.nice页面出现了
7.试试代码更新
1.推送代码到代码仓库,更新
完成如下操作
- windows克隆代码(开发)
- 修改,提交版本(开发)
- 推送到gitlab(开发)
- 点击jenkins,实现页面自动更新 (运维)
7.2 模拟开发修改,提交代码
7.3 运维要操心什么么?点鼠标啊!
7.4 看看结果?给力呀
8.还有更高级的玩法吗?(构建触发器,webhook)
jenkins除了能让你鼠标一点,就实现更新,还有没有更nb的玩法?
比如连鼠标都不用点?我擦,你真是懒到家了!
8.1 jenkins触发器
8.2 gitlab设置webhook
坑记录
如果出现报错
Url is blocked: Requests to the local network are not allowed
添加webhook结束
8.3 开发又来写代码了(push请求)
注意于超老师这里,啥也没干,只是push推送了代码。
牛啊牛啊