docs | ||
.gitattributes | ||
.gitignore | ||
AGENT.README.md | ||
dockerd-sshd-entrypoint.sh | ||
Dockerfile | ||
jdk-download-url.sh | ||
jdk-download.sh | ||
Jenkinsfile | ||
LICENSE | ||
README.md | ||
setup-sshd | ||
setup-sshd.ps1 |
Склейка DinD и Jenkins SSH Agent.
- Берем Jenkins SSH Agent, а именно Alpine Dockerfile
- Изменяем базовый образ на
docker:dind
(по-умолчанию он на базе alpine) - Добавляем в
Dockerfile
под создание пользователяjenkins
строки:
RUN addgroup docker || true && \
addgroup ${user} docker
- В
setup-sshd
вписываем строки:
# dockerd's patch
dockerd-entrypoint.sh &
- Собираем, тэгаем и пушим
Как использовать:
Запуск агента
Генерируем новую пару SSH ключей.
ssh-keygen -t rsa -b 4096 -f .ssh/jenkins-ssh-agent -C "jenkins-ssh-agent"
Желательно установить SysBox, без него придется делать контейнер с агентом привилегированным.
Берем docker-compose.yml
файл:
version: '3.7'
services:
jenkins-agent:
image: git.tswf.io/docker-base-images/jenkins-ssh-agent-jdk17-dind:1.0.7
restart: always
# Используем, если не хотим делать контейнер привилегированным
runtime: sysbox-runc
# Если не используем SysBox, а зря :c
#privileged: true
ports:
- "31674:22"
environment:
JENKINS_AGENT_SSH_PUBKEY: "<YOR_SSH_PUBLIC_KEY_HERE>"
и заменяем <YOR_SSH_PUBLIC_KEY_HERE>
на сгенеренный публичный ключ
Запускаем агента:
docker compose up -d
Настройки Jenkins
Смотри описание агента
Использование от ROOT
Образ пропатчен для возможности запуска агента от имени ROOT. Решает сложности с запуском одноразовых docker-агентов на нашей ноде.
Просто в credentials при указании логина пишем root
. Публичный ключ прописывается и на jenkins
, и на него.