pipeline 分为脚本式和声明式,相比于脚本式声明式更主流更强大一些。pipeline 自身有语法语句外还支持groovy 语法,groovy 是一个类似java 语言,更简洁,有各种数据结构,函数,流程控制语句以供使用。

Jenkins是使用Java实现的,所以在很早的时候就引入了groovy作为DSL,管理员可以使用groovy来实现一些自动化和高级的管理功能。因为groovy引擎已经集成到Jenkins,所以在pipeline一开始很自然就使用groovy来编写Jenkinsfile。但是groovy毕竟是一种语言,对于没有太多编程经验的小白这个学习曲线有点太陡峭。这个时候声明式的pipeline就出现了

声明式pipeline

pipeline {                  //所有的声明式Pipeline都必须包含 pipeline块中
   agent any                 //指定了流水线的执行节点(none 没有指定agent的时候默认。label 在指定标签上的节点上运行Pipeline。node 允许额外的选项)

//其他的一些指令
  environment                //指定一个键值对序列,该序列将被定义为所有步骤的环境变量,或者是特定于阶段的步骤,这取决于environment 指令在流水线的位置
                        //该指令支持一个特殊的方法 credentials() ,该方法可用于在Jenkins环境中通过标识符访问预定义的凭证。对于类型为 "Secret Text"的凭证,
                        // credentials() 将确保指定的环境变量包含秘密文本内容。  
  
  options                  //允许从流水线内部配置特定于流水线的选项。 流水线提供了许多这样的选项, 比如buildDiscarder,但也可以由插件提供, 比如 timestamps。
  triggers                  //触发器,有很多种,比如定时,webhook 等等
  
  tool                    //获取通过自动安装或手动放置工具的环境变量。支持maven/jdk/gradle。工具的名称必须在系统设置->全局工具配置中定义
  
  input                    //用户在执行各个阶段的时候,提供的一个交互方法,例如由人工确认是否继续进行。
  
  when                    //允许流水线根据给定的条件决定是否执行阶段。必须包含至少一个条件。 如果when 指令包含多个条件, 所有的子条件必须返回True,
                         //阶段才能执行。这与子条件在 allOf 条件下嵌套的情况相同。when 的条件可以使environment 或者分支等。
  parameters                   //就是参数化构建功能,有字符串、布尔值、多选等等web 界面存在的都可在此处相应方式实现
  parallel                    //声明式流水线的阶段可以在他们内部声明多隔嵌套阶段, 它们将并行执行。
  stages {                  //stages 里面可以定义多个stage是发版的主要操作区域
        stage('Example Build') {
            steps {              //stage 里面必须有steps{}里面可以通过 sh "xxx"  执行shell语句等操作是实际执行的操作步骤
                echo 'Hello World'
          sh  "service xxx stop"
            }
        }
        stage('Example Deploy') {
            when {
                branch 'production'
                environment name: 'DEPLOY_TO', value: 'production'
            }
            steps {
                echo 'Deploying'
          script {          //声明式不支持一些shell 语法,可以通过script{} 嵌入脚本式里面的一些语法例如for 循环、if 语句等
                      def browsers = ['chrome', 'firefox']
                      for (int i = 0; i < browsers.size(); ++i) {
                          echo "Testing the ${browsers[i]} browser"
                      }
          }
     } 
  post {                      //post是发版后的一些操作,根据发版结果做一些操作,主要条件有always/changed/failure/success
        always { 
            echo 'I will always say Hello again!'
        }
}
View Code

相关文章:

  • 2022-01-23
  • 2022-12-23
  • 2021-08-18
  • 2021-07-01
  • 2021-06-27
  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
猜你喜欢
  • 2021-07-20
  • 2022-01-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
  • 2021-06-18
相关资源
相似解决方案