2016-05-13 21 views
27

我正在寻找一种方法来运行由Jenkins 2.0中的多个容器组成的启用Docker的构建。Jenkins Pipeline Plug-in是否支持Do​​cker Compose?

是否有泊坞窗撰写的原生支持任何计划在管道,或通过CloudBees的泊坞窗管道插件。

或者可以/必须通过显式调用sh docker-compose...来解决?甚至可以在try... finally 之内使用它们来进一步控制服务生命周期。


编辑:第一个答案是建议在詹金斯建立码头集装箱的方法。这不是这里需要的。我(EngineerDollery)希望使用撰写器在jenkins中调用我的目标平台,以便我可以将应用程序部署到它并运行端到端测试。

+0

我能够使用泊坞窗通过运行shell脚本撰写,我不知道,如果它可以在管道中使用,但如果你可以运行shell在管道中的脚本,那么它不应该是一个问题。 –

+2

不幸的是,我终于来到了一个解决方案,其中包括从'sh'步骤运行'docker compose',将其嵌入'try ... finally'子句中进行生命周期控制。 **目前,Jenkins插件生态系统**不支持'docker-compose'。不过,我会密切关注官方[CloudBees Docker管道插件](https://wiki.jenkins-ci.org/display/JENKINS/CloudBees+Docker+Pipeline+Plugin),而不是实验[Docker Slaves Plugin]( https://wiki.jenkins-ci.org/display/JENKINS/Docker+Slaves+Plugin)。 – luka5z

回答

9

Jenkins bug tracking,JENKINS-35025中搜索后,建议在使用maven build在码头集装箱中运行作业时考虑docker-compose.yml

另请参阅Creating CI pipeline with Jenkins,它假设docker-compose安装在您的Jenkins服务器上。

注:一年后(2017年8月),docker-compose is still not supported in the Docker Pipeline plugin

+0

这里是运行一个运行docker的jenkins容器的文件:https://gist.github.com/aj07mm/9ec82203d45c990e9d8f909109fd8188 –

0

我面临着类似的问题,我发现这个https://reinout.vanrees.org/weblog/2017/10/03/docker-compose-in-jenkins.html,但我不知道是什么关系。

我的问题是在开发过程中进行测试,并在Jenkins中自动执行测试,我使用docker-compose调出一些php脚本和一个mysql服务器,以运行隔离测试(截至目前的phpunit)。

我想我可以通过

  1. 创造泊坞窗主机网络(与docker network create
  2. 创建和运行连接到该网络(一个MySQL泊坞窗与docker run mysql --network=netname --name=mysqlmachine
  3. 运行脚本通过实现这一目标jenkins指定--network并指mysqlmachine作为主机。

但是这意味着我需要设置db数据,cleanu p db数据,并且即使不需要时也会一直保留在mysqlmachine上,因此会消耗一些ram资源。我可以使用docker start mysqlmachinedocker stop mysqlmachine命令在我定义管道的Jenkins文件中解决最后一个问题。

但是,再次,执行外壳到哪里詹金斯正在运行的泊坞窗,我找不到docker命令

对我来说是一个可行的解决方案,直到我不能找到更好的东西

更新: 我会尝试https://wiki.jenkins.io/display/JENKINS/Docker+Slaves+Plugin解决方案,它几乎什么,我需要

1

下面是运行中运行码头工人一詹金斯容器中的文件:

码头 - 撰写。阳明海运

jenkins: 
    build: . 
    restart: always 
    ports: 
    - "8080:8080" 
    - "5000:5000" 
    volumes: 
    - /var/run/docker.sock:/var/run/docker.sock 

Dockerfile

FROM jenkins/jenkins:2.73.2 

# install docker, docker-compose, docker-machine 
# see: https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/ 
# see: https://docs.docker.com/engine/installation/linux/linux-postinstall/ 
# see: https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/ 

USER root 

# prerequisites for docker 
RUN apt-get update \ 
    && apt-get -y install \ 
     apt-transport-https \ 
     ca-certificates \ 
     curl \ 
     software-properties-common 

# docker repos 
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \ 
    && echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable" >> /etc/apt/sources.list.d/additional-repositories.list \ 
    && echo "deb http://ftp-stud.hs-esslingen.de/ubuntu xenial main restricted universe multiverse" >> /etc/apt/sources.list.d/official-package-repositories.list \ 
    && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 437D05B5 \ 
    && apt-get update 

# docker 
RUN apt-get -y install docker-ce 

# docker-compose 
RUN curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose \ 
    && chmod +x /usr/local/bin/docker-compose 

# give jenkins docker rights 
RUN usermod -aG docker jenkins 

USER jenkins 
+0

有趣。 +1 – VonC

相关问题