基于jenkins和docker的持续化集成实践
本文尝试从零开始为大家演示如何用docker和jenkins做持续化集成。在github上随便找了个仓库来作为我们今天的演示对象,一个空nginx,地址是https://github.com/nginxinc/docker-nginx。 所以我们要实现的就是,用jenkins+docker的方式,自动将构建好这个demo,并部署到服务器。
安装jenkins
jenkins安装方法很多,可以参考文档https://jenkins.io/doc/,个人比较喜欢用docker
方式安装,命令如下:
x
# 安装和启动jenkins
docker run -u root -d -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
命令执行成功的话,jenkins就装好了。可以使用http://localhost:8080/访问jenkins,然后就是做一些初始化工作,这里不再赘述,大家根据页面提示操作就行了。
配置jenkins
安装ssh插件
添加你的服务器凭据
进入系统设置页,添加服务器
在系统设置页,配置如下一下环境变量
创建一个jenkins项目
新建一个自由风格的软件项目
,名字随意。
设置git仓库
添加本地shell执行构建步骤
主要是完成build镜像、推送镜像到私服等操作。这一系列操作,也可以通过一些jenkins插件完成,比如CloudBees Docker Build and Publish
。这里我用的是使用shell命令的方式。
x
image_name=<你的镜像名字>
docker login --username=${DOCKER_USER} --password=${DOCKER_PASSWORD} ${DOCKER_URL}
docker build -t ${image_name} .
docker tag ${image_name} ${DOCKER_URL}/${image_name}
docker push ${DOCKER_URL}/${image_name}
远程远程脚本执行步骤
通过ssh登录到远程机器,执行docker镜像拉取和重启容器操作。
x
image_name=<你的镜像名字>
container_name=demo
docker login --username=${DOCKER_USER} --password=${DOCKER_PASSWORD} ${DOCKER_URL}
docker pull ${DOCKER_URL}/${image_name}
docker stop ${container_name} || true && docker rm ${container_name} || true
docker run -d -p 9000:80 ${DOCKER_URL}/${image_name}
结束
至此配置就完成了,点立即构建
就能将demo发布到远程服务器了。正常的话,访问http://远程机器ip:9000
,可以看到nginx的默认主页。