Jenkins groovy 管道 - 为另一个管道调用构建步骤

Posted

技术标签:

【中文标题】Jenkins groovy 管道 - 为另一个管道调用构建步骤【英文标题】:Jenkins groovy pipeline - calling build step for another pipeline 【发布时间】:2017-11-25 18:55:21 【问题描述】:

编辑:

根据 Andrew Bayer 的说法,您不应该将声明性管道注入其他人。将来可能会支持它,但可能根本不会支持。


我目前正在尝试在管道中启动管道,但我想知道我需要做什么才能使其工作。 jenkins 网页上的文档说,如果新作业或管道与第一个作业位于同一文件夹中,则可以从直接名称或绝对路径调用它。我已经尝试了所有不同的方法,目前我正在尝试一个文件的绝对路径,我刚刚检查过一秒钟前是否存在,但它说它不存在。

我想知道将不同管道连接在一起的正确方法是什么。

steps 
    echo "hello $env.WORKSPACE"
    sh "ls $env.WORKSPACE"
    sh "ls $env.WORKSPACE/jenkins"
    build(job: "$env.WORKSPACE/jenkins/css-core-pipeline", parameters: [[$class: 'StringParameterValue', name: 'param1', value: "$pass1" ]])
  

[管道]回显

你好 /home/jenkins/workspace/hellopipeline

[管道] sh

[hellopipeline] 运行 shell 脚本

.+ ls /home/jenkins/workspace/hellopipeline

README.md

.

.

.

詹金斯

[管道] sh

[hellopipeline] 运行 shell 脚本

.+ ls /home/jenkins/workspace/hellopipeline/jenkins

css-ce-管道

css-core-pipeline

css-dev-pipeline

css-prod-管道

manual.md

.

.

.

错误:找不到名为 /home/jenkins/workspace/hellopipeline/jenkins/css-core-pipeline 的项目

已完成:失败

【问题讨论】:

我想你要找的是 FrankIJ 对这个问题的回答:***.com/questions/36306883/… How can I trigger another job from a jenkins pipeline (jenkinsfile) with GitHub Org Plugin?的可能重复 问题是我使用的是声明性管道,你正在为 groovy 管道链接事物 【参考方案1】:

作业名不带前缀就足够了。

build(job: "css-core-pipeline", parameters: [[$class: 'StringParameterValue', name: 'param1', value: "$pass1" ]])

如果这不起作用,您可以使用 sn-p 生成器获取有效的步骤 sn-p。打开管道配置 -> 管道语法 -> 片段生成器 -> 选择构建步骤 -> 填写字段(作业名称将自动完成)

【讨论】:

【参考方案2】:

对我有用的是我没有正确地调整斜线,所以我不得不像这样替换jobname/feature/my-branch-name

        stage('Calls another pipeline') 
            steps 
                build job: 'jobname/feature%2Fmy-branch-name', parameters: [
                    string(name: 'MY_VAR', value: 'my_value')
                ],  propagate: true, wait: true

            
        

【讨论】:

以上是关于Jenkins groovy 管道 - 为另一个管道调用构建步骤的主要内容,如果未能解决你的问题,请参考以下文章

如何在同一个 Jenkins 节点中加载另一个 groovy 脚本?

Groovy-Jenkins管道-Groovy CPS不会通过.eachLine方法

序言中不允许内容,但序言在运行时可以吗? Groovy,Jenkins,Java,管道,XML [重复]

Jenkins CI 管道脚本不允许使用方法 groovy.lang.GroovyObject

如何在 Jenkins 声明式管道中创建方法?

如何在 Jenkins Groovy 中设置位置参数