基于jenkins和docker的持续化集成实践
本文尝试从零开始为大家演示如何用docker和jenkins做持续化集成。在github上随便找了个仓库来作为我们今天的演示对象,一个空nginx,地址是https://github.com/nginxinc/docker-nginx。 所以我们要实现的就是,用jenkins+docker的方式,自动将构建好这个demo,并部署到服务器。
安装jenkins
jenkins安装方法很多,可以参考文档https://jenkins.io/doc/,个人比较喜欢用docker方式安装,命令如下:
x
# 安装和启动jenkinsdocker 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=demodocker login --username=${DOCKER_USER} --password=${DOCKER_PASSWORD} ${DOCKER_URL}docker pull ${DOCKER_URL}/${image_name}docker stop ${container_name} || true && docker rm ${container_name} || truedocker run -d -p 9000:80 ${DOCKER_URL}/${image_name}
结束
至此配置就完成了,点立即构建就能将demo发布到远程服务器了。正常的话,访问http://远程机器ip:9000,可以看到nginx的默认主页。