在多分支管道中调用作业
Calling a job in a Multi Branch pipeline
背景
我想在 Jenkins 中创建一个非常简单的管道。例如:
- 第 1 阶段:使用 maven 构建
- 第 2 阶段:构建 docker 图像
在我项目的根目录中,我有以下 Jenkins 文件:
stage 'build'
node {
def branch = env.BRANCH_NAME
build job: 'Maven job', parameters: [[$class: 'StringParameterValue', name: 'BRANCH_TO_BUILD', value: branch], [$class: 'StringParameterValue', name: 'MAJOR_VERSION_NUMBER', value: '1.0']]
}
stage 'Docker image'
node{
echo 'TODO://Get jar file from previous job and build Docker image'
}
Maven Job
作业将创建一个 jar 文件,我想在下一阶段使用它来构建我的 docker 映像。
我使用外部作业来构建我的项目的原因是因为我正在使用 JFrog Artifactory 并且我希望我的所有依赖项都通过 Artfifactory 解决。
documentation for the Artifactory Jenkins plugin 状态:
The current plugin version does not include pipeline DSL for Maven and Gradle builds, but this will become available soon.
如果我使用 Maven 从 Groovy 脚本直接构建项目,它不会解析来自 Artficatory 的依赖项,这不是我想要的。
我安装了 Copy Artifact
插件,我的 Maven Job
在构建结束时归档了 jar 文件。
问题
从 Jenkinsfile
开始,如何从我刚刚调用的作业访问存档的 jar 文件?
您可以使用 stash
选项:
stash excludes: 'files_i_dont_want', includes: 'files_i_want', name: 'my_custom_name'
unstash 'my_custom_name'
示例:
存储一些文件:https://github.com/jenkins-infra/jenkins.io/blob/master/Jenkinsfile#L62
取消隐藏一些文件:https://github.com/lordofthejars/starwars/blob/master/Jenkinsfile#L44
另一种选择是使用 Copy Artifacts 插件:
step([$class: 'CopyArtifact', excludes: 'do_not_copy.jar', filter: 'copy_this.jar', fingerprintArtifacts: true, projectName: 'Maven Job', target: 'target_dir'])
你试过了吗?
希望对您有所帮助!
背景
我想在 Jenkins 中创建一个非常简单的管道。例如:
- 第 1 阶段:使用 maven 构建
- 第 2 阶段:构建 docker 图像
在我项目的根目录中,我有以下 Jenkins 文件:
stage 'build'
node {
def branch = env.BRANCH_NAME
build job: 'Maven job', parameters: [[$class: 'StringParameterValue', name: 'BRANCH_TO_BUILD', value: branch], [$class: 'StringParameterValue', name: 'MAJOR_VERSION_NUMBER', value: '1.0']]
}
stage 'Docker image'
node{
echo 'TODO://Get jar file from previous job and build Docker image'
}
Maven Job
作业将创建一个 jar 文件,我想在下一阶段使用它来构建我的 docker 映像。
我使用外部作业来构建我的项目的原因是因为我正在使用 JFrog Artifactory 并且我希望我的所有依赖项都通过 Artfifactory 解决。
documentation for the Artifactory Jenkins plugin 状态:
The current plugin version does not include pipeline DSL for Maven and Gradle builds, but this will become available soon.
如果我使用 Maven 从 Groovy 脚本直接构建项目,它不会解析来自 Artficatory 的依赖项,这不是我想要的。
我安装了 Copy Artifact
插件,我的 Maven Job
在构建结束时归档了 jar 文件。
问题
从 Jenkinsfile
开始,如何从我刚刚调用的作业访问存档的 jar 文件?
您可以使用 stash
选项:
stash excludes: 'files_i_dont_want', includes: 'files_i_want', name: 'my_custom_name'
unstash 'my_custom_name'
示例: 存储一些文件:https://github.com/jenkins-infra/jenkins.io/blob/master/Jenkinsfile#L62 取消隐藏一些文件:https://github.com/lordofthejars/starwars/blob/master/Jenkinsfile#L44
另一种选择是使用 Copy Artifacts 插件:
step([$class: 'CopyArtifact', excludes: 'do_not_copy.jar', filter: 'copy_this.jar', fingerprintArtifacts: true, projectName: 'Maven Job', target: 'target_dir'])
你试过了吗?
希望对您有所帮助!