Jenkins Pipeline如何动态的并行任务


Jenkins Pipeline 有两种写法: Declarative 以及 Scripted,前一种使用了Jenkins基于Groovy实现的DSL,写起来相对有限制;后一种可以很好的在Jenkinsfile 中使用Groovy语句。 下面记录Scripted模式下常见的一些注意点:

1. 如何退出当前的build     a. 中断退出:             currentBuild.result = 'ABORTED'             echo "没有项目被选中"             return     b. 错误退出             error “错误信息”     c. 不稳定退出             unstable “信息”   2. 如何从一个Stage 传值到另一个:     env.PREVIOUSE_STAGE_VALUE = “” // 必须String     下一个Stage 直接使用 def accept = env.PREVIOUSE_STAGE_VALUE     或者:     定义一个全局变量   3. gitlab 如何获取指定分支后者版本的代码?     使用 checkout 功能,不用 git  功能   4. 如何切换目录     使用 dir 方法   5. 如何读取上一个Stage 存的文件:     def content  = readFile “path”   6. 如何提示用户输入:     def inputStr = input message: "select project" , ok : “确认”, parameters: [extendedChoice(description: 'select projects to be compiled', multiSelectDelimiter: ',', name: 'project_name', quoteValue: false, saveJSONParameterToFile: false, type: 'PT_CHECKBOX', value: "$choices", visibleItemCount: choices.size())]  

    def INPUT_PARAMS = input message: "输入配置", ok: '确认', parameters : [
text(defaultValue: "", description: '请提供Tag的名字', name: 'tag_name'),
text(defaultValue: "", description: '请提供Tag的描述', name: 'tag_desc'),
text(defaultValue: "${output_version}", description: '请设置版本,为空则不会打Tag', name: 'custom_versions')
]

    def custom_versions = INPUT_PARAMS.custom_versions

  7. 如何动态的并行任务:     def tasks = [:]  //定义一个用例保存task 的 map     tasks.”task name” = {一个闭包}       parallel tasks //并行所有task