Как создать конвейер CI/CD в Jenkins

Вы знали, что у 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 в верхнем правом углу страницы.

Forking a repo

Дождитесь завершения процесса форкинга. В результате у вас будет репозиторий с именем «имя_пользователя/MyShuttle2» в вашей учетной записи GitHub, к которому у вас будет полный доступ.

3. Теперь добавьте новый файл в репозиторий с именем Jenkinsfile. Jenkinsfile – это текстовый файл, который содержит определение конвейера Jenkins. Этот файл должен находиться внутри репозитория с исходным кодом.

На странице вашего репозитория нажмите Add file —> Create new file.

Adding a 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 – всего лишь базовый пример скрипта конвейера. В производстве скрипты конвейера будут более сложными и включать в себя несколько действий на одном или всех этапах.

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                echo 'Building..'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing..'
            }
        }
        stage('Deploy') {
            steps {
                echo 'Deploying....'
            }
        }
    }
}

После написания кода ваш файл будет выглядеть так, как на скриншоте ниже.

Jenkinsfile pipeline script

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

Committing the new file

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

New Jenkinsfile on the GitHub repo

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

Copying the repository URL

Создание конвейера Jenkins CI CD

Разработка функции включает в себя много изменений кода. Между каждым изменением кода существует набор задач для выполнения. Эти задачи могут включать в себя фиксацию изменений, компиляцию, тестирование и упаковку.

Сервисы автоматизации, такие как Jenkins, помогают сделать эти шаги быстрыми и безошибочными.

1. Откройте браузер, перейдите по вашему URL Jenkins и войдите в систему.

2. На панели управления Jenkins Dashboard, нажмите New Item в левом меню.

Creating a new item in Jenkins

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

Creating a Pipeline project

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

Specifying the GitHub repository URL

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

Specifying the build trigger

6. Затем прокрутите дальше вниз до раздела Pipeline и выберите/указывайте следующие значения:

  • Definition: Pipeline script from SCM
  • SCM: Git
  • Repository URL: URL вашего репозитория
Specifying the pipeline values

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

Saving the pipeline configuration

Настройка вебхука в GitHub

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

Следуйте указанным ниже шагам, чтобы создать вебхук.

1. Перейдите на страницу Settings и нажмите вкладку Webhooks в вашем репозитории GitHub. На странице Webhooks нажмите Add webhook.

Adding a webhook

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

Также измените значение Тип содержимого на application/json.

Setting the webhook URL and content type

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

Selecting individual events

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

Enabling Pushes and Pull requests events

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

Webhook creation notification

Выполнение и запуск задания конвейера Jenkins CI CD

Теперь, когда вы создали и настроили свой конвейер, как вы знаете, что конвейер работает? Jenkins предоставляет плагин Просмотр стадий конвейера, чтобы помочь вам просматривать состояние конвейера.

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

Jenkins pipeline stage view

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

To generate initial build data, click Build Now

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

Введите dummy в качестве имени нового файла и убедитесь, что добавлен контент.

Creating a new file

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

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

Jenkins pipeline build status

Заключение

В течение этого руководства вы узнали, как настроить конвейер Jenkins CI/CD для автоматизации жизненного цикла разработки программного обеспечения. Вы также узнали, как использовать Jenkins для поддержания цепочки действий для CI в проекте по разработке программного обеспечения.

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

Source:
https://adamtheautomator.com/jenkins-ci-cd/