Инструменты пользователя

Инструменты сайта


service:jenkins

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
service:jenkins [01.08.2022 13:41] – [Docker] viacheslavservice:jenkins [30.07.2024 19:21] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Jenkins ======
 +Документация: https://www.jenkins.io/doc/\\
 +Jenkins с открытыми пайплайнами: https://ci.xwiki.org/
 +
 +Статьи:\\
 +[[https://habr.com/ru/company/yoomoney/blog/538664/|Jenkins Pipeline. Что это и как использовать в тестировании]]\\
 +[[https://infostart.ru/1c/articles/1198035/|Многопоточный CI-контур для 1С c Packer, Vagrant и Jenkins]]
 +
 +Видео:\\
 +[[https://www.youtube.com/watch?v=QaDNk1a8xFU&list=PLEiEAq2VkUUKGrfcoNYRgqam5YBERN8xa&index=4|Jenkins Tutorial For Beginners]]\\
 +[[https://www.youtube.com/playlist?list=PLmxB7JSpraiew9igtD89o33AaniUrmUzm|Kirill Semaev - Jenkins playlist]]\\
 +[[https://www.youtube.com/playlist?list=PLy7NrYWoggjw_LIiDK1LXdNN82uYuuuiC|Technoworld with Nana - Jenkins Tutorial for Beginners]]\\
 +[[https://www.youtube.com/watch?v=w3kapbN5r7g&list=PLvBBnHmZuNQJeznYL2F-MpZYBUeLIXYEe|CloudBeesTV - Jenkins tutorials]] ([[https://www.youtube.com/c/CloudBeesTV/search?query=docker|Jenkins + Docker]])
 +
 +===== Docker =====
 +Тонкость в том, что если Jenkins работает в контейнере, то желательно запускать сборки на хостовом Докере, а не городить вложенные контейнеры. Что для этого нужно:
 +
 +  - Примонтировать ''/var/run/docker.sock'' внутрь контейнера Jenkins.
 +  - Установить docker-cli в контейнере Jenkins.
 +  - Создать группу ''docker'' в контейнере Jenkins и включить туда пользователя ''jenkins''.
 +  - GID группы ''docker'' в контейнере Jenkins должен совпадать с GID группы ''docker'' хоста.
 +<code bash>
 +# На хосте нужно задать системную переменную
 +export DOCKERGID=$(grep ^docker /etc/group |cut -d: -f 3)
 +# Она нужна, чтобы её значение использовать параметре ARG в Dockerfile
 +</code>
 +https://stackoverflow.com/questions/47390515/docker-compose-args-from-shell
 +
 +<WRAP group>
 +<WRAP half column>
 +<code yaml>
 +# 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
 +</code>
 +https://gist.github.com/adelmofilho/5e4b2a57b402e218300332dd0a88a881
 +</WRAP>
 +<WRAP half column>
 +<file yaml Dockerfile>
 +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
 +</file>
 +https://stackoverflow.com/questions/63095927/give-permission-to-jenkins-to-access-unix-var-run-docker-sock
 +
 +</WRAP>
 +</WRAP>
 +
 +Для варианта с Alpine:
 +<file yaml Dockerfile>
 +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
 +</file>
 +
 +[[https://www.jenkins.io/doc/book/pipeline/docker/#using-a-remote-docker-server|Using a remote Docker server]]\\
 +[[https://itnext.io/docker-inside-docker-for-jenkins-d906b7b5f527|Docker inside Docker for Jenkins]]\\
 +[[https://www.google.com/search?q=jenkins+%2Fvar%2Frun%2Fdocker.sock|Google: jenkins /var/run/docker.sock]]\\
 +
 +<code bash>
 +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
 +</code>
 +https://gist.github.com/darinpope/39e4718919d22bc22f470ad3e94f8df1
 +
 +===== Проекты =====
 +Freestyle - для простых одиночных задач, например, тестирования. Несколько таких проектов можно объединить, чтобы они шли один за другим.\\
 +Pipeline - полный цикл сборки, может иметь несколько этапов (stages). Применяется к одной ветке.\\
 +Multibranch pipeline - пайплайн для сразу нескольких веток репозитория.
 +
 +==== Credentials ====
 +Scope:
 +  * Global - доступны везде
 +  * System - только для сервера Jenkins (не применяются к проектам)
 +  * Внутри Multibranch pipeline тоже есть пункт с настройкой учётных данных, ограниченные действием внутри конкретного проекта. Связаны с плагином Folders, который распределяет сборки по папкам.
 +
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki