Развертывание автоматизации рабочего процесса конвейера Jenkins

Java

jenkins

Jenkins — это инструмент непрерывной интеграции с открытым исходным кодом, написанный на Java. После спора с Oracle проект был отделен от проекта Hudson.

Jenkins предоставляет услуги непрерывной интеграции для разработки программного обеспечения. Он работает в контейнере сервлетов (например, Apache Tomcat). Он поддерживает инструменты управления конфигурацией программного обеспечения (SCM) (включая AccuRev SCM, CVS, Subversion, Git, Perforce, Clearcase и RTC), может выполнять проекты на основе Apache Ant и Apache Maven, а также произвольные сценарии оболочки и пакетные команды Windows. Главный разработчик Jenkins — Косуке Кавагути. Jenkins — это бесплатное программное обеспечение, выпущенное под лицензией MIT.

Сборки могут запускаться различными способами. Например, он запускается при отправке в систему контроля версий, его также можно запланировать с помощью такого механизма, как Cron, или его можно запросить через определенный URL-адрес, когда другие сборки были завершены.

Создать конвейер

После настройки базовой среды давайте настроим рабочий процесс и испытаем его на себе.

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

  1. Пользователь фиксирует код в git
  2. Дженкинс извлекает последний код из git
  3. Прочитайте файл Jenkinsfile в корневом каталоге и выполните задачи, определенные в файле, по очереди.

Ниже приведены конкретные шаги настройки.

Написать Дженкинсфайл

    pipeline {
        agent {
            label 'master' /* 执行节点 */
        }
        stages {
            stage('Build') {
                steps {
                    echo 'Building'
                }
            }
            stage('Test') {
                steps {
                    echo 'Testing'
                }
            }
            stage('Deploy - Staging') {
                steps {
                    sh './deploy staging'
                    sh './run-smoke-tests'
                }
            }
            stage('Sanity check') {
                steps {
                    input "Does the staging environment look ok?"
                }
            }
            stage('Deploy - Production') {
                steps {
                    echo './deploy production'
                }
            }
        }
        post {
            always {
                echo 'One way or another, I have finished'
                deleteDir() /* clean up our workspace */
            }
            success {
                echo 'I succeeeded!'
            }
            unstable {
                echo 'I am unstable :/'
            }
            failure {
                echo 'I failed :('
            }
            changed {
                echo 'Things were different before...'
            }
        }
    }
    

Выше приведен базовый шаблон Jenkinsfile со следующими ключевыми понятиями.

  • agent- Укажите, на какой машине выполнять задачу, запомните приведенную выше конфигурацию.NodeзаполненLabel, если эти дваlabelсовпадение, простоNodeвыполнить в
  • stage- Большие шаги, составляющие рабочий процесс, эти шаги являются последовательными, т.е.build,test,deployЖдать
  • steps- описывать маленькие шаги в стадии, то же самоеstageсерединаstepsможно распараллелить
  • sh- воплощать в жизньshellЗаказ
  • input- требует, чтобы вы вручную нажимали OK,PipelineОн войдет в следующую ссылку, которая часто используется в ссылке развертывания, потому что во многих случаях развертывание требует некоторого ручного подтверждения.
  • post- После того, как все пайплайны будут выполнены, они войдут в почтовую ссылку, которая обычно выполняет некоторые работы по очистке, а также может судить о статусе выполнения пайплайна.

Поняв это, вы обнаружите, что написать Jenkinsfile очень просто. Хорошо, теперь, чтобы протестировать функцию конвейера, замените sh в приведенном выше коде на echo, скопируйте его в свой Jenkinsfile и сохраните в корневом каталоге репозитория git.

Создать конвейер

Вернитесь на веб-страницу Jenkins и добавьте конвейер

если хочешь каждый разgit commitЕсть два способа автоматического запуска конвейера, когда

Другой способ — использовать хук, предоставленный git.Принцип этого метода заключается в том, что после отправки git скрипт в хуке будет запущен, и скрипт отправит Дженкинсу инструкции для выполнения конвейера.Этот метод более элегантен. , но соответствующие вещи сделать сложнее.Чуть больше, этот метод не будет здесь демонстрироваться, и заинтересованные студенты могут изучить его самостоятельно.

Наконец, нам нужно установить адрес git, и настройка кредита в нем соответствует настройке кредита от Master к Node, упомянутой выше.

После завершения настройки, как только ваш репозиторий git получит новую фиксацию, он запустит работу этого конвейера.На следующем рисунке показано рабочее состояние примера Jenkinsfile выше.Вы можете видеть, что когда вы переходите к шагу проверки работоспособности, вам нужно вручную запустить триггер, чтобы выполнить следующую операцию.

разное

Адрес проекта: https://github.com/changdaye/jenkins-docker-demo/

Знакомство с пошаговым графическим плагином: https://wiki.jenkins.io/display/JENKINS/Pipeline+Stage+View+Plugin

Если вы чувствуете, что статья полезна для вас, вы можете обратить внимание на общедоступный аккаунт WeChat [Красочные цвета] для поддержки.