Тут я фиксирую для себя сведения о Jenkins (версии 2 и последующих).

Терминология

  • Node (узел) - система (физический сервер, виртуальная машина, контейнер), которая способна выполнять задания Jenkins (в том числе и master). В сценарии конвейера под термином node понимается система с установленным агентом (agent).
  • Master - узел, который хранит настройки конвейеров и управляет запуском задач.
  • Agent (агент, slave) - программный компонент, работающий на узле, управляемый master'ом и выполняющий задания.
  • Worker (исполнитель) - сущность внутри агента, которая непосредственно исполняет задание. У одного агента можент быть несколько исполнителей. Количество исполнителей на узле можно настроить.
  • Stage (этап) - набор действий (шагов) конвейера, объединяемых по смыслу (получение исходников, компиляция, тестирование и т.д.).

Синтаксис конвейеров Jenkins

Jenkins 2 поддерживает два варианта синтаксиса описания конвейеров (Jenkinsfile).

Грубо говоря - описание конвейера представляет собой скрипт на языке Groovy.
Сценарный синтаксис более функционален, по сравнению с декларативным и позвоялет создавать максимально гибкие конвейеры.
Визуально сценарный конвейер можно определить по конструкциям вида:

node('worker') {
   stage('Source') {
   ...
   ...

Декларативный способ описания конвейера заключается в объявлении состояний и ожидаемых результатов.
Декларативный синтаксис напоминает web-интерфейс с заполняемыми формами. Если каких-то необходимых действий не предусмотрено, то их придется дописывать.
Описание конвейера в декларативном стиле начинается так:

pipeline {
   agent {label:'worker'}
   stages {
      stage('Source') {
      ...
      ...

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

Полный вариант синтаксиса:

git([branch: 'test', url: 'http://github.com/brentlaster/gradle-greetings.git'])

Допускается запись без скобок:

git branch: 'test', url: https://github.com/brentlaster/gradle-greetings.git

Обязательным является только именованный параметр url, поэтому допускается еще более упрощенная запись:

git 'https://github.com/brentlaster/gradle-greetings.git'

Если именованный параметр не требуется, то параметром по умолчанию является объект сценария:

bat ([script: 'echo hi'])

или

bat 'echo hi'
Enter your comment. Wiki syntax is allowed:
 
  • devops/jenkins.txt
  • Last modified: 2019/11/18 08:56
  • by admin