0

tl;博士:

我有一份 Jenkins 工作(工作 #1)。我想使用Promoted Build Plugin(Job #2)调用第二份工作。作业 #2 已参数化,需要作业 #1 生成的人工 URL - 如何将参数从作业 #1 传递到作业 #2?使用批准参数似乎不起作用,因为此参数由环境变量组成。我实际上只是想在 Job #1 中创建一个环境变量,然后将其作为参数传递给 Job #2 - 肯定有办法做到这一点吗?


用例:

我有一个将工件上传到工件的 Jenkins 工作。我正在尝试使用Promoted Build Plugin 来触发将工件URL 作为参数的第二个作业。但是,我似乎找不到任何方法将工件 URL 传递给它 - 在作业本身中,我从 $DEPLOY_URL/$DEPLOY_URL-$BUILD_ID.tar.gz 创建 URL - 但是,当提升脚本运行时,$ BUILD_ID 具有不同的值,因为从技术上讲,提升发生在不同的工作中(据我所知,插件的工作方式是创建一个处理构建提升的小型迷你工作,并且它们有自己的编号)。我尝试将完整的 URL 保存到 shell 脚本中名为 $ARTIFACTORY_URL 的变量中,但同样,促销作业似乎无法访问它。如何将变量从我的 Jenkins 工作传递给提升工作?

4

2 回答 2

1

在您的构建中,您可以添加一个 shell 步骤,该步骤在工作区中创建一个属性文件,可以在升级时由参数化触发器拾取该文件。一个示例 shell 步骤可能如下所示:

# Create a properties file for the promotion step
cat > $WORKSPACE/artifactory.properties <<EOF
ARTIFACTORY_URL=$DEPLOY_URL/$DEPLOY_URL-$BUILD_ID.tar.gz
EOF

# Verify the properties file contents
cat ${WORKSPACE}/artifactory.properties

然后在升级步骤中添加一个Trigger parameterized build on other project action,设置要触发的作业,然后在Add parameters下选择Parameters from properties file并输入属性文件的名称。这应该提供触发作业所需的参数。

于 2016-07-13T18:48:41.897 回答
1

我致力于解决 Adam Reid 解决方案的局限性的解决方案。

在工作 1 中:

一个。添加构建步骤“执行外壳”(亚当的解决方案):

# Create a properties file for the promotion step
cat > $WORKSPACE/artifactory.properties <<EOF
ARTIFACTORY_URL=$DEPLOY_URL/$DEPLOY_URL-$BUILD_ID.tar.gz
EOF

# Verify the properties file contents
cat ${WORKSPACE}/artifactory.properties

湾。添加构建后操作“归档工件”:

'要存档的文件' = artifactory.properties

C。在促销的“触发/调用其他项目”中,添加“预定义参数”:

PROMOTED_JOB_NAME=${PROMOTED_JOB_NAME}
PROMOTED_NUMBER=${PROMOTED_NUMBER}

在工作 2 中:

一个。添加构建步骤“从另一个项目复制工件”:

'项目名称' = $PROMOTED_JOB_NAME

'哪个构建' = 特定构建

“内部版本号” = $PROMOTED_NUMBER

'工件' = artifactory.properties

湾。添加构建步骤“注入环境变量”

'属性文件路径' = artifactory.properties

于 2016-08-31T08:23:38.057 回答