- LINUX
- GIT
- DOCKER
- DOCKERFILE
- DOCKER-COMPOSE
- DOCKERSWARM
- KUBERNETES
- ANSIBLE
- BASH
- 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 версию на продакшн или тест
# Потом допишу