Агенты в Jenkins

Введение

Агенты создаются в следующем разделе

Dashboard → Manage Jenkins → Nodes and Clouds → New Node

SSH

Нужно установить плагин SSH Build Agents plugin

После этого добавится новый Launch method в настройках агента

Нужно добавить Credentials

Scope: Global (Jenkins, nodes, items all child items, etc) ID: mkdocsBuilderCredentials Description: access to mkdocs.andrei.com with private key Username: jenkins Private Key: Enter directly

После этого добавятся jenkins (access to mkdocs.andrei.com with ssh private key) credentials

При создании агента задаём настройки

Name: mkdocs_builder Number of executors: 1 Remote root directory: /home/jenkins Labels: mkdocs mkdocs_builder Launch method: Launch agents via SSH Host: mkdocs.andrei.com Credentials: jenkins (access to mkdocs.andrei.com with ssh private key) Host Key Verification Strategy: Known hosts file Verification Strategy

Изображение баннера
Просмотр переменных окружения BUILD_ID и BUIL_URL Jenkins изображение с сайта www.eth1.ru
Console Output
www.eth1.ru

Jenkins агент в Docker окружении

Если вы запускаете и Jenkins и агента в Docker контейнерах, например через docker compose нужно приготовить пару ключей, например, сгенерировав их с помощью ssh-keygen или Putty

# Jenkins Dockerfile RUN apt-get install -y ssh RUN mkdir -p /home/jenkins/.ssh RUN chown jenkins:jenkins -R /home/jenkins/.ssh RUN echo "jenkins:jenkins" | chpasswd COPY jenkins/.ssh/id_rsa /home/jenkins/.ssh/id_rsa COPY jenkins/.ssh/id_rsa.pub /home/jenkins/.ssh/id_rsa.pub COPY jenkins/.ssh/jenkins_rsa /home/jenkins/.ssh/jenkins_rsa COPY jenkins/.ssh/jenkins_rsa.pub /home/jenkins/.ssh/jenkins_rsa.pub COPY jenkins/.ssh/config /home/jenkins/.ssh/config RUN chown jenkins:jenkins -R /home/jenkins/.ssh/config COPY jenkins/.ssh/id_rsa /var/jenkins_home/.ssh/id_rsa COPY jenkins/.ssh/id_rsa.pub /var/jenkins_home/.ssh/id_rsa.pub COPY jenkins/.ssh/jenkins_rsa /var/jenkins_home/.ssh/jenkins_rsa COPY jenkins/.ssh/jenkins_rsa.pub /var/jenkins_home/.ssh/jenkins_rsa.pub COPY jenkins/.ssh/config /var/jenkins_home/.ssh/config RUN chmod 700 /var/jenkins_home/.ssh RUN chmod 600 /var/jenkins_home/.ssh* RUN chown jenkins:jenkins -R /var/jenkins_home/.ssh RUN chown jenkins:jenkins /var/jenkins_home/.ssh/config

Допустим, агент - это контейнер с RobotFramework

Взаимодействие Jenkins с агентом будем настраивать через SSH , следовательно на агенте нужно установить и запустить ssh.

Установку делаем командой RUN apt-get install -y ssh

Для запуска воспользуемя скриптом entrypoint.sh , который укажем в ENTRYPOINT

Обычно докерфайлы я храню в директории dockerfiles а entrypoint скрипты в поддиректориях к ней.

dockerfiles/ |-- Dockerfile.jenkins |-- Dockerfile.ubuntu.robot |-- jenkins |-- requirements.ubuntu.robot.txt `-- robot `-- entrypoint.sh

Если вы работаете в Windows то скрипт перед копированием в контейнер нужно перекодировать в Unix формат

dos2unix dockerfiles/robot/entrypoint.sh

# Agent's Dockerfile RUN apt-get install -y ssh RUN useradd -rm -d /home/jenkins -s /bin/bash jenkins COPY jenkins/.ssh/jenkins_rsa.pub /home/jenkins/.ssh/authorized_keys RUN chown -R jenkins:jenkins /home/jenkins/.ssh/authorized_keys COPY robot/entrypoint.sh /home/jenkins/entrypoint.sh USER root WORKDIR /home/jenkins RUN chmod +x entrypoint.sh ENTRYPOINT ["/home/jenkins/entrypoint.sh"]

#!/bin/bash # entrypoint.sh service ssh start tail -f /dev/null

Автор статьи: Андрей Олегович