docker+jenkins+golang持续集成实践
起因 #
因为生产需要最近又重新折腾了一下Jenkins和docker。主要目的是想自动编译,打包,部署一些Golang的HttpServer。于是决定使用Jenkins来做这个持续集成的载体,选择Jenkins出于两点原因:
1. 以前就使用过,上手会更快 2. 社区比较成熟,插件和文档丰富
安装Docker和Pull Jenkins镜像 #
这一步,作为前置条件且不是本文主要要描述的步骤,因此略去。网上也有很多参考资料~
Jenkins & docker-compose配置 #
为了方便我才用了docker-compose这个工具,docker-compose 基础可以参见我的docker-compose上手。这里直接上配置:
version: '2'
services:
jenkins:
container_name: jenkins-lts
ports:
- 9001:8080
- 50000:50000
image: jenkins/jenkins:lts
volumes:
- /home/worker/jenkins/jenkins_home:/var/jenkins_home
配置也是官方的示例配置。
Note: 将宿主机的/home/worker/jenkins/jenkins_home挂载为容器的/var/jenkins_home目录。这样做的目的是,如果容器被不小心删除也不至于Jenkins的数据丢失。
到这里,我们只需要执行docker-compose up -d
便可以将Jenkins容器跑起来了,再配置一下Nginx,便可以直接访问到Jenkins页面了,并进行初始化。
我的目录结构如下:
➜ jenkins ll
total 8.0K
-rw-rw-r-- 1 worker worker 220 May 2 17:19 docker-compose.yml
drwxrwxr-x 19 worker worker 4.0K May 3 15:53 jenkins_home
➜ jenkins pwd
/home/worker/jenkins
➜ jenkins docker-compose up -d # 运行
Publish Over SSH配置 #
Publish Over SSH
配置,由于我们是通过docker运行的Jenkins,因此要特别配置一下SSH,方便Jenkins部署项目。这里先列出步骤: