Jenkins-将Artifactory Url传递给升级的构建插件

Jenkins-将Artifactory Url传递给升级的构建插件,jenkins,artifactory,promoted-builds,Jenkins,Artifactory,Promoted Builds,tl;博士: 我有一份詹金斯的工作。我想使用升级的构建插件调用第二个作业(作业2)。作业#2已参数化,需要由作业#1生成的人工URL-如何将参数从作业#1传递到作业#2?使用Approval参数似乎不起作用,因为该参数由环境变量组成。我只是想在Job#1中创建一个环境变量,然后将其作为参数传递给Job#2-肯定有办法做到这一点吗 用例: 我有一份Jenkins的工作,将工件上传到artifactory。我试图使用升级的构建插件触发第二个作业,该作业将artifactoryurl作为参数。但是,

tl;博士:

我有一份詹金斯的工作。我想使用升级的构建插件调用第二个作业(作业2)。作业#2已参数化,需要由作业#1生成的人工URL-如何将参数从作业#1传递到作业#2?使用Approval参数似乎不起作用,因为该参数由环境变量组成。我只是想在Job#1中创建一个环境变量,然后将其作为参数传递给Job#2-肯定有办法做到这一点吗


用例:


我有一份Jenkins的工作,将工件上传到artifactory。我试图使用升级的构建插件触发第二个作业,该作业将artifactoryurl作为参数。但是,我似乎找不到任何方法将artifactory URL传递给它-在作业本身中,我从$DEPLOY\u URL/$DEPLOY\u URL-$BUILD\u ID.tar.gz创建URL-但是,当升级脚本运行时,$BUILD\u ID具有不同的值,因为从技术上讲,升级发生在不同的作业中(据我所知,插件的工作方式是创建一个处理构建促销的小型作业,它们有自己的编号)。我尝试将完整URL保存到shell脚本中名为$ARTIFACTORY\u URL的变量中,但同样,升级作业似乎没有访问权限。我如何将变量从Jenkins作业传递到升级作业?

在构建中,您可以添加一个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
#为升级步骤创建属性文件

cat>$WORKSPACE/artifactory.properties我开发了一个解决方案,解决了Adam Reid解决方案的局限性

在作业1中:

a、 添加构建步骤“执行shell”(Adam的解决方案):

在作业2中:

a、 添加生成步骤“从另一个项目复制工件”,包括:

“项目名称”=$PROMOTED\u JOB\u name

“哪个生成”=特定生成

“内部版本号”=$PROMOTED\u编号

“Artifacts”=artifactory.properties

b、 使用添加生成步骤“注入环境变量”


“Properties File Path”=artifactory.Properties

谢谢Adam。此解决方案适用于用例。我发现此解决方案在我的案例中存在的限制是,新构建完成后,artifactory.Properties文件就会被覆盖,url对于以前的构建无效。我的用例是能够部署任何构建不是最新的。
# 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
PROMOTED_JOB_NAME=${PROMOTED_JOB_NAME}
PROMOTED_NUMBER=${PROMOTED_NUMBER}