Go to file
amorozov d3b12408a6
All checks were successful
GIT.TSWF.IO/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head This commit looks good
Gitea/docker-base-images/jenkins-ssh-agent-jdk17-dind/pipeline/head This commit looks good
updated README.md
2025-03-03 04:34:55 +03:00
docs initial commit 2025-03-03 00:42:00 +03:00
.gitattributes initial commit 2025-03-03 00:42:00 +03:00
.gitignore initial commit 2025-03-03 00:42:00 +03:00
AGENT.README.md initial commit 2025-03-03 00:42:00 +03:00
dockerd-sshd-entrypoint.sh initial commit 2025-03-03 00:42:00 +03:00
Dockerfile updated Dockerfile 2025-03-03 04:19:27 +03:00
jdk-download-url.sh initial commit 2025-03-03 00:42:00 +03:00
jdk-download.sh initial commit 2025-03-03 00:42:00 +03:00
Jenkinsfile chore: debug Jenkinsfile 2025-03-03 03:10:34 +03:00
LICENSE initial commit 2025-03-03 00:42:00 +03:00
README.md updated README.md 2025-03-03 04:34:55 +03:00
setup-sshd updated entrypoint 2025-03-03 04:12:40 +03:00
setup-sshd.ps1 initial commit 2025-03-03 00:42:00 +03:00

Склейка 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, и на него.