2016-05-13 10 views
27

Szukam sposobu na uruchomienie kompilacji z obsługą Docker składającej się z wielu kontenerów w Jenkins 2.0.Czy wtyczka Jenkins Pipeline obsługuje Docker Compose?

Czy są jakieś plany na rodzimym wsparciu Docker Compose w Pipeline lub poprzez CloudBees dokowanym wtyczek dla rurociągu.

Czy można/trzeba to rozwiązać za pomocą wyraźnych połączeń telefonicznych sh docker-compose...? Może nawet użyć ich wewnątrz try... finally do dalszego kontrolowania cyklu życia usług.


EDYCJA: Pierwsza odpowiedź polegała na zaproponowaniu sposobu budowy kontenerów dokerów w jenkins. To nie jest tutaj potrzebne. Ja (EngineerDollery) chcę wywołać moją platformę docelową w jenkins przy użyciu komponowania, dzięki czemu mogę wdrożyć moją aplikację i przeprowadzić testy end-to-end.

+0

udało mi się użyć docker komponować uruchamiając skrypty powłoki, nie jestem pewien, czy może on być stosowany w rurociągu, ale jeśli można uruchomić powłokę skrypty w potoku, więc nie powinno to stanowić problemu. –

+2

Niestety, nareszcie znalazłem rozwiązanie, które obejmuje uruchamianie 'docker compose' z' sh' step, osadzanie go wewnątrz 'try ... finally' clause na kontrolę cyklu życia. ** W tej chwili nie ma wsparcia dla 'docker-compose' od Jenkins plug-ins eco-system **. Będę jednak bacznie obserwować oficjalną wtyczkę [CloudBees Docker Pipeline Plugin] (https://wiki.jenkins-ci.org/display/JENKINS/CloudBees+Docker+Pipeline+Plugin) i raczej eksperymentalną [Docker Slaves Plugin] (https://wiki.jenkins-ci.org/display/JENKINS/Docker+Slaves+Plugin). – luka5z

Odpowiedz

9

Po wyszukaniu w Jenkins bug tracking, JENKINS-35025 sugeruje, że docker-compose.yml jest brany pod uwagę podczas uruchamiania zadania w kontenerze dokowania, przy użyciu maven build.

Zobacz także Creating CI pipeline with Jenkins, która zakłada, że ​​doker-compose jest zainstalowany na serwerze Jenkins.

Uwaga: a rok później (sierpień 2017), docker-compose is still not supported in the Docker Pipeline plugin

+0

tutaj są pliki do uruchomienia kontenera Jennkins, który działa wewnątrz dokowania: https://gist.github.com/aj07mm/9ec82203d45c990e9d8f909109fd8188 –

0

Jestem stoi podobny problem, znalazłem ten https://reinout.vanrees.org/weblog/2017/10/03/docker-compose-in-jenkins.html ale nie wiem, co jest związane.

Moim problemem jest test podczas rozwijania, a także zautomatyzowanie testu w Jenkins, a ja używam funkcji docker-compose do wywoływania skryptów php i serwera mysql, aby uruchamiać pojedyncze testy (od teraz phpunit).

mogłyby myślę, że można to osiągnąć przez

  1. tworzenia sieci w przyjmującym Döcker (z docker network create)
  2. utworzyć i uruchomić docker mysql dołączony do tej sieci (z docker run mysql --network=netname --name=mysqlmachine
  3. uruchamianie skryptów przez jenkins określające --network i odnoszące się do mysqlmachine jako hosta

Ale to oznaczałoby, że muszę skonfigurować dane db, cleanu p db danych, a także pozostawić zawsze na mysqlachine, nawet jeśli nie jest to potrzebne, zużywając trochę zasobów RAM. Mogę rozwiązać ostatni problem za pomocą polecenia docker start mysqlmachine i docker stop mysqlmachine w moim pliku Jenkinsfile definiującym potok.

Ale znowu, wykonanie powłoki do dokowanym gdzie Jenkins jest uruchomiony nie mogę znaleźć docker komenda

Dla mnie jest dobrym rozwiązaniem aż nie mogę znaleźć coś lepszego

UPDATE: będę próby rozwiązania https://wiki.jenkins.io/display/JENKINS/Docker+Slaves+Plugin, ma prawie co muszę

1

Oto pliki do uruchomienia pojemnik Jenkins, który działa wewnątrz docker:

dokowanie.yml

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

Interesujące. +1 – VonC