Jenkins - 将Artifactory Url传递给Promoted Build Plugin

时间:2015-07-14 22:03:05

标签: jenkins artifactory promoted-builds

the tl; dr:

我有詹金斯的工作(工作#1)。我想使用Promoted Build Plugin(Job#2)调用第二个作业。作业#2已参数化,需要Job#1生成的工件URL - 如何将作业#1中的参数传递给作业#2?使用Approval参数似乎不起作用,因为此参数由环境变量组成。我真的只想在Job#1中创建一个环境变量,然后将它作为param传递给Job#2 - 当然有办法做到这一点吗?

用例:

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

2 个答案:

答案 0 :(得分: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

然后在升级步骤中,在其他项目操作中添加触发器参数化构建,设置要触发的作业,然后在添加参数中选择属性中的参数文件并输入属性文件的名称。这应该提供触发作业所需的参数。

答案 1 :(得分:1)

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

在工作1中:

一个。添加构建步骤&#39;执行shell&#39; (亚当的解决方案):

# 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

湾添加构建后的操作&#39;存档工件&#39;用:

&#39;要存档的文件&#39; = artifactory.properties

℃。在其他项目的&#39; Trigger / call buid中&#39;促销,添加&#39;预定义参数&#39;用:

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

在工作2中:

一个。添加构建步骤从另一个项目中复制工件&#39;用:

&#39;项目名称&#39; = $ PROMOTED_JOB_NAME

&#39;构建&#39; =特定构建

&#39;内部版本号码&#39; = $ PROMOTED_NUMBER

&#39;工件&#39; = artifactory.properties

湾添加构建步骤&#39;注入环境变量&#39;与

&#39;属性文件路径&#39; = artifactory.properties