详情可以参考w3c教程 https://www.w3cschool.cn/jenkins/jenkins-jg9528pb.html
pipeline {
//里面写入决堤的stages,声明式由每一个不同的阶段构成
}
agent部分指定整个Pipeline或特定阶段将在Jenkins环境中执行的位置,具体取决于该agent 部分的放置位置。该部分必须在pipeline块内的顶层定义 ,但阶段级使用是可选的。简单来说,agent部分主要作用就是告诉Jenkins,选择那台节点机器去执行Pipeline代码。这个指令是必须要有的
例:
pipeline {
agent any //参数any表示在哪台节点上执行任务由jenkins分配
}
agent参数
pipeline {
agent any //参数any表示在哪台节点上执行任务由jenkins分配
}
pipeline {
agent none
stages {
stage('getCode'){
agent {
label 'master' //指定当前stage在master节点上运行
}
steps{
echo "I am on master"
}
}
stage('Scaner'){
agent {
label 'node1' //指定当前stage在node1节点上运行
}
steps{
echo "I am on node1"
}
}
}
}
注意:只有agent为none的时候,stage里面才能指定当前stage在特定的节点上运行
pipeline {
agent {
label ‘节点标签或者节点名称’
}
stages {
stage(‘构建’){
setps{
}
}
}
pipeline {
agent {
node {
label ‘节点标签或者节点名称’
customWorkspace ’${env.JOB_NAME}/${env.BUILD_NUMBER}‘ //指定jenkins运行的工作空间
}
}
}
1:always 无论Pipeline运行的完成状态如何都会执行这段代码
2:changed 只有当前Pipeline运行的状态与先前完成的Pipeline的状态不同时,才能触发运行。
3:failure 构建失败后执行
4:success 构建成功后执行
5:unstable 不稳定状态的时候执行
6:aborted 构建终止/中断的时候执行
pipeline {
agent none
stages {
stage('getCode'){
agent {
label 'master' //指定当前stage在master节点上运行
}
steps{
echo "I am on master"
}
}
}
post{
always{
echo "I am on always"
}
changed{
script{
echo "I am on changed"
}
}
failure{
script{
echo "I am on failure"
}
}
success{
script{
echo "I am on success"
}
}
unstable{
script{
echo "I am on unstable"
}
}
aborted{
script{
echo "I am on aborted"
}
}
}
}
1. stages: (必要)所有阶段的总和,所有构建动作必须在stages下进行
2. stage:(必要)一个单一的阶段
3. steps:(非必要)一个单一阶段下的执行步骤
pipeline {
agent any
stages {
stage('Build') {
steps {
println "Build"
}
}
stage('Test') {
steps {
println "Test"
}
}
stage('Deploy') {
steps {
println "Deploy"
}
}
}
}
environment指令指定一系列键值对,这些对值将被定义为所有步骤的环境变量或阶段特定步骤
你可以写在顶层环境变量,让所有的stage下的step共享这些变量,也可以单独定义在某一个stage下,只能供这个stage去调用变量,其他的stage不能共享这些变量
全局environment与局部environment参数的区别
pipeline {
agent any
environment{
global = 'case1' //全局的变量,下面所有的stage都能使用这个变量
}
stages {
stage('Build') {
steps {
echo "Hello, ${global}, nice to meet you."
}
}
stage('Testcase') {
environment{
global2 = 'case2'//global2是局部变量只能给“Testcase”stage使用,global参数是全局的变量 他也能使用
}
steps {
echo "Hello, ${global2}, nice to meet you."
}
}
}
}
该options指令允许在Pipeline本身内配置Pipeline专用选项。Pipeline提供了许多这些选项,例如buildDiscarder,但它们也可能由插件提供,例如 timestamps
例如
pipeline {
agent any
options {
retry(3)
}
stages {
stage('demo') {
steps {
echo "失败重试重试3次"
sh '1/0' //执行到这里会构建失败,有retry(3)参数,因此会重试3次
}
}
}
}