Вы знали, что у Jenkins есть встроенная поддержка непрерывной интеграции / непрерывной доставки CI / CD? Внедрение Jenkins CI CD пайплайна с вашим проектом может значительно улучшить процесс разработки программного обеспечения.
Jenkins – один из самых популярных инструментов автоматизации DevOps на сегодняшний день. И если вы хотите начать работу с Jenkins CI CD пайплайном, вы обратились по адресу.
Читайте дальше, и в этом руководстве вы узнаете, как настроить Jenkins CI CD пайплайн с GitHub.
Предварительные требования
Это руководство предполагает, что у вас есть следующие требования для выполнения примеров.
У вас уже должна быть установлена Jenkins. В примерах в этом руководстве будет использоваться Jenkins v2.319.1 на компьютере с Windows 10 20H2.
- Веб-консоль Jenkins должна быть доступна через Интернет.
- A Github account to which you’ll connect with the Jenkins CI CD pipeline.
- Git SCM. В этом руководстве используется последняя (2.34.1) 64-разрядная версия Git для Windows.
Подготовка репозитория GitHub
В этом руководстве рассматривается интеграция конвейера CI/CD Jenkins с репозиторием GitHub. Вместо создания пустого проекта быстрее начать с форка существующего репозитория.
1. Во-первых, откройте браузер и войдите в свою учетную запись GitHub.
2. Затем перейдите по URL примера репозитория (приложение MyShuttle2 от Microsoft Connect 2016). Когда вы окажетесь на странице репозитория, нажмите кнопку Fork в верхнем правом углу страницы.

Дождитесь завершения процесса форкинга. В результате у вас будет репозиторий с именем «имя_пользователя/MyShuttle2» в вашей учетной записи GitHub, к которому у вас будет полный доступ.
3. Теперь добавьте новый файл в репозиторий с именем Jenkinsfile. Jenkinsfile – это текстовый файл, который содержит определение конвейера Jenkins. Этот файл должен находиться внутри репозитория с исходным кодом.
На странице вашего репозитория нажмите Add file —> Create new file.

4. Введите Jenkinsfile в качестве имени нового файла. Затем скопируйте нижеследующий код и вставьте его в ваш Jenkinsfile.
- Термин pipeline представляет собой набор инструкций, написанных в коде для непрерывной поставки.
- A stage block contains a series of steps in a pipeline, visualizing the Jenkins pipeline process.
- A step is a single task that executes a specific process at a defined time. A pipeline contains a series of steps.
Этот Jenkinsfile – всего лишь базовый пример скрипта конвейера. В производстве скрипты конвейера будут более сложными и включать в себя несколько действий на одном или всех этапах.
После написания кода ваш файл будет выглядеть так, как на скриншоте ниже.

5. Прокрутите вниз страницы и нажмите Commit new file.

Теперь у вас есть Jenkinsfile в вашем репозитории.

6. Наконец, скопируйте URL репозитория. Для этого нажмите Code и кликните по кнопке Copy. Вам понадобится полученный URL при создании конвейера Jenkins CI CD.

Создание конвейера Jenkins CI CD
Разработка функции включает в себя много изменений кода. Между каждым изменением кода существует набор задач для выполнения. Эти задачи могут включать в себя фиксацию изменений, компиляцию, тестирование и упаковку.
Сервисы автоматизации, такие как Jenkins, помогают сделать эти шаги быстрыми и безошибочными.
1. Откройте браузер, перейдите по вашему URL Jenkins и войдите в систему.
2. На панели управления Jenkins Dashboard, нажмите New Item в левом меню.

3. Введите имя нового конвейера. Для этого руководства вы назовете его demoPipeline и выберите шаблон Pipeline. Нажмите OK для завершения.

4. Поставьте галочку в поле проекта GitHub под вкладкой General на странице настройки. Затем вставьте URL репозитория, который вы скопировали ранее, в поле Project URL.

5. Прокрутите вниз до раздела Build Triggers и поставьте галочку в поле GitHub hook trigger for GITScm polling, как показано на скриншоте ниже.

6. Затем прокрутите дальше вниз до раздела Pipeline и выберите/указывайте следующие значения:
- Definition: Pipeline script from SCM
- SCM: Git
- Repository URL: URL вашего репозитория

7. Прокрутите страницу до самого низа и убедитесь, что значение Script Path равно Jenkinsfile. Это значение ссылается на Jenkinsfile, который вы создали ранее при подготовке вашего репозитория GitHub. Наконец, нажмите Save.

Настройка вебхука в GitHub
Чтобы Jenkins запускал новую задачу, вы должны сначала создать вебхук в репозитории GitHub. Этот вебхук будет уведомлять Jenkins, как только произойдет новый пуш в репозиторий.
Следуйте указанным ниже шагам, чтобы создать вебхук.
1. Перейдите на страницу Settings и нажмите вкладку Webhooks в вашем репозитории GitHub. На странице Webhooks нажмите Add webhook.

2. Укажите ваш URL-адрес Jenkins и добавьте /github-webhook/в поле URL адреса запроса. Например, HTTP://jenkinsURLhere/github-webhook/.
Также измените значение Тип содержимого на application/json.

3. На Какие события должны вызывать этот веб-хук выберите Разрешить мне выбрать отдельные события.

4. Прокрутите вниз и установите флажки Отправки и Запросы на вытягивание. Эти параметры гарантируют, что GitHub будет отправлять данные в Jenkins во время этих конкретных событий.

5. Проверьте веб-хук, нажав на кнопку Добавить веб-хук внизу. Если проверка веб-хука прошла успешно, вы увидите уведомление вверху страницы, аналогичное снимку экрана ниже.

Выполнение и запуск задания конвейера Jenkins CI CD
Теперь, когда вы создали и настроили свой конвейер, как вы знаете, что конвейер работает? Jenkins предоставляет плагин Просмотр стадий конвейера, чтобы помочь вам просматривать состояние конвейера.
1. Чтобы открыть состояние конвейера, откройте конвейер в Jenkins и нажмите на Статус. Как видно ниже, статус Просмотр стадий показывает Нет данных, потому что не было события, которое бы вызвало выполнение конвейера.

2. Для создания начальных данных сборки нажмите Build Now и дождитесь завершения процесса сборки. Как видно ниже, в разделе Stage View теперь есть одна запись, указывающая, что в этой сборке изменений нет.

3. Теперь протестируйте конвейер, добавив новый фиктивный файл в репозиторий. Для этого вернитесь в свой репозиторий GitHub и нажмите Add File —> Create new file.
Введите dummy в качестве имени нового файла и убедитесь, что добавлен контент.

Наконец, нажмите Commit new file внизу страницы.
4. Вернитесь на страницу состояния конвейера Jenkins, и вы должны увидеть новую запись сборки с одним коммитом, как показано ниже.

Заключение
В течение этого руководства вы узнали, как настроить конвейер Jenkins CI/CD для автоматизации жизненного цикла разработки программного обеспечения. Вы также узнали, как использовать Jenkins для поддержания цепочки действий для CI в проекте по разработке программного обеспечения.
Считаете ли вы, что конвейер Jenkins CI/CD – это стратегия, которую вы бы применили в своих проектах? Или у вас уже есть другая стратегия, которую, по вашему мнению, является более эффективным решением для CI/CD?