2016-05-13 54 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

相關問題