2016-05-13 15 views
27

Tôi đang tìm cách chạy tiện ích hỗ trợ Docker bao gồm nhiều vùng chứa trong Jenkins 2.0.Trình cắm bộ đệm Jenkins có hỗ trợ Plug-in không?

Có bất kỳ gói nào cho hỗ trợ gốc của Soạn Docker trong Đường ống hoặc thông qua plugin trình cắm của CloudBees cho đường ống.

Hoặc có thể/điều này phải được giải quyết bằng các cuộc gọi rõ ràng sh docker-compose...? Thậm chí có thể sử dụng chúng bên trong try... finally để kiểm soát vòng đời dịch vụ.


EDIT: Câu trả lời đầu tiên là đề xuất cách tạo vùng chứa docker trong jenkins. Đây không phải là những gì cần thiết ở đây. Tôi (EngineerDollery) muốn đưa lên nền tảng mục tiêu của tôi trong jenkins bằng cách sử dụng soạn thảo để tôi có thể triển khai ứng dụng của mình cho nó và chạy thử nghiệm đầu cuối.

+0

tôi đã có thể sử dụng Docker soạn bằng cách chạy một kịch bản shell, tôi không chắc chắn nếu nó có thể được sử dụng trong một đường ống nhưng nếu bạn có thể chạy shell kịch bản trong một đường ống sau đó nó không phải là một vấn đề. –

+2

Thật không may là cuối cùng tôi cũng đã có một giải pháp bao gồm chạy 'docker compose' từ bước' sh', nhúng nó vào trong mệnh đề 'try ... finally' để kiểm soát vòng đời. ** Tại thời điểm này không có hỗ trợ cho 'docker-compose' từ hệ thống sinh thái trình cắm thêm Jenkins **. Tuy nhiên, tôi sẽ theo dõi chặt chẽ [Trình cắm đường dẫn của CloudBees Docker] chính thức (https://wiki.jenkins-ci.org/display/JENKINS/CloudBees+Docker+Pipeline+Plugin) và thay vì thử nghiệm [Docker Slaves Plugin] (https://wiki.jenkins-ci.org/display/JENKINS/Docker+Slaves+Plugin). – luka5z

Trả lời

9

Sau khi tìm kiếm trong Jenkins bug tracking, JENKINS-35025 gợi ý docker-compose.yml được tính đến khi chạy công việc trong vùng chứa đế, sử dụng maven build.

Xem thêm Creating CI pipeline with Jenkins, trong đó giả định docker-compose được cài đặt trên máy chủ Jenkins của bạn.

Lưu ý: một năm sau đó (tháng Tám 2017), docker-compose is still not supported in the Docker Pipeline plugin

+0

đây là các tệp để chạy thùng chứa jenkins chạy docker bên trong: https://gist.github.com/aj07mm/9ec82203d45c990e9d8f909109fd8188 –

0

Tôi đang phải đối mặt với một vấn đề tương tự, tôi thấy điều này https://reinout.vanrees.org/weblog/2017/10/03/docker-compose-in-jenkins.html nhưng tôi không biết những gì có liên quan đến.

Vấn đề của tôi là kiểm tra khi đang phát triển và cũng tự động kiểm tra trong Jenkins, và tôi đang sử dụng docker-compose để hiển thị một số tập lệnh php và máy chủ mysql để chạy các kiểm tra riêng biệt (phpunit lúc này).

tôi có thể nghĩ mình có thể đạt được điều này bằng cách

  1. tạo ra một mạng trong máy chủ Docker (với docker network create)
  2. tạo và chạy một Docker mysql gắn liền với mạng đó (với docker run mysql --network=netname --name=mysqlmachine
  3. script chạy bằng jenkins chỉ định --network và tham chiếu đến mysqlmachine làm máy chủ.

Nhưng điều này có nghĩa là tôi cần thiết lập dữ liệu db, cleanu Dữ liệu p db, và cũng để lại trên mysqlmachine ngay cả khi không cần thiết, tiêu thụ một số tài nguyên ram. Tôi có thể giải quyết vấn đề cuối cùng với lệnh docker start mysqlmachinedocker stop mysqlmachine trong Jenkinsfile của tôi xác định đường dẫn.

Nhưng, một lần nữa, thực hiện một vỏ vào Docker nơi Jenkins đang chạy tôi có thể không tìm thấy docker lệnh

Đối với tôi là một giải pháp khả thi cho đến khi tôi không thể tìm thấy một cái gì đó tốt hơn

UPDATE: tôi sẽ thử các giải pháp https://wiki.jenkins.io/display/JENKINS/Docker+Slaves+Plugin, nó đã gần như những gì tôi cần

1

Dưới đây là các tập tin để chạy một container Jenkins chạy Docker bên:

docker-compose.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

Thú vị. +1 – VonC

Các vấn đề liên quan