Документация: https://www.jenkins.io/doc/
Jenkins с открытыми пайплайнами: https://ci.xwiki.org/
Статьи:
Jenkins Pipeline. Что это и как использовать в тестировании
Многопоточный CI-контур для 1С c Packer, Vagrant и Jenkins
Видео:
Jenkins Tutorial For Beginners
Kirill Semaev - Jenkins playlist
Technoworld with Nana - Jenkins Tutorial for Beginners
CloudBeesTV - Jenkins tutorials (Jenkins + Docker)
Тонкость в том, что если Jenkins работает в контейнере, то желательно запускать сборки на хостовом Докере, а не городить вложенные контейнеры. Что для этого нужно:
/var/run/docker.sock
внутрь контейнера Jenkins.docker
в контейнере Jenkins и включить туда пользователя jenkins
.docker
в контейнере Jenkins должен совпадать с GID группы docker
хоста.# На хосте нужно задать системную переменную export DOCKERGID=$(grep ^docker /etc/group |cut -d: -f 3) # Она нужна, чтобы её значение использовать параметре ARG в Dockerfile
https://stackoverflow.com/questions/47390515/docker-compose-args-from-shell
# This docker-compose file intent to run a Jenkins container connected to the host machine Docker daemon. # # A discussion about potential security issues and improvements on this approach can be found at: # https://forums.docker.com/t/using-docker-in-a-dockerized-jenkins-container/322/11 # # Source: http://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/ version: '3.1' volumes: jenkins-data: services: jenkins: image: jenkinsci/blueocean restart: always ports: - 8080:8080 - 50000:50000 tty: true volumes: - jenkins-data:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock
https://gist.github.com/adelmofilho/5e4b2a57b402e218300332dd0a88a881
FROM jenkins/jenkins USER 0 ARG DOCKERGID=998 # Docker RUN apt-get update \ && apt-get install software-properties-common apt-transport-https ca-certificates gnupg-agent dialog apt-utils -y \ && curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - \ && add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/debian \ $(lsb_release -cs) \ stable" \ && apt-get update \ && apt-get install docker-ce-cli -y # Setup users and groups RUN addgroup --gid ${DOCKERGID} docker RUN usermod -aG docker jenkins USER 1000
Для варианта с Alpine:
FROM jenkins/jenkins:alpine USER 0 ARG DOCKERGID=998 # Docker RUN apk -U update && apk add docker-cli # Setup users and groups RUN addgroup -g ${DOCKERGID} docker RUN addgroup jenkins docker USER 1000
Using a remote Docker server
Docker inside Docker for Jenkins
Google: jenkins /var/run/docker.sock
docker run --rm --name jenkins -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.303.1-jdk8 docker run --rm --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:2.303.1-jdk8 docker run --rm --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:2.303.2-jdk8 docker run --rm --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:2.303.2-jdk11
https://gist.github.com/darinpope/39e4718919d22bc22f470ad3e94f8df1
Freestyle - для простых одиночных задач, например, тестирования. Несколько таких проектов можно объединить, чтобы они шли один за другим.
Pipeline - полный цикл сборки, может иметь несколько этапов (stages). Применяется к одной ветке.
Multibranch pipeline - пайплайн для сразу нескольких веток репозитория.
Scope: