基于Nodejs项目的CI/CD(gitlab+verdaccio+jenkins)
CI/CD场景
所有软件都用docker部署,jenkins在测试服务器上,developer 上传分支代码提交合并,code-manager审核代码并同意合并到master分支,触发gitlab的webhook,代码推送到jenkins,开始自动构建image,并替换部署原container
jenkins搭建
由于jenkins本来就在测试服务器上,那我们就没必要传送打包文件到测试服务器上再替换容器,直接把测试服务器上docker的入口文件和执行文件挂载到jenkins的容器中,这样我们就可以直接在jenkins容器内对测试服务器上的docker环境进行操作。
注意
1、确保保证jenkins用户可以使用docker执行文件(粗暴的做法:chmod 777 /var/run/docker.sock)
2、有些环境挂载之后还需要拷贝一些必要的文件到容器中,才能保证docker命令能被识别(
docker cp libltdl.so.7 jenkins:/usr/lib/x86_64-linux-gnu
docker cp libltdl.so.7.3.1 jenkins:/usr/lib/x86_64-linux-gnu)
docker run -d --name jenkins \
-v jenkins_home:/var/jenkins_home \
-e JENKINS_OPTS="--httpPort=8083 --httpsPort=-1" \
-e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \
--restart always \
--