Run docker-compose in Jenkins

需求

在阿里云服务器上部署Jenkins 在Jenkins中自动运行docker-compose
这篇文章主要记录一下部署时候遇到的问题。

Server: Ubuntu 14.04.2 LTS

Requirement:

  • Jenkins version 2.19.3
  • Docker version 1.12.3
  • docker-compose version 1.8.1

Jenkins

插件

Jenkins 安装完成后会创建一个名为jenkins的用户,默认启动8080端口 开启jenkins服务
登陆web,初始引导操作会让你创建用户和安装一些插件,这里说一下必须额外安装的插件

系统管理-管理插件-可选插件

  • Git client plugin
  • Git plugin
  • Bitbucket Plugin
  • Build Pipeline Plugin
  • Pipeline

下插件时因为众所周知的网络问题 需要多重试几次

安装步骤

该项目有4个job 分别是

  • mom 用于抓bitbucket mom的代码
  • momflask 用于抓bitbucket momflask的代码
  • rmom 用于抓bitbucket rmom的代码
  • run_docker_compose 运行docker-compose

1. 新建mom job

源码管理 git@bitbucket.org:Aaron_Liu/mom.git

指定分支 master

构建-execute shell

1
2
pwd
ls -a

构建后操作-Trigger parameterized build on other projects(这一步是为了自动触发momflask的构建工作)

Projects to build momflask
Trigger when build is Stable
Trigger build without parameters 一定要打勾!!!

2. 新建momflask job

General 高级

使用自定义的工作空间 目录 `$JENKINS_HOME/workspace/mom/momflask`
目的是为了把momflask的文件夹放在mom下

源码管理 git@bitbucket.org:xixijun/momflask.git

指定分支 develop

构建-execute shell

1
2
pwd
ls -a

构建后操作-Trigger parameterized build on other projects(这一步是为了自动触发rmom的构建工作)

Projects to build rmom
Trigger when build is Stable
Trigger build without parameters 一定要打勾!!!

3. 新建rmom job

General 高级

使用自定义的工作空间 目录 `$JENKINS_HOME/workspace/mom/rmom`

源码管理 git@bitbucket.org:xixijun/rmom.git

指定分支 dev

构建-execute shell

1
2
pwd
ls -a

构建后操作-Trigger parameterized build on other projects(这一步是为了自动触发run_docker_compose的构建工作)

Projects to build run_docker_compose
Trigger when build is Stable
Trigger build without parameters 一定要打勾!!!

4. 新建run_docker_compose job

General 高级

使用自定义的工作空间 目录 `$JENKINS_HOME/workspace/mom`

构建-execute shell

1
2
docker-compose ps
docker-compose up -d --build

5. 新建pipline view

这一步需要 Build Pipeline Plugin 插件支持
新建按钮在All标签栏右边的+号
点击 Build Pipeline View

配置 Select Initial Job 选择mom
保存后会看到流程图,流程图的关联是依据之前设置 构建后操作-Trigger parameterized build on other projects

遇到的问题

如果想要实现git推送代码后自动更新 需要在job的构建触发器中设置Build when a change is pushed to BitBucket
还要在该项目的BitBucket中设置webhooks为 http://url/bitbucket-hook/

安装Jenkins之后会创建一个名为jenkins的用户 需要赋予该用户权限才能执行docker命令
sudo usermod -aG docker Jenkins