При разработке программного обеспечения конвейеры CI/CD или непрерывной интеграции/непрерывной доставки помогают создавать и развертывать код в различных средах посредством автоматизированного процесса.
Однако создание и поддержание этого конвейера само по себе может стать сложной задачей. Введите конвейер как код — подход, при котором вы создаете весь конвейер CI/CD в формате кода. Вместо того чтобы полагаться на веб-интерфейсы пользователя и инструменты перетаскивания, вы используете файлы конфигурации, чтобы определить, как код вашего приложения будет создан, протестирован и развернут.
Но прежде чем углубляться в детали конвейера как кода и того, как вы можете построить свой собственный, давайте сначала поймем, что такое конвейер.
Что такое конвейер в разработке программного обеспечения?
Конвейер разработки программного обеспечения — это серия автоматизированных шагов, которые принимают последние изменения кода, запускают на нем определенные процессы и развертывают его в выбранной вами среде. Давайте лучше разберемся в этом на примере.
Представьте, что у вас есть три микросервиса, и в один из них вы добавили новые функции. Теперь вы хотите запустить модульные тесты на уровне кода. Как только они пройдут, вы также захотите проверить наличие проблем с форматированием кода. Далее вам нужно создать свой код. После этого вы хотите развернуть его в двух разных средах с несколькими компьютерами в каждой среде. Наконец, вам нужно запустить интеграционные тесты, чтобы убедиться, что ваши изменения синхронизированы с другими службами.
Вы можете выполнить все вышеперечисленные шаги вручную. Но это отнимет у вас много времени, и вы будете склонны к ошибкам. Итак, есть ли способ их автоматизировать? Да! Вы можете создать конвейер и определить все шаги. После этого каждый раз, когда вы вносите изменения в свой код, вы можете запускать конвейер и не беспокоиться о каких-либо ручных действиях.
Преимущества конвейера как кода
Если вы используете такие инструменты, как перетаскивание, вам становится сложно отслеживать изменения, поддерживать стандартизацию или способствовать сотрудничеству. Конвейер как код — лучший способ определить конвейер разработки программного обеспечения.
Это помогает поддерживать единообразие. Содействуя автоматизации, вы получаете повторяемость и используете один и тот же конвейер для других систем. И, как и код приложения, код, используемый для определения вашего конвейера, способствует сотрудничеству.
№1. Последовательность
Определение в текстовом формате гарантирует, что ничего не произойдет не по порядку. Применяя стандартный рабочий процесс для всех сборок и развертываний приложений, вы обеспечиваете согласованность и снижаете риск непредвиденных проблем.
А благодаря последовательности вы также получаете проверки соответствия и безопасность. Обеспечение согласованного конвейера позволяет вам определять сканирование безопасности и проверки уязвимостей так, чтобы ничто не могло пройти мимо вас.
№2. Повторяемость
Создайте свой конвейер и настройте автоматизацию. Помимо согласованности, ваш автоматизированный конвейер гарантирует, что каждый код приложения проходит одни и те же этапы и проверки.
Ваш код будет проходить один и тот же процесс сборки и развертывания каждый раз, когда вы запускаете конвейер. Вы сохраняете повторяемость во всех ваших запусках.
№3. Сотрудничество
Поскольку код является средой, с помощью которой вы создаете свой конвейер, вы способствуете сотрудничеству. Несколько человек из вашей команды могут вносить свой вклад в один и тот же код, как и в случае с кодом приложения.
Pipeline as Code также позволяет вам поддерживать контроль версий и разрешать проверки кода. Это гарантирует соблюдение лучших практик и своевременное выявление потенциальных проблем.
Теперь давайте углубимся в то, как вы можете создать свой собственный конвейер, используя Pipeline as Code.
Конвейер как код в Jenkins
Когда дело доходит до систем непрерывной интеграции и непрерывного развертывания (CI/CD), Jenkins является ведущим сервером автоматизации с открытым исходным кодом. С Jenkins вы можете легко интегрировать изменения кода, автоматизировать тестирование и сборку, а также развертывать программное обеспечение. И все это вы можете сделать надежно и эффективно.
Являетесь ли вы любителем, пытающимся узнать больше о конвейерах автоматизации, или создаете сложные корпоративные системы, Jenkins удовлетворит все уникальные требования вашего проекта. Обилие плагинов и постоянно растущее сообщество помогут вам максимально эффективно использовать автоматизацию.
В Jenkins Pipeline — это набор различных плагинов, определенных в определенном порядке, который создает вашу систему CI/CD. Будь то простые или сложные варианты использования, вы можете создать свой конвейер, используя код с синтаксисом доменно-ориентированного языка (DSL) Pipeline. DSL построен на базе Apache Groovy.
Основой конвейера как кода в Jenkins является Jenkinsfile — текстовый файл, содержащий код, описывающий все различные этапы и действия. Давайте узнаем, как создать конвейер как код, используя файл Jenkins.
Как создать свой конвейер как код?
После установки и запуска Jenkins перейдите в веб-интерфейс вашего браузера. Возможно, вам придется войти в систему. Далее вы окажетесь на главной странице панели управления. Вы начнете отсюда и создадите свой конвейер.
- На левой панели вы найдете кнопку «Новый элемент» .
- Нажмите на нее, чтобы перейти на следующую страницу.
- На новой странице вы увидите приглашение создать элемент.
- Введите имя в поле Введите имя элемента . Это обязательно.
- Имейте в виду, что будет создан каталог с тем же именем. Следовательно, лучше избегать пробелов, поскольку это может привести к нежелательным побочным эффектам.
- После этого выберите параметр «Конвейер» и нажмите кнопку «ОК» в нижней части экрана.
- Представлено окно Конфигурация .
- Нажмите параметр «Конвейер» на левой панели или прокрутите вниз до раздела «Конвейер».
Начнем с простого конвейера, который можно настроить непосредственно из пользовательского интерфейса.
Создайте конвейер как код непосредственно в Jenkins
Перейдя в раздел «Конвейер», вы готовы создать свой первый конвейер в виде кода.
В раскрывающемся меню «Определение» выберите параметр «Сценарий конвейера». Под ним вы найдете область «Сценарий» , в которой вы можете написать код своего конвейера. Дженкинс поддерживает созданный здесь сценарий.
Jenkins позволяет вам выбирать между двумя стилями или синтаксисами кодирования — декларативным синтаксисом и скриптовым синтаксисом. Декларативный синтаксис прост в использовании и идеален для простых конвейеров, а скриптовый синтаксис предназначен для опытных пользователей и разработки сложных потоков.
Используя декларативный синтаксис, создайте три простых этапа — код сборки, код тестирования и код развертывания, используя следующий фрагмент кода:
конвейер { агент любые этапы { stage('Код сборки') { шаги { echo 'Это шаг сборки…' } } stage('Тестовый код') { шаги { echo 'Это шаг тестирования.. .' } } stage('Развертывание кода') { шаги { echo 'Этот шаг развертывает код…' } } } }
Вы также можете использовать скриптовый синтаксис, как показано ниже:
node { stage('Код сборки') { echo 'Это этап сборки…' } stage('Тестовый код') { echo 'Это этап тестирования…' } stage('Развертывание кода' ) { echo 'На этом этапе развертывается код…' } }
Нажмите « Сохранить» . Теперь нажмите кнопку «Создать сейчас» на левой панели. Это запустит только что созданный конвейер.
Как только ваш конвейер завершится, вы можете проверить его в истории сборки . Если это ваш первый запуск, нажмите на присутствующую сборку № 1. Затем нажмите «Вывод консоли» на левой панели. На каждом этапе в коде конвейера вы найдете три оператора echo.
Создайте конвейер как код, используя внешний файл
Становится сложно поддерживать ваш конвейер непосредственно в Jenkins, когда он становится сложным. В этом случае вам нужно создать внешний файл и использовать его.
Прежде чем создавать конвейер Jenkins, вам понадобится внешний репозиторий и система контроля версий. Давайте создадим репозиторий Git и разместим его удаленно на GitHub. Вы создадите свой файл Jenkins и сохраните его здесь.
- Перейдите в свой профиль GitHub. Вы можете создать бесплатную учетную запись, если у вас ее нет.
- Создайте новый репозиторий. Назовите его customJenkins.
- Убедитесь, что на вашем локальном компьютере установлен Git.
- Создайте каталог в выбранном вами месте.
- Перейдите в каталог и откройте терминал.
- Инициализируйте пустой репозиторий Git с помощью команды git init.
- Теперь создайте новый файл, который будет вашим Jenkinsfile. Назовем его customJenkinsfile.
- Напишите свой конвейер как код внутри этого файла. В качестве примера используйте тот, который указан ниже:
конвейер { агент любые этапы { stage('Код сборки') { шаги { echo 'Это шаг для сборки, определенный в пользовательском файле…' } } stage('Тестовый код') { шаги { echo 'Это шаг для проверки, определенной в пользовательском файле…' } } stage('Deploy Code') {steps { echo 'Этот шаг, определенный в пользовательском файле, развертывает код…' } } } }
- Добавьте вновь созданный файл в Git, используя команду git add —all в своем терминале.
- Зафиксируйте файл в Git с помощью команды git commit -m «Создан собственный файл jenkins».
- Свяжите свой локальный репозиторий Git с удаленным репозиторием, используя git Remote Add Origin git@github.com:<ваше имя пользователя>/customJenkins.git.
- Затем загрузите файл на удаленный сервер (GitHub) с помощью git push —set-upstream origin master.
Теперь вы создали удаленный репозиторий на GitHub, содержащий собственный файл Jenkins. Давайте настроим Jenkins для использования этого.
Настройте Jenkins для использования Jenkinsfile из GitHub.
- Откройте панель управления Jenkins.
- Создайте новый конвейер или нажмите «Настроить» на левой панели существующего конвейера.
- Прокрутите вниз до раздела «Конвейер» .
- В раскрывающемся списке «Определение» выберите параметр «Конвейерный сценарий из SCM» .
- Выберите Git в опции SCM .
- Укажите ссылку на свой репозиторий GitHub в URL-адресе репозитория в разделе Репозитории .
- Убедитесь, что для параметра ветки установлено значение */master в разделе «Ветви для сборки» .
- Прокрутите вниз до пункта «Путь к сценарию» . Здесь укажите имя файла Jenkins как customJenkinsfile. Нажмите « Сохранить» .
После этого запустите свой конвейер. Дженкинс сначала получит ваш код из удаленного репозитория. Затем он создаст конвейер с использованием пользовательского файла Jenkins и запустит все этапы.
Теперь вы успешно создали собственный конвейер разработки программного обеспечения, используя Pipeline as Code. Кроме того, вы включили контроль версий в сценарии конвейера. Любые изменения, вносимые вами в код конвейера, теперь можно отслеживать при каждом коммите Git. Далее пришло время рассмотреть лучшие практики.
Лучшие практики написания эффективного конвейера в виде кода
Давайте рассмотрим лучшие практики, которым следует следовать при написании конвейера в виде кода.
- Содержите свой конвейер в чистоте и избегайте написания слишком большого количества сложных условий.
- Если вы выполняете слишком много команд внутри конвейера, разбейте их на разные этапы.
- Используйте внешние файлы с контролем версий для вашего конвейера в качестве сценариев кода.
- Используйте возможности языка кодирования, например Groovy, для интеграции различных этапов.
- Избегайте вызовов Jenkins.getInstance или его методов доступа, чтобы избежать проблем с безопасностью и производительностью.
- Не перезаписывайте встроенные команды конвейера, такие как sh и timeout.
- Создавайте внешние инструменты или сценарии для сложных задач, интенсивно использующих ЦП, и подключайте их к своему конвейеру.
- Используйте широкий спектр существующих плагинов, доступных для Jenkins, для решения вашего сценария использования.
- Убедитесь, что вы включили обработку исключений и ошибок, поскольку что-то может пойти не так.
- Не делайте свой конвейер как код, тесно связанный с большим количеством бизнес-логики внутри него.
- Используйте параметризованные аргументы везде, где это возможно, чтобы обеспечить возможность повторного использования вашего конвейера.
Конвейер как код: простой подход к сложным процессам
Таким образом, Pipeline as Code упрощает автоматизацию вашего конвейера CI/CD, представляя весь процесс в виде кода. В то время как конвейеры CI/CD автоматизируют создание, тестирование и развертывание изменений вашего кода, использование Pipeline as Code делает еще один шаг вперед. Это позволяет вам определять рабочий процесс в тексте, а не полагаться на графические интерфейсы.
Используя Pipeline as Code, вы гарантируете, что каждый шаг вашего рабочего процесса выполняется в правильном порядке. Вы снижаете риск возникновения нежелательных проблем. Кроме того, вы получаете ряд преимуществ, включая согласованность, повторяемость и содействие сотрудничеству.
Благодаря этому руководству вы теперь знаете, как создавать собственные конвейеры с помощью Jenkins, широко используемого инструмента CI/CD. Jenkins предлагает мощную и гибкую платформу для реализации Pipeline как кода через Jenkinsfile. Следуйте лучшим практикам и создавайте рабочие процессы, охватывающие все варианты использования вашего конвейера.
Если вы хотите узнать больше о Jenkins, вы можете узнать, как создать собственный конвейер Jenkins.