gpt4 book ai didi

java - 在多分支管道中调用作业

转载 作者:行者123 更新时间:2023-12-01 09:46:41 25 4
gpt4 key购买 nike

背景

我想在 Jenkins 中创建一个非常简单的管道。例如:

  • 第 1 阶段:使用 Maven 构建
  • 第 2 阶段:构建 Docker 镜像

在我的项目的根目录中,我有以下 Jenkinsfile:

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选项:

存储排除:“files_i_dont_want”,包括:“files_i_want”,名称:“my_custom_name”
取消隐藏“my_custom_name”

示例:隐藏一些文件:https://github.com/jenkins-infra/jenkins.io/blob/master/Jenkinsfile#L62取消存储一些文件:https://github.com/lordofthejars/starwars/blob/master/Jenkinsfile#L44

另一种选择是使用复制 Artifact 插件:

step([$class: 'CopyArtifact', 排除: 'do_not_copy.jar', 过滤器: 'copy_this.jar', FingerprintArtifacts: true, 项目名称: 'Maven Job', 目标: 'target_dir'])

你已经尝试过这个了吗?

希望这有帮助!

关于java - 在多分支管道中调用作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37945559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com