sor*_*rin 118 groovy jenkins jenkins-workflow jenkins-pipeline
如何从内部触发另一个作业的构建Jenkinsfile?
我假设这个工作是同一个github组织下的另一个存储库,一个已经有自己的Jenkins文件.
我也想在分支名称为master时执行此操作,因为触发任何本地分支的下游构建没有意义.
更新:
stage 'test-downstream'
node {
def job = build job: 'some-downtream-job-name'
}
Run Code Online (Sandbox Code Playgroud)
仍然,执行时我得到一个错误
找不到名为some-downtream-job-name的参数化作业
我确信这个工作存在于jenkins中,并且与当前工作文件夹在同一组织文件夹下.这是另一项有自己的工作Jenkinsfile.
请注意,此问题特定于GitHub组织插件,该插件可从GitHub组织自动创建和维护每个存储库和分支的作业.
Jes*_*ick 121
首先,将build步骤包含在内是浪费执行程序槽node.您的上游执行者将无缘无故地闲置.
其次,从multibranch项目中,您可以使用环境变量BRANCH_NAME使逻辑以当前分支为条件.
第三,该job参数采用绝对或相对的作业名称.如果您给出一个没有任何路径限定的名称,那么它将引用同一文件夹中的另一个作业,在多分支项目的情况下,这将意味着同一个存储库的另一个分支.
因此,你打算写的可能是
if (env.BRANCH_NAME == 'master') {
build '../other-repo/master'
}
Run Code Online (Sandbox Code Playgroud)
小智 105
除了上面提到的答案之外:我想通过传递给第二个管道的简单参数开始工作,并在https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow上找到答案.
所以我用过:
stage ('Starting ART job') {
build job: 'RunArtInTest', parameters: [[$class: 'StringParameterValue', name: 'systemname', value: systemname]]
}
Run Code Online (Sandbox Code Playgroud)
小智 22
build管道中的命令用于触发jenkins中的其他作业.
该工作必须存在于Jenkins中并且可以进行参数化.至于分支,我想你可以从git中读取它
您可以使用Jenkins Pipeline中的build job步骤(最低Jenkins要求:2.130)。
这是该build步骤的完整API :https : //jenkins.io/doc/pipeline/steps/pipeline-build-step/
使用方法build:
job:要构建的下游作业的名称。可能是另一项Pipeline工作,但更常见的是自由泳或其他项目。
../sister-folder/downstream /top-level-folder/nested-folder/downstream在我公司,我们的许多分支都包含“ /”。您必须将“ /”的任何实例替换为“%2F”(显示在作业的URL中)。
在此示例中,我们使用相对路径
stage('Trigger Branch Build') {
steps {
script {
echo "Triggering job for branch ${env.BRANCH_NAME}"
BRANCH_TO_TAG=env.BRANCH_NAME.replace("/","%2F")
build job: "../my-relative-job/${BRANCH_TO_TAG}", wait: false
}
}
}
Run Code Online (Sandbox Code Playgroud)
build job: 'your-job-name',
parameters: [
string(name: 'passed_build_number_param', value: String.valueOf(BUILD_NUMBER)),
string(name: 'complex_param', value: 'prefix-' + String.valueOf(BUILD_NUMBER))
]
Run Code Online (Sandbox Code Playgroud)
资料来源:https : //jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/
有关并行的更多信息,请参见:https : //jenkins.io/doc/book/pipeline/syntax/#parallel
stage ('Trigger Builds In Parallel') {
steps {
// Freestyle build trigger calls a list of jobs
// Pipeline build() step only calls one job
// To run all three jobs in parallel, we use "parallel" step
// https://jenkins.io/doc/pipeline/examples/#jobs-in-parallel
parallel (
linux: {
build job: 'full-build-linux', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)]
},
mac: {
build job: 'full-build-mac', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)]
},
windows: {
build job: 'full-build-windows', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)]
},
failFast: false)
}
}
Run Code Online (Sandbox Code Playgroud)
或者:
stage('Build A and B') {
failFast true
parallel {
stage('Build A') {
steps {
build job: "/project/A/${env.BRANCH}", wait: true
}
}
stage('Build B') {
steps {
build job: "/project/B/${env.BRANCH}", wait: true
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
为该任务使用构建作业插件,以便从 jenkins 文件触发其他作业。您可以向执行添加各种逻辑,例如并行、节点和代理选项以及用于触发外部作业的步骤。我为此提供了一些易于阅读的食谱示例。
1. 使用条件示例从 jenkins 文件触发外部作业的示例:
if (env.BRANCH_NAME == 'master') {
build job:'exactJobName' , parameters:[
string(name: 'keyNameOfParam1',value: 'valueOfParam1')
booleanParam(name: 'keyNameOfParam2',value:'valueOfParam2')
]
}
Run Code Online (Sandbox Code Playgroud)
2.example 使用条件从 jenkins 文件触发多个作业示例:
def jobs =[
'job1Title'{
if (env.BRANCH_NAME == 'master') {
build job:'exactJobName' , parameters:[
string(name: 'keyNameOfParam1',value: 'valueNameOfParam1')
booleanParam(name: 'keyNameOfParam2',value:'valueNameOfParam2')
]
}
},
'job2Title'{
if (env.GIT_COMMIT == 'someCommitHashToPerformAdditionalTest') {
build job:'exactJobName' , parameters:[
string(name: 'keyNameOfParam3',value: 'valueOfParam3')
booleanParam(name: 'keyNameOfParam4',value:'valueNameOfParam4')
booleanParam(name: 'keyNameOfParam5',value:'valueNameOfParam5')
]
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
175991 次 |
| 最近记录: |