Автор оригинала: Vyacheslav.
Фон
В настоящее время непрерывная интеграция является важной частью жизненного цикла гибкой разработки программного обеспечения. На рынке существует ряд инструментов: Atlassian Bamboo, Jenkins, Jetbrains TeamCity.
На мой взгляд, Дженкинс имеет наиболее оптимальное сообщество продуктов и набор действительно полезных плагинов, которые подходят для большинства ваших программных проектов: вы можете создавать программное обеспечение, развертывать программное обеспечение, веб-сайты, порталы в различных местах (например, в том числе AWS, DigitalOcean, серверы с голым металлом) или запускать модульные тесты. Он может быть интегрирован с выбранными вами средствами коммуникации, такими как Slack, HipChat или электронная почта.
Если у вас не было возможности попробовать Дженкинса ранее, не стесняйтесь использовать учебник ниже, чтобы начать работу.
Ручная установка
Для того чтобы установить Дженкинса, нам понадобится:
- Система Unix. Я бы рекомендовал машину на базе Debian, такую как Ubuntu server LTS
- Установлена среда выполнения Java. Обычно я использую Java 8
- Получите базовую настройку Дженкинса
- Устанавливать необходимые плагины
- Поместите все за свой веб-сервер.
Установите Java
Самый простой способ установить Java-через apt-get менеджер пакетов:
sudo apt-get install python-software-properties sudo add-apt-repository ppa:webupd8team/java sudo apt-get update
После того, как вы добавили ppa выше, вы можете установить java с помощью следующей команды:
sudo apt-get install oracle-java8-installer
Получите базовую настройку Дженкинса
Вам нужно будет выполнить ряд следующих команд, а именно: добавить ключ подписи Дженкинса, зарегистрировать источники Jenkins apt, обновить списки пакетов и установить пакет Дженкинса.
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add - sudo echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list sudo apt-get update sudo apt-get install jenkins
По умолчанию он установит базовую установку Дженкинса, которая небезопасна. Вам нужно будет перейти на хост, на котором установлен ваш Jenkins, например: http://jenkins-host:8080/ .
Перейдите к разделу Управление Дженкинсом (слева) и выберите пункт “Настроить глобальную безопасность” на загруженной странице.
Теперь посмотрите ниже на безопасность на основе матрицы (выберите ее, если она не была выбрана ранее) и убедитесь, что у анонима есть только “Чтение” прямо под группой просмотра.
Нажмите Сохранить в нижней части страницы. После перезагрузки страницы вы увидите форму входа, но просто проигнорируйте ее и перейдите на главную страницу (например, http://jenkins-host:8080/). Вы увидите эту форму регистрации, и первой зарегистрированной учетной записью будет администратор.
Сила плагинов
Дженкинс не был бы таким мощным без плагинов. Обычно я устанавливаю эти плагины по умолчанию:
Битбакет: Плагин BitBucket предназначен для обеспечения интеграции между BitBucket и Jenkins. BitBucket предлагает крючок Дженкинса, но этот просто запускает сборку для определенного задания при фиксации, не более того. Плагин BitBucket, как и плагин GitHub, использует полезную нагрузку POST hook, чтобы проверить, какое задание должно быть запущено на основе измененного репозитория/ветки. URL-АДРЕС плагина: URL-АДРЕС плагина:bitbucket-pullrequest-конструктор : Этот плагин создает запросы на извлечение из Bitbucket.org. Это обязательный плагин, если вы выполняете развертывание контроля качества для каждого отправленного запроса на извлечение. URL-АДРЕС плагина:https://wiki.jenkins-ci.org/display/JENKINS/Bitbucket+pullrequest+конструктор+плагинсборка-конвейер-плагин : Этот плагин предоставляет представление конвейера сборки для заданий, подключенных вверх и вниз по течению, которые обычно образуют конвейер сборки. Кроме того, он предоставляет возможность определять ручные триггеры для заданий, требующих вмешательства до их выполнения, например, процесс утверждения за пределами Jenkins. Обеспечивает хорошую визуализацию путей и потоков. URL плагина:URL плагина: копировать артефакт :Добавляет шаг сборки для копирования артефактов из другого проекта. Плагин позволяет указать, из какой сборки копировать артефакты (например, из последней успешной/стабильной сборки, по номеру сборки или по параметру сборки). Вы также можете управлять процессом копирования, фильтруя копируемые файлы, указывая каталог назначения в целевом проекте и т.д.URL-АДРЕС плагина: https://wiki.jenkins-ci.org/display/JENKINS/Copy+Артефакт+Плагин учетные данные :Добавляет шаг сборки для копирования артефактов из другого проекта. Плагин позволяет указать, из какой сборки копировать артефакты (например, из последней успешной/стабильной сборки, по номеру сборки или по параметру сборки). Вы также можете управлять процессом копирования, фильтруя копируемые файлы, указывая каталог назначения в целевом проекте и т.д.URL-АДРЕС плагина: URL-АДРЕС плагина: поставка-трубопровод-плагин:Визуализация доставки/Построение трубопроводов, визуализация трубопроводов на основе заданий вверх/вниз по течению. При использовании Jenkins в качестве сервера сборки теперь с помощью плагина Конвейера доставки можно визуализировать один или несколько конвейеров доставки в одном и том же представлении даже в полноэкранном режиме. URL-АДРЕС плагина: https://wiki.jenkins-ci.org/display/JENKINS/Delivery+Конвейер+Плагин environment-script : Плагин сценария средыпозволяет запускать скрипт после проверки SCM перед сборкой. Если сценарий завершается неудачно (код выхода не равен нулю), сборка помечается как неудачная.Любой вывод по стандарту out анализируется как переменные среды, которые применяются к сборке. Он поддерживает “переопределяющий синтаксис” для добавления путей к переменным, подобным путям. URL-АДРЕС плагина:https://wiki.jenkins-ci.org/display/JENKINS/Environment+Скрипт+Плагинgit : Поддерживает популярную систему контроля версий git ghprb:Этот плагин создает запросы на вытягивание в GitHub. Это еще один обязательный плагин, если ваш жизненный цикл разработки программного обеспечения включает развертывание запросов на извлечение в среду PR для тестирования. URL плагина:URL плагина:зеленые шары : Самый забавный плагин – меняет Дженкинса на использование зеленых шариков вместо синих для успешных сборок. URL-АДРЕС плагина:https://wiki.jenkins-ci.org/display/JENKINS/Green+Шарыхипчат : Этот плагин позволяет вашей команде настраивать уведомления о сборке для отправки в комнаты HipChat. Чтобы включить уведомления, добавьте “Уведомления HipChat” в качестве шага после сборки. URL-АДРЕС плагина:https://wiki.jenkins-ci.org/display/JENKINS/HipChat+Плагинjunit : Позволяет публиковать результаты тестов в формате JUnit. Примечание: ряд инструментов, включая Karma, PHPUnit и другие инструменты, позволяют публиковать результаты тестов в формате JUnit. Таким образом, это обязательный плагин для потоков модульного тестирования. URL плагина:URL плагина: матрица-авт : Предлагает стратегии авторизации безопасности на основе матрицы (глобальные и для каждого проекта). Это очень удобно, если у вас есть общий сервер сборки для нескольких команд.URL-АДРЕС плагина:https://wiki.jenkins-ci.org/display/JENKINS/Matrix+Авторизация+Стратегия+Плагин параметризованный-триггер : Этот плагин позволяет запускать новые сборки после завершения сборки, используя различные способы указания параметров для новой сборки.Вы можете добавить несколько конфигураций: у каждой есть список проектов для запуска, условие для их запуска (на основе результата текущей сборки) и раздел параметров.URL-АДРЕС плагина: URL-АДРЕС плагина:перестроить: Это хорошо сочетается с плагином параметризованного триггера. Плагин позволяет пользователю перестроить параметризованную сборку без повторного ввода параметров. URL-АДРЕС плагина:https://wiki.jenkins-ci.org/display/JENKINS/Rebuild+Плагинssh : Вы можете использовать плагин SSH для запуска команд оболочки на удаленной машине через ssh. URL-АДРЕС плагина: https://wiki.jenkins-ci.org/display/JENKINS/SSH+плагин s3
Плагины устанавливаются с помощью менеджера плагинов в разделе “Управление Дженкинсом”.
Размещение Дженкинса за веб – сервером
Обычно я прячу Дженкинса за nginx. Типичная конфигурация выглядит так, как показано ниже:
server {
listen 443 ssl;
server_name jenkins.vagrant.dev;
ssl_certificate /etc/nginx/jenkins_selfsigned.crt;
ssl_certificate_key /etc/nginx/jenkins_selfsigned.key;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_connect_timeout 150;
proxy_send_timeout 100;
proxy_read_timeout 100;
}
...
}
Автоматизированная установка
Устанавливаю ли я Дженкинса вручную каждый раз? Конечно, нет, я часто делаю это для своих клиентов. С помощью роли ansible и sa-box-Дженкинса новая установка Jenkins может быть развернута, пока вы пьете кофе.
Давайте подготовим базовый проект начальной загрузки, который вы сможете использовать в будущем. Он включает в себя следующие файлы:
- bootstrap.sh – устанавливает ansible вместе с зависимостями.
- bootstrap.sh – устанавливает ansible вместе с зависимостями.
- – инициализирует сторонние зависимости ..модули proj
- полностью совместимы с синтаксисом.gitmodules git, определяет список зависимостей , которые будут использоваться в сборнике. В частности, он включает в себя ansible – по умолчанию developer_recipes (репозиторий с набором удобных рецептов развертывания) и роль ansible, называемую sa-box-bootstrap
[submodule "public/ansible_developer_recipes"]
path = public/ansible_developer_recipes
url = git@github.com:Voronenko/ansible-developer_recipes.git
[submodule "roles/sa-box-bootstrap"]
path = roles/sa-box-bootstrap
url = git@github.com:softasap/sa-box-bootstrap.git
[submodule "roles/sa-box-jenkins"]
path = roles/sa-box-jenkins
url = git@github.com:softasap/sa-box-jenkins.git
- хосты – перечислите здесь исходные учетные данные, которые были предоставлены вам для сервера. Примечание: jenkins-bootstrap предполагает, что у вас есть свежая коробка только с корневым доступом. Если ваш ящик уже защищен, соответствующим образом измените учетные данные
[jenkins-bootstrap] jenkins_bootstrap ansible_ssh_host=192.168.0.17 ansible_ssh_user=yourrootuser ansible_ssh_pass=yourpassword [jenkins] jenkins ansible_ssh_host=192.168.0.17 ansible_ssh_user=jenkins
- jenkins_vars.yml – установите здесь переопределения конкретной среды, такие как предпочтительное имя пользователя и ключи для развертывания.
- jenkins_bootstrap.yml – Первый шаг – защита коробки. Создает пользователя jenkins и защищает ящик с помощью роли sa-box-bootstrap. Смотрите более подробную информацию о роли sa-box-начальной загрузки Для того, чтобы переопределить параметры для sa-box-bootstrap – передайте параметры, как в примере ниже:
- hosts: all
vars_files:
- ./jenkins_vars.yml
roles:
- {
role: "sa-box-bootstrap",
root_dir: "{{playbook_dir}}/public/ansible_developer_recipes",
deploy_user: "{{jenkins_user}}",
deploy_user_keys: "{{jenkins_authorized_keys}}"
}
- jenkins.yml сценарий подготовки, который настраивает jenkins с набором плагинов и пользователей.
- jenkins_vars.yml параметры конфигурации для развертывания jenkins.
- setup_jenkins.sh сценарий оболочки, который вызывает развертывание в два этапа: начальная загрузка коробки и дженкинс установка
#!/bin/sh ansible-playbook jenkins_bootstrap.yml --limit jenkins_bootstrap ansible-playbook jenkins.yml --limit jenkins
Параметры конфигурации для автоматической установки
Вам нужно переопределить:
jenkins_authorized_keys(это список ключей, которые позволяют вам войти в ящик Дженкинса под Jenkins)jenkins_domain– домен вашего агентстваjenkins_host– имя хоста Jenkins (Сайт будет привязан к jenkins_host.jenkins_domain)java_version– ваш выбор Java (поддерживается 6,7,8)
jenkins_user: jenkins
jenkins_authorized_keys:
- "{{playbook_dir}}/components/files/ssh/vyacheslav.pub"
jenkins_domain: "vagrant.dev"
jenkins_host: "jenkins"
java_version: 8
– jenkins_users список пользователей с паролями для создания. Администратор и развертывание являются обязательными пользователями. Администратор используется для управления экземпляром, развертывание используется для доступа к артефактам с помощью сценариев развертывания. Если вы не будете переопределять пароли, будет использоваться пароль по умолчанию (для каждой роли), что не является лучшим вариантом для общедоступных развертываний.
jenkins_users:
- {
name: "Admin",
password: "AAAdmin",
email: "no-reply@localhost"
}
- {
name: "deploy",
password: "DeDeDeDeploy",
email: "no-reply@localhost"
}
jenkins_pluginsВаш выбор плагинов для установки. По умолчанию:
jenkins_plugins: - bitbucket # https://wiki.jenkins-ci.org/display/JENKINS/BitBucket+Plugin - bitbucket-pullrequest-builder - build-pipeline-plugin - copyartifact # https://wiki.jenkins-ci.org/display/JENKINS/Copy+Artifact+Plugin - credentials # https://wiki.jenkins-ci.org/display/JENKINS/Credentials+Plugin - delivery-pipeline-plugin # https://wiki.jenkins-ci.org/display/JENKINS/Delivery+Pipeline+Plugin - environment-script # https://wiki.jenkins-ci.org/display/JENKINS/Environment+Script+Plugin - git - ghprb # https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin - greenballs # https://wiki.jenkins-ci.org/display/JENKINS/Green+Balls - hipchat # https://wiki.jenkins-ci.org/display/JENKINS/HipChat+Plugin - junit # https://wiki.jenkins-ci.org/display/JENKINS/JUnit+Plugin - matrix-auth # https://wiki.jenkins-ci.org/display/JENKINS/Matrix+Authorization+Strategy+Plugin - matrix-project #https://wiki.jenkins-ci.org/display/JENKINS/Matrix+Project+Plugin - parameterized-trigger #https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin - rebuild # https://wiki.jenkins-ci.org/display/JENKINS/Rebuild+Plugin - ssh - s3 # https://wiki.jenkins-ci.org/display/JENKINS/S3+Plugin - throttle-concurrents #https://wiki.jenkins-ci.org/display/JENKINS/Throttle+Concurrent+Builds+Plugin
Кодекс в действии
Вы можете скачать этот код шаблона из этого репозитория . Для того, чтобы использовать его – для комплекта, отрегулируйте параметры в соответствии с вашими потребностями и используйте.
Бегать так же просто, как
./setup_jenkins.sh
Добро пожаловать в мир непрерывной интеграции и развертывания!
Оригинал: “https://www.codementor.io/@slavko/setup-configure-jenkins-recommended-plugins-du107z6nr”