建立CD环境
1.确认cmdb_server容器有ssh服务,没有则yum install openssh-server
2.然后进入jenkins_server容器发公钥到cmdb_server
3.jenkins安装Publish over SSH,将jenkins_server的私钥填入
如果测试不成功,尝试以下操作:
解决办法源于此文档
Publish over SSH 这个插件为旧版本,我们下载的新的openssh-server生成秘钥为新的算法,所以如果要制作“较旧的” OpenSSH格式,请尝试此操作。
或通过使用旧的ssh-keygen进行设置
/usr/bin/ssh-keygen -A
生成系统秘密钥匙
ssh-keygen -t rsa -b 4096 -m PEM
开始构建任务
git设置构建触发器
执行shell打包
利用ssh传文件
具体配置
主动执行任务后,可在cmdb_server容器中得到一个这样的文件
ls /app/code/
code.tar
基于以上操作
我们可以实现代码的简单更新,也有点类似于发布
修改ssh过去之后的操作我们在本机上写好新功能,提交到gitlab上,jenkins使用webhook拉取到代码,并且通过ssh推送到生产服务器上,生产服务器停服务,备份源代码,拉取新代码,起服务,跑新代码,有问题则回滚,一系列操作自动执行
bak.sh(可放到工作区下被一起打包过去)
#!/bin/bash
tar -xf /app/code/code.tar -C /app/code/ #解压tar包
cp -r /opt/auto_cmdb /backup/auto_cmdb-$(date +%F-%X) #备份原来的代码
rm -rf /opt/auto_cmdb #删除原来的代码
mv /app/code/auto_cmdb /opt/ #部署新的代码
由于我们起的容器的缘故,cmdb的Dockerfile 写入了 CMD uwsgi --ini /opt/auto_cmdb/conf/uwsgi.ini
造成无法停止服务,虽然不合生产环境,但是不影响我们运行新的代码
当我们在访问页面时,刷新即可看到相应的改变
网友评论