ШПАРГАЛКИ
CI/CD
KUBERNETES
  • DOCKERFILE
  • DOCKER-COMPOSE
  • JENKINSFILE
  • JENKINS-PIPELINE
  • GITLAB CI/CD
  • GROOVIE
  • INSTALL
  • PODS
  • INGRESS

Docker Plugin (Jenkins) - немного о настройке

Docker Plugin - плагин позволяет подготавливать контейнеры Docker с помощью Jenkins.

Главная цель - иметь возможность использовать хост Docker для динамической подготовки контейнеров Docker в качестве узла агента Jenkins и позволить ему запустить одну сборку, а затем удалить этот узел без процесса сборки.

Для того, что бы работала связка этого плагина и докера, сначала нужно внести изменения в сами настройки докера в systemd.

В Ubuntu 20.04 останавливаем демон докера и идем в /etc/systemd/system/multi-user.target.wants/docker.service

#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H fd:// --containerd=/run/containerd/containerd.sock

После чего релоадми информацию о демонах и запускаем Докер обратно и проверяем. Ошибок быть не должно.

systemctl daemon-reload && systemctl start docker && systemctl status docker

Далее идем в Jenkins (плагин у нас уже установлен, так что не буду рассказывать, как его ставить.)

Заходим в:
Настроить Jenkins - Конфигурация системы - Configure Clouds - Add New Cloud - Docker - Docker Cloud Details

И вводим настройки со скриншота. Проверяем коннект. И все.

Чуть позже напишу сюда, что делать дальше. Это пока временная заметка.

А пока, вот ссылка на статью, как связать Jenkins и Docker

PS:Если при сборке появляется ошибка: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock то в консоли вводим:

sudo chmod 666 /var/run/docker.sock

Ну а собирать контейнер  будем примерно так:

# ------------------------------ Переменные для изменения ------------------------------ #
PROJECT=harbor_project
VER="v1.0"
# ------------------------------ Переменные для изменения ------------------------------ #

# ------------------------------ Постоянные переменные ------------------------------ #
HOST=harbor_ip_or_domain
PORT=harbor_port
USERNAME=harbor_user
PASSWORD=harbor_password
IMAGE=${JOB_NAME}
TAG="${VER}.${BUILD_NUMBER}"
# ------------------------------ Постоянные переменные ------------------------------ #

# Билдим проект с тэгами версии сборки и latest
docker build -t $IMAGE:$TAG -t $IMAGE:latest .

# Логинимся на Харбор
echo "$PASSWORD" | docker login -u $USERNAME --password-stdin $HOST:$PORT

# Пушим версии с тегами номера сборки и latest
docker tag $IMAGE:$TAG $HOST:$PORT/$PROJECT/$IMAGE:$TAG
docker push $HOST:$PORT/$PROJECT/$IMAGE:$TAG
docker tag $IMAGE:latest $HOST:$PORT/$PROJECT/$IMAGE:latest
docker push $HOST:$PORT/$PROJECT/$IMAGE:latest

# Чистим за собой репы на Jenkins Нечего их захламлять
docker rmi -f $IMAGE:$TAG
docker rmi -f $IMAGE:latest
docker rmi -f $HOST:$PORT/$PROJECT/$IMAGE:$TAG
docker rmi -f $HOST:$PORT/$PROJECT/$IMAGE:latest
docker rmi $(docker images -f “dangling=true” -q)

# Выходим с Харбора
docker logout

# Тут должен быть скрипт, который запускает latest версию на продакшн или тест
# Потом допишу

Оцените статью

Еще никто не оставил комментарий. Будьте первым!