Jenkins pipeline vs Groovy DSL

这篇具有很好参考价值的文章主要介绍了Jenkins pipeline vs Groovy DSL。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Declarative Pipeline

  • agent
  • post In the top-level pipeline block and each stage block.
    • post-condition Conditions
      • always, changed, fixed, regression, aborted, failure, success, unstable, unsuccessful, and cleanup
  • Supported Credentials Type
    • Secret Text
    • Secret File
    • Username and password
    • SSH with Private Key
  • when
    • Inside a stage directive
    • Built-in Conditions
      • branch ANT style path glob match
      • buildingTag
      • changelog
      • changeset
      • changeRequest
      • environment
      • equals
      • expression
      • tag
      • not
      • allOf
      • anyOf
      • triggeredBy
        • Execute the stage when the current build has been triggered by the param given
          • when { triggeredBy 'SCMTrigger' }
          • when { triggeredBy 'TimerTrigger' }
          • when { triggeredBy 'BuildUpstreamCause' }
          • when { triggeredBy cause: "UserIdCause", detail: "vlinde" }
  • matrix
    • the matrix section must include an axes section and a stages section.
    • axes
      // One-axis with 3 cells
      matrix {
        axes {
            axis {
                name 'PLATFORM'
                values 'linux', 'mac', 'windows'
            }
        }
        // ...
      }
      
      // Two-axis with 12 cells (three by four)
      matrix {
        axes {
            axis {
                name 'PLATFORM'
                values 'linux', 'mac', 'windows'
            }
            axis {
                name 'BROWSER'
                values 'chrome', 'edge', 'firefox', 'safari'
            }
        }
        // ...
      }
      
      // Three-axis matrix with 24 cells (three by four by two)
      matrix {
        axes {
            axis {
                name 'PLATFORM'
                values 'linux', 'mac', 'windows'
            }
            axis {
                name 'BROWSER'
                values 'chrome', 'edge', 'firefox', 'safari'
            }
            axis {
                name 'ARCHITECTURE'
                values '32-bit', '64-bit'
            }
        }
        // ...
      }
      
    • stages
      • One-axis with 3 cells, each cell runs three stages - “build”, “test”, and “deploy”
        matrix {
            axes {
                axis {
                    name 'PLATFORM'
                    values 'linux', 'mac', 'windows'
                }
            }
            stages {
                stage('build') {
                    // ...
                }
                stage('test') {
                    // ...
                }
                stage('deploy') {
                    // ...
                }
            }
        }
        
      • Two-axis with 12 cells (three by four)
        matrix {
            axes {
                axis {
                    name 'PLATFORM'
                    values 'linux', 'mac', 'windows'
                }
                axis {
                    name 'BROWSER'
                    values 'chrome', 'edge', 'firefox', 'safari'
                }
            }
            stages {
                stage('build-and-test') {
                    // ...
                }
            }
        }
        
      • excludes (optional)
      • Three-axis matrix with 24 cells, exclude ‘32-bit, mac’ (4 cells excluded)
        matrix {
          axes {
              axis {
                  name 'PLATFORM'
                  values 'linux', 'mac', 'windows'
              }
              axis {
                  name 'BROWSER'
                  values 'chrome', 'edge', 'firefox', 'safari'
              }
              axis {
                  name 'ARCHITECTURE'
                  values '32-bit', '64-bit'
              }
          }
          excludes {
              exclude {
                  axis {
                      name 'PLATFORM'
                      values 'mac'
                  }
                  axis {
                      name 'ARCHITECTURE'
                      values '32-bit'
                  }
              }
          }
          // ...
        }
        
    • Matrix cell-level directives (optional)
      • agent,environment,input,opitons,post,tools,when

Jenkins core

  • archiveArtifacts
  • $class

Command chains for groovy DSL

pipeline 本质是一个多层嵌套的闭包,文章来源地址https://www.toymoban.com/news/detail-532839.html

  • using a command chain based DSL
    // equivalent to: turn(left).then(right)
    turn left then right
    
    // equivalent to: take(2.pills).of(chloroquinine).after(6.hours)
    take 2.pills of chloroquinine after 6.hours
    
    // equivalent to: paint(wall).with(red, green).and(yellow)
    paint wall with red, green and yellow
    
    // with named parameters too
    // equivalent to: check(that: margarita).tastes(good)
    check that: margarita tastes good
    
    // with closures as parameters
    // equivalent to: given({}).when({}).then({})
    given { } when { } then { }
    
    // equivalent to: select(all).unique().from(names)
    select all unique() from names
    
    // equivalent to: take(3).cookies
    // and also this: take(3).getCookies()
    take 3 cookies
    
  • illustrate creating such a DSL
    show = { println it }
    square_root = { Math.sqrt(it) }
    
    def please(action) {
      [the: { what ->
        [of: { n -> action(what(n)) }]
      }]
    }
    
    // equivalent to: please(show).the(square_root).of(100)
    please show the square_root of 100
    // ==> 10.0
    
  • it 是 groovy 闭包中特殊参数

到了这里,关于Jenkins pipeline vs Groovy DSL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • jenkins pipeline(脚本式)

    Groovy中的变量可以通过两种方式定义 - 使用数据类型(包括byte、short、int、long、float、double、char、Boolean和String )的本地语法,或者使用def 注意:使用数据类型的本地语法后期不能更改成其他类型 Goovy中的变量作用域 绑定域:脚本内的全局作用域,相当于该脚本对象

    2024年02月08日
    浏览(57)
  • 【Jenkins】Pipeline - 设置超时时间

    默认时间单位为 MINUTES ,如果其他时间单位,则使用 unit 参数:SECONDS、MINUTES和HOURS 可以在不同级别(每个整体管道或每个阶段)使用options指定超时 在上面的示例中,在阶段超时之后,流水线中止,并显示以下消息: Sending interrupt signal to process Cancelling nested steps due to timeout 如果

    2024年02月17日
    浏览(45)
  • 【Jenkins】pipeline流水线

    流水线既能作为任务的本身,也能作为jenkinsfile,使用流水线可以让我们的任务从ui手动操作,转换为代码化,像docker的dockerfile一样,从shell命令到配置文件,更适合大型项目,可以让团队其他开发者同事参与进来,同时也可以编辑开发jenkinswebui不能完成的复杂的构建逻辑,作

    2024年02月09日
    浏览(75)
  • Jenkins ——pipeline入门教程

    一、什么是pipeline 什么是Pipeline?简单来说,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程(实用场景:将多个Jenkins构建任务轻松集成)。   简而言之,就是一套工作流框架,将原本独

    2024年02月09日
    浏览(45)
  • jenkins Pipeline接入mysql

    jenkin pipeline进化过程如下: Jenkins Pipeline 脚本优化实践:从繁琐到简洁 Jenkins Pipeline脚本优化:为Kubernetes应用部署增加状态检测 使用Jenkins和单个模板部署多个Kubernetes组件。有一些需要动态设置的配置不想在jenkins中配置,想将这些变量存储在mysql 这种数据库中,通过动态修改

    2024年04月15日
    浏览(41)
  • jenkins-pipeline语法详解

    pipeline支持两种语法形式 1. 声明式 1.1特点: 最外层必须由pipline{ //do something }来进行包裹 不需要分号作为分隔符,每个语句必须在一行内 不能直接使用groovy语句(例如循环判断等),需要被script {}包裹 1.2 语句示例 1.3 声明式核心概念 pipeline 2.agent 3.stages 4.stage 5.steps 6.post 1

    2023年04月19日
    浏览(35)
  • jenkins_Pipeline使用测试

    安装jenkins 安装声明式插件Pipeline:Declarative 创建pipeline流水线 样例 1.1 agent(代理) 1.2 stages(阶段) 包含一系列一个或多个 stage 指令,建议 stages 至少包含一个 stage 指令用于连续交付过程的每个离散部分,比如构建,测试,和部署。 1.3 post 定义一个或多个steps,这些阶段根据流水线或阶段

    2024年04月11日
    浏览(37)
  • Jenkins pipeline中的全局变量

    1.再environment使用key=value形式定义变量 2.从参数中获取变量值

    2024年02月07日
    浏览(35)
  • Jenkins-Pipeline基本使用

    使用Groovy语法 Pipeline 是Jenkins 2.X核心特性,帮助Jenkins实现从CI到CD与DevOps的转变 Pipeline 简而言之,就是一套运行于Jenkins上的工作流框架,将原本独立 运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流 程编排与可视化 1、声明式(仅在2.5版本后支持)

    2023年04月22日
    浏览(52)
  • Jenkins Pipeline的hasProperty函数

    用于判断某个参数或者字段是否存在。 例子一 出现的场景: 我想通过参数配置进来一个选择框列表,根据选择的情况做不同的处理;在过程中,我发首次构建Job的时候会报错误。错误如下: 原因是:可能是因为首次构建, parameters 中的 extendedChoice 还没有初始化好导致本次

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包