Как создать CI-CD pipeline в Jenkins?
Специалисты DevOps в основном работают с конвейерами(pipeline), поскольку конвейеры могут автоматизировать такие процессы, как создание, тестирование и развертывание приложения. Выполнение вручную с помощью пользовательского интерфейса требует много времени и усилий, что влияет на производительность. С помощью сценариев конвейера непрерывной интеграции/непрерывного развертывания (CI/CD) мы можем автоматизировать весь процесс, что повысит производительность и сэкономит много времени для организации, а также позволит доставлять качественные приложения конечным пользователям.
Что такое конвейер CI/CD?
CI/CD означает непрерывную интеграцию/непрерывное развертывание. Сначала давайте попробуем понять, что такое конвейер. В вычислениях конвейер — это набор этапов или процессов, связанных вместе и образующих систему обработки. Каждый этап конвейера принимает входные данные, обрабатывает их в соответствии с набором правил, а затем отправляет выходные данные на следующий этап. Часто общий результат конвейера является результатом его последнего этапа. как процедуры, описанные ниже
- Тестовый код
- Создать приложение
- Нажмите репозиторий
- Развернуть на сервере
Все шаги, упомянутые выше, будут выполняться последовательно один за другим, если какой-либо шаг/этап окажется неудачным, переход к следующему шагу/этапу не будет выполнен до тех пор, пока предыдущий шаг не будет успешным.
Что такое непрерывная интеграция (CI)?
Непрерывная интеграция означает каждый раз, когда новый код передается в удаленные репозитории, такие как GitHub , GitLab и т. д. Непрерывная интеграция (CI) будет непрерывно создавать, тестировать и объединять в общий репозиторий.
Преимущества непрерывной интеграции (CI)
- Мы можем вести отчеты по проектам
- Развертывание может быть выполнено в течение заданного времени.
- Ошибки можно найти быстро.
Непрерывное развертывание/доставка (CD)?
Непрерывное развертывание
Непрерывное развертывание означает автоматизацию дальнейших этапов конвейера автоматически или вручную, развертывая приложение/код в различных средах, таких как разработка, тестирование и производство. Автоматизация сборки является основным компонентом непрерывной интеграции и непрерывного развертывания.
Непрерывная доставка
Каждая сборка, которая прошла все автоматизированные тесты и могла быть полностью автоматизирована и запущена в производство, требовала всего лишь одного щелчка человеческого вмешательства, называется непрерывной доставкой.
Пример проекта — создание конвейера CI/CD с использованием Jenkins
В этом проекте мы попытаемся изучить базовый конвейер CI/CD, необходимый для создания файла .war веб-приложения Java с помощью Jenkins. Установка Jenkins относится к установке Jenkins.
Шаг 1: Войдите в свою учетную запись Jenkins, как показано ниже.
Шаг 2. После входа в систему пользователь будет перенаправлен на консоль Jenkins, вот ссылка на нее.
Шаг 3 . Чтобы создать новый проект, выберите опцию «Новый элемент» , доступную на панели инструментов . См. изображение ниже:
Шаг 4 . Теперь на экране будет виден список параметров вместе с полем для имени конвейера. Добавьте подходящее имя и выберите опцию «Pipeline» , чтобы продолжить. Обратитесь к этому снимку экрана.
Шаг 5: После перенаправления появится страница конфигурации. Это самая важная страница, так как здесь будут заполнены все детали. Сначала есть раздел «Общие» , где пользователь может добавить описание на основе проекта, для которого необходимо создать конвейер. И установите соединение для расчета, откуда конвейер будет получать доступ к проекту. Обратитесь к скриншоту, чтобы лучше понять.
Шаг 6. Теперь идет второй раздел, то есть «Создание триггеров». Здесь нам нужно указать ветку и репозиторий, а также указать учетные данные. И добавьте дополнительные варианты поведения, если это необходимо. Обратитесь к скриншоту, чтобы лучше понять.
Шаг 7. Следующий раздел — «Расширенные параметры проекта», как следует из названия, он относится только к специальным конвейерам, более простые проекты не требуют каких-либо спецификаций в этом разделе. Пожалуйста, обратитесь к скриншоту, приведенному ниже, для того же.
Шаг 8. Это последний раздел, то есть «Pipeline» . Здесь пользователь указывает, откуда будут импортированы сценарии, включая путь к файлу, репозиторию, учетные данные и т. д. Для справки см. скриншот, прикрепленный ниже.
Пример конвейерного сценария для развертывания веб-приложения на сервере Tomcat
node { //Mention the tools which have been configured def mavenhome= tool name:"*****" // Mention how to trigger the Pipeline and how many Builds must be there and so on properties([buildDiscarder(logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '5', daysToKeepStr: ' ', numToKeepStr: '5')), pipelineTriggers([pollSCM('* * * * *')])]) // Getting the code from the GitHub stage('checkout code'){ git branch: 'development', credentialsId: '*******', url: '********' } //Building the code in to packages by using maven stage('build'){ sh "${mavenhome}/bin/mvn clean package" //Executing the code quality report by using SonarQube } stage('execute sonarqube package'){ sh "${mavenhome}/bin/mvn clean sonar:sonar" //Uploading the package into nexus } stage('upload buildartifact'){ sh "${mavenhome}/bin/mvn clean deploy" //Deploying th application into Tomcat } stage('tomcat'){ sshagent(['**********']) { sh "scp -o StrictHostKeyChecking=no target /maven-web-application.war ec2-user@*******:/opt/apache-tomcat-9.0.64/webapps/" } }
Замените все значения (*), упомянутые выше, своими значениями.
Шаг 9. После завершения написания конвейера нажмите «Сохранить», он будет перенаправлен непосредственно на панель мониторинга проекта, где мы сможем использовать опцию «Создать сейчас», чтобы запустить конвейер и проверить, успешен он или нет, используя этап. просмотр или вывод на консоль.
мы можем увидеть результат конвейера в виде сцены, как показано на изображении ниже.
И мы также можем увидеть вывод консоли, где мы можем увидеть журналы каждого выполненного шага.
Нажмите на вывод консоли, чтобы просмотреть журналы каждого этапа, выполняемого с помощью конвейера.
Прокрутите вниз до конца вывода консоли, там мы сможем увидеть статус конвейера, если он «Завершен: успех». Написанный нами конвейер прошел успешно. Если он помечен как неудачный, мы увидим журналы в консоли и сможем найти причину сбоя этапа.