Как создать 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. После завершения написания конвейера нажмите «Сохранить», он будет перенаправлен непосредственно на панель мониторинга проекта, где мы сможем использовать опцию «Создать сейчас», чтобы запустить конвейер и проверить, успешен он или нет, используя этап. просмотр или вывод на консоль.

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

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

Вид на сцену 

И мы также можем увидеть вывод консоли, где мы можем увидеть журналы каждого выполненного шага.

Консольный вывод 

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

Журналы вывода консоли 

Выход трубопровода

Прокрутите вниз до конца вывода консоли, там мы сможем увидеть статус конвейера, если он «Завершен: успех». Написанный нами конвейер прошел успешно. Если он помечен как неудачный, мы увидим журналы в консоли и сможем найти причину сбоя этапа.