我可以从另一个作业触发jenkins dsl pipelineJob吗?

jw5wzhpr  于 2023-03-07  发布在  Jenkins
关注(0)|答案(1)|浏览(162)

我有一个jenkinsdsl freestylejob,它轮询github repo并在检测到更改时触发。
我想在此freestyleJob中触发"管道"作业。是否可以?
我在web用户界面中看到我可以添加一个"后期构建"步骤来构建另一个项目,并指定我的管道。我在jenkins casc作业中实际上该如何编码呢?
我尝试了以下方法:

freeStyleJob('poll_scm_job') {
        scm {
            github('my-repo/test-jenkins', '*/main')
        }
        triggers {
            scm('H/2 * * * *')
        }
        steps {
            shell(readFileFromWorkspace('jobs/Myjob.groovy'))
        }
        postBuildSteps('SUCCESS') {
            shell("echo 'post build step'")
        }
    }

但是,这导致作业配置器失败,并显示错误:错误:(脚本,第19行)没有方法签名:javaposse. jobdsl. dsl. jobs. FreeStyleJob. postBuildSteps()适用于参数类型:(java. lang. String,脚本$_run_closure1$_closure7)值:[成功,脚本$_run_closure1$_closure7@6f249809]
我还尝试了以下类似的错误:

freeStyleJob('poll_scm_job') {
        scm {
            github('my-repo/test-jenkins', '*/main')
        }
        triggers {
            scm('H/2 * * * *')
        }
        steps {
            shell(readFileFromWorkspace('jobs/Myjob.groovy'))
            build(job: 'PostBuildJob')
        }
    }
9rbhqvlz

9rbhqvlz1#

我相信我已经弄明白了,至少在我的设置中,下面创建了成功调用我的管道的构建后步骤

freeStyleJob('poll_scm_job') {
        scm {
            github('my-repo/test-jenkins', '*/main')
        }
        triggers {
            scm('H/2 * * * *')
        }
        steps {
            shell(readFileFromWorkspace('scripts/test/myjob.sh'))
        }
        publishers {
            downstream('my-pipeline', 'SUCCESS')
        }
}

相关问题