agent 构建节点


参数:

  • any: 运行在任一可用节点。
  • none:当pipeline全局指定agent为none,则根据每个stage中定义的agent运行(stage必须指定)。
  • label:在指定的标签的节点运行。(标签=分组)
  • node:支持自定义流水线的工作目录。
## 一
pipeline {
    agent any
}

## 二
pipeline {
    agent { label "label Name" }
}


## 三 自定义节点,加上node有一些高级的特性,比如自定义工作目录
pipeline {
  agent { 
     node {
        label "labelName",
        customWorkspace "/opt/agent/workspace"
     }
  }
}

Running on build-01 in /data/cicd/jenkinsagent/workspace/devops-maven-service

默认agent是有默认的workspace的,但是使用node方式的时候就比较灵活,它是可以支持自定义的workspace的,所以上面可以添加自定义路径 ,在执行的时候就会切换到这个目录下面去执行。

pipeline {
    agent {label "build"}

    stages {
        stage('Hello') {
            steps {
                script{
                    echo "The branch name is ${branchName}"  #这里变量是参数构建
                    sh "echo the job name is ${JOB_NAME}"
                }
            }
        }
    }

}



Started by user admin
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on build-01 in /data/cicd/jenkinsagent/workspace/pipeline-test
[Pipeline] {
[Pipeline] stage (hide)
[Pipeline] { (Hello)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
The branch name is master
[Pipeline] sh
+ echo the job name is pipeline-test
the job name is pipeline-test
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

 

post 构建后操作


定义: 根据流水线的最终状态匹配后做一些操作。

状态:

  • always: 不管什么状态总是执行
  • success: 仅流水线成功后执行
  • failure: 仅流水线失败后执行
  • aborted: 仅流水线被取消后执行
  • unstable:不稳定状态,单侧失败等等

post就是构建后的操作

post就是根据流水线的状态去做一些事情,always是不管怎么样总是要做的一些事情

注意post可以写到stage里面,那么就是针对于某个阶段了,如果写在pipeline里面那么就是全局的,是针对整个流水线的状态,里面script不一定要写,但是运行了脚本方式的语法最好带上。

什么时候在stage里面写post?比如构建maven项目在单元测试之后,会产生一个报告,也就是单元测试成功之后可以将这个报告展示在jenkins上面,失败了就可以不让她展示了

在post always里面可以清理项目的空间,比如删除workspace的空间,在always里面的sript里面加入shell清理worksapce空间

pipeline {
    agent any

    stages {
        stage('Hello') {
            steps {
                script{
                    echo "The branch name is ${branchName}"
                    sh "echo the job name is ${JOB_NAME}"
                }
            }
            post{
                always{
                    script{
                      echo "stage always.........."
                    }
                }
            }
        }
    }

post {
        always{
            script{
                println("流水线结束后,经常做的事情")
                echo "The job status is ${currentBuild.currentResult}"
            }
        }
        
        success{
            script{
                println("流水线成功后,要做的事情")
            }
        
        }
        failure{
            script{
                println("流水线失败后,要做的事情")
            }
        }
        
        aborted{
            script{
                println("流水线取消后,要做的事情")
            }
        
        }
    }
}




Started by user admin
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/jenkins_home/workspace/pipeline-test
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Hello)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
The branch name is master
[Pipeline] sh
+ echo the job name is pipeline-test
the job name is pipeline-test
[Pipeline] }
[Pipeline] // script
Post stage
[Pipeline] script
[Pipeline] {
[Pipeline] echo
stage always..........
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Declarative: Post Actions)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
流水线结束后,经常做的事情
[Pipeline] echo
The job status is SUCCESS
[Pipeline] }
[Pipeline] // script
[Pipeline] script
[Pipeline] {
[Pipeline] echo
流水线成功后,要做的事情
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐