Пошаговое руководство по созданию конвейера Jenkins


Почему Дженкинс Трубопровод?

Непрерывная доставка (CD) является неотъемлемой частью жизненного цикла DevOps.

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

В DevOps непрерывная интеграция и непрерывная доставка (CI / CD) достигаются с помощью конвейера Jenkins. Использование Jenkins Pipeline для CD помогает доставлять программное обеспечение быстрее и чаще. Это помогает включать обратную связь в каждый следующий выпуск.

Что такое трубопровод Дженкинс?

Jenkins Pipeline – это сочетание работ для непрерывной доставки программного обеспечения с использованием Jenkins..

Я полагаю, вы знаете, что такое Дженкинс. Если нет, то проверьте это Курс Удеми освоить Дженкинс.

Конвейер Jenkins состоит из нескольких состояний или этапов, и они выполняются в последовательности один за другим. JenkinsFile – это простой текстовый файл, который используется для создания конвейера в виде кода в Jenkins. Он содержит код на Groovy Domain Specific Language (DSL), который прост в написании и удобен для чтения.

Либо вы можете запустить JenkinsFile отдельно, либо вы можете запустить конвейерный код из Jenkins Web UI. Существует два способа создания конвейера с помощью Jenkins..

  • Декларативный – новый способ создания Jenkins Pipeline. Здесь вы пишете отличный код, содержащий блоки «конвейера», который проверяется в SCM (Управление исходным кодом)
  • Scripted – способ написания отличного кода, где код определен внутри «узловых» блоков.

Прежде чем мы перейдем к демонстрации, если вы еще не установили Jenkins, пожалуйста, установите ее сначала. Убедитесь, что Jenkins запущен и работает в вашей системе.

Создать трубопровод Дженкинса

Так выглядит конвейерный поток Jenkins, состоящий из нескольких этапов между разработчиками, создающими программное обеспечение (кодирование), и программным обеспечением, поставляемым в производство..

Трубопровод Дженкинс

Давайте создадим декларативный конвейер.

На приборной панели Дженкинса, нажмите на Новый элемент. Затем введите имя элемента, например, «Первый конвейер» и выберите проект «Конвейер». Затем нажмите, ОК.

Новый предмет - трубопровод Дженкинса

Перейдите на вкладку «Конвейер», как показано на рисунке ниже, и введите свой код JenkinsFile (Groovy Code) здесь..

JenkinsFile Code

трубопровод {
агент любой
Этапы {
stage (‘Build’) {
шаги {
эхо ‘Привет, GeekFlare. Начинаем создавать приложение.
}
}
этап («Тест») {
шаги {
вход («Вы хотите продолжить?»)
}
}
stage (‘Deploy’) {
параллельный {
stage («Начало развертывания») {
шаги {
эхо "Начать развертывание .."
}
}
stage («Развертывание сейчас») {
агент {
докер {
reuseNode true
изображение “nginx”
}
}

шаги {
эхо "Докер создан"
}
}
}
}
stage (‘Prod’) {
шаги {
эхо "Приложение готово"
}

}
}
}

Позвольте мне объяснить вышеупомянутые блоки.

  • трубопровод Блок состоит из всех инструкций по сборке, тестированию и доставке программного обеспечения. Это ключевой компонент трубопровода Дженкинс.
  • агент назначается для выполнения конвейера на узле и выделения рабочего пространства для конвейера.
  • сцена это блок, в котором есть шаги для сборки, тестирования и развертывания приложения. Этапы используются для визуализации процессов Jenkins Pipeline.
  • шаг это отдельная задача, которую нужно выполнить, например, создать каталог, запустить образ докера, удалить файл и т. д..

Groovy код выше, я использую для JenkinsFile. Любой доступный агент получает назначение в конвейер. Затем я определяю этап сборки и выполняю простой шаг эха. Затем я определил стадию тестирования, где шаг спрашивает, хотите ли вы продолжить или нет. После этого я создал этап развертывания, в котором параллельно работают еще два этапа. Этап запуска развертывания содержит шаг с командой echo, а в развертывании теперь есть шаг, который вытягивает образ узла Nginx на узле. Наконец, есть стадия Prod с простым шагом эха.

Вышеописанный конвейер имеет этапы, на которых есть простые шаги, чтобы вы могли понять, как он работает. Как только вы научитесь создавать конвейер, вы можете добавить больше сложности и создавать сложные конвейеры..

Получив код на вкладке «Конвейер», нажмите «Применить и сохранить». Наконец, нажмите Build Now, чтобы начать сборку Jenkins Pipeline, который вы только что создали.

Построить сейчас

Так будет выглядеть пользовательский интерфейс при запуске конвейера. Если вы выполнили все шаги правильно, ваша сборка будет успешной, и для сборки будет показан синий цвет (# 27). Если в сборке есть ошибки, сборка будет выделена красным цветом (# 27).

Jenkins Build 27

Теперь нажмите на # 27 build, а затем на Console Output, чтобы проверить, что именно происходило в бэк-энде, когда он запускался..

Дженкинс Билд

Вот так будет выглядеть вывод, заканчивающийся сообщением SUCCESS.

Успешный вывод на консоль

Начато пользователем geekflare
Работает на уровне прочности: MAX_SURVIVABILITY
[Pipeline] Начало конвейера
[Pipeline] узел
Запуск на Jenkins в / var / lib / jenkins / workspace / First Pipeline
[Трубопровод] {
[Трубопровод] этап
[Pipeline] {(Build)
[Трубопровод] эхо
Привет, GeekFlare. Начинаем строить приложение.
[Трубопровод] }
[Pipeline] // этап
[Трубопровод] этап
[Pipeline] {(Тест)
[Pipeline] вход
Вы хотите продолжить?
Продолжить или прервать
Одобрено Geekflare
[Трубопровод] }
[Pipeline] // этап
[Трубопровод] этап
[Pipeline] {(Развернуть)
[Трубопровод] параллельный
[Pipeline] {(Ветвь: Начало развертывания)
[Pipeline] {(Ветвь: Развертывание сейчас)
[Трубопровод] этап
[Pipeline] {(запуск развертывания)
[Трубопровод] этап
[Pipeline] {(Развертывание сейчас)
[Pipeline] getContext
[Pipeline] isUnix
[Трубопровод] ш
[Трубопровод] эхо
Начать развертывание ..
[Трубопровод] }
+ Докер проверяет -f. Nginx
[Pipeline] // этап
[Трубопровод] }

Ошибка: нет такого объекта: nginx
[Pipeline] isUnix
[Трубопровод] ш
+ докер тянуть nginx
Использование тега по умолчанию: последний
последнее: вытащить из библиотеки / nginx
8d691f585fa8: потянув слой фс
5b07f4e08ad0: вытащить слой fs
abc291867bca: потянув слой фс
abc291867bca: Проверка контрольной суммы
abc291867bca: загрузка завершена
5b07f4e08ad0: проверка контрольной суммы
5b07f4e08ad0: загрузка завершена
8d691f585fa8: проверка контрольной суммы
8d691f585fa8: загрузка завершена
8d691f585fa8: вытащить завершено
5b07f4e08ad0: извлечение завершено
abc291867bca: вытащить завершено
Дайджест: sha256: 922c815aa4df050d4df476e92daed4231f466acc8ee90e0e774951b0fd7195a4
Статус: Загружен новый образ для nginx: последний
[Pipeline] с DockerContainer
Дженкинс, похоже, не работает внутри контейнера
$ docker run -t -d -u 125: 131 -w "/ var / lib / jenkins / workspace / Первый конвейер" -v "/ var / lib / jenkins / workspace / Первый конвейер: / var / lib / jenkins / workspace / Первый конвейер: rw, z" -v "/ Вар / Библиотека / Jenkins / рабочее пространство / Первый [Электронная почта защищена]: / Вар / Библиотека / Jenkins / рабочее пространство / Первый [Электронная почта защищена]: RW, г" -e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** -e ******** -e ******** – e ******** -e ******** -e ******** nginx cat
$ docker top 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943 -eo pid, комм
[Трубопровод] {
[Трубопровод] эхо
Докер создан
[Трубопровод] }
$ docker stop –time = 1 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
$ docker rm -f 3141793b98f315dc90a57d810068b8eedb6f62debafb9040de06635b558f2943
[Pipeline] // withDockerContainer
[Трубопровод] }
[Pipeline] // этап
[Трубопровод] }
[Pipeline] // параллель
[Трубопровод] }
[Pipeline] // этап
[Трубопровод] этап
[Pipeline] {(Prod)
[Трубопровод] эхо
Приложение готово
[Трубопровод] }
[Pipeline] // этап
[Трубопровод] }
[Pipeline] // узел
[Трубопровод] Конец трубопровода
Закончено: УСПЕХ

Вышеупомянутый Jenkins Pipeline создал образ докера Nginx. Вы можете убедиться в этом, выполнив приведенную ниже команду. Вы можете видеть, что изображение докера Nginx также перечислено.

[Электронная почта защищена]: ~ $ docker image ls
РАЗМЕР ИД ИЗОБРАЖЕНИЯ В РЕГИСТРАЦИИ
nginx последние 540a289bab6c 2 недель назад 126MB
httpd последний 7d85cc3b2d80 2 месяцев назад 154MB
Redis последний f7302e4ab3a8 2 месяца назад 98.2MB
geekflare_mongodb последние 095d17727ca0 3 месяца назад 325MB

Вывод

Я надеюсь, что это дает вам представление о Трубопровод Дженкинс преимущества и как вы можете создать. Вышесказанное является простой демонстрацией, и лучший способ научиться – это попробовать построить сложные конвейеры..

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me