Создание pipeline
Pipline — это конфигурация задачи jenkins в виде кода, написанного на языке groovy. Для возможности создания должен стоять плагин pipline.
Для создания pipeline нужно в меню нажать Создать item, ввести Имя задачи и выбрать pipeline, затем ОК.
Pipeline можно написать в jenkins, или указать путь к файлу в Git.
Чтобы писать pipeline в jenkins, в разделе Pipeline Definition должен быть выбран pipeline script и в поле script можно писать сам код, шаблон для написания можно получить выбрав Hello word в выпадающем меню в правом верхнем углу поля script.
Чтобы получить pipeline из git в выпадающем меню под Pipeline Definition нужно выбрать pipeline script from SCM, выбрать SCM - Git, в пункте Repository URL указать путь к репозиторию, в пункте Script Path указать файл, например jenkinsfiles/first_steps.jenkins. В пункте Branch Specifier указать ветку, по умолчанию в GitHub она теперь называется main, раньше называлась master.
Для подключения к публичному репозиторию git можно использовать https ссылку без пароля, но если нужно осуществить подключение по ssh или подключиться к закрытому репозиторию, то нужны учетные данные для подключения.
pipeline
pipeline {
...
}
agent
Определяет, где будет выполнятся pipeline или его этап.
pipeline {
agent any
...
}
pipeline {
agent none
stages {
stage('test'){
agent any
steps {}
}
}
...
}
pipeline {
agent {node {label 'agent1'}}
...
}
pipeline {
agent { label 'label1' }
...
}
//на агенте имеющем обе указанные метки
pipeline {
agent { label 'label1 && label2' }
...
}
//на агенте имеющем одну или другую метку
pipeline {
agent { label 'label1 || label2' }
...
}
pipeline {
agent {
docker {
image 'nginx'
label 'label1'
args '-v /tmp:/tmp'
}
}
}
возможны другие параметрыpipeline {
agent {
dockerfile {
filename 'Dockerfile.build'
dir 'build'
label 'label1'
additionalBuildArgs '--build-arg version=1.0.2'
args '-v /tmp:/tmp'
}
}
}
stages
pipeline {
agent any
stages {
stage('stage 1') {
...
}
stage('stage 2') {
...
}
stage('stage 3') {
...
}
}
}
stage
pipeline {
agent any
stages {
stage('Сборка') {
steps {
...
}
}
stage('Тестирование') {
steps {
...
}
}
stage('Развертывание') {
steps {
...
}
}
}
}
steps
def val1 = 5
pipeline {
agent any
stages {
stage('stage 1') {
steps {
echo '1'
echo '2'
echo '3'
print val1
}
}
}
}
post
Определяет один или несколько дополнительных шагов, которые выполняются по завершении выполнения конвейера или этапа (в зависимости от расположения раздела post).
- Для блока post можно указать выполнение при следующих условиях:
- always - выполнять всегда;
- changed - если статус выполнения отличается от предыдущего;
- fixed - если текущий запуск прошел успешно, а предыдущий нет;
- regression - если текущий запуск не прошел, а предыдущий был успешен;
- aborted - если предыдущий запуск был прерван (обычно вручную);
- failure - если текущий запуск имеет статус "Сбой";
- success - если текущий запуск имеет статус "Успешно";
- unstable - если текущий запуск имеет статус "Нестабильный";
- unsuccessful - если не имеет статуса "Успешно";
- cleanup - если все остальные условия оценены;
pipeline {
agent any
stages {
stage('ls') {
steps {
sh 'ls'
}
}
}
post {
always {
echo 'finished'
}
success {
echo 'succeeded!'
}
unstable {
echo 'unstable'
}
failure {
echo 'failed'
}
changed {
echo 'different'
}
}
}