官方文档 https://www.jenkins.io/doc/book/pipeline/syntax/
什么是 Declarative Pipeline ? 什么是 Scripted Pipeline ?语法对比
https://github.com/darinpope/jenkins-example-scripted-vs-declarative
pipeline {
agent any
stages {
stage('Hello') {
steps {
sh 'echo "Hello World"'
}
}
}
}
如上声明式 vs 如下脚本式
node {
stage('Hello') {
sh 'echo "Hello World"'
}
}
一、Declarative Pipeline 简介
声明式 Pipeline 必须以 pipeline
包含,如下:
pipeline {
/* insert Declarative Pipeline here */
}
声明式 Pipeline 的语句和表达式遵从 Groovy’s syntax 同样的规则,如下:
- Pipeline 的顶层必须是一个 block, 规定:
pipeline { }
- 没有分号作为语句分隔符,一个语句一行
- Blocks 必定由 Sections, Directives, Steps, or assignment statements 组成
- 属性引用语句被视为无参数方法调用。比如:
input
视为input()
二、Sections
Sections 通常包含一个或多个 Directives or Steps。
1. 常见 Sections
agent
post
stages
steps
范例
pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
post {
always {
echo 'I will always say Hello again!'
}
}
}
三、Directives
environment
options
parameters
triggers
Jenkins cron syntax
stage
tools
input
when
四、Steps
参考 Pipeline Steps reference ,内含所有可用 Steps。
script
script
step 标记了一个 Scripted Pipeline 块,并在声明式Pipeline中执行。对于大多实例,script
step 是不必要的,但它可以提供一个有用的 “escape hatch” (转义填充)。较大的和复杂的script
step应该移到共享库Shared Libraries 中。
pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'
script {
def browsers = ['chrome', 'firefox']
for (int i = 0; i < browsers.size(); ++i) {
echo "Testing the ${browsers[i]} browser"
}
}
}
}
}
}
网友评论