通过Jenkins内部版本号获取Artifactory工件

时间:2014-08-22 00:23:54

标签: maven jenkins artifactory

我正在调查Maven / Jenkins / Artifactory,作为CI /发布流程的可能解决方案。

我在Jenkins工作 - 称之为MYJOB - 为Artifactory构建和部署工件。现在,我想要另一个我可以手动运行的工作,它将从Artifactory复制MYJOB的特定构建的工件并将其置于某个地方(现在不是太困扰,但最终它将是另一个服务器)。

例如,假设build#123变为绿色,现在我的QA团队希望将构建的工件部署到他们的环境中进行进一步测试(这个想法是在整个测试过程中保持这个工件完好无损,然后再标记它可释放的)。我希望他们能够将“123”输入Jenkins作为工作参数,然后开始构建。

所以,我想我需要一个使用脚本来执行此操作的自由式作业。

我的问题是:如何将以前的MYJOB构建编号传递给作业,以便从神器中获取正确的工件?

欢迎实现我的目标的替代方法:)

2 个答案:

答案 0 :(得分:1)

所以我开始工作了。在定义名为' REQ_BUILD_NUMBER'的参数后,我将以下代码放在Jenkins Freestyle Build Configuration的Build Step部分中:

SOMETHING=$(curl "http://MYARTIFACTORYLOCATION/artifactory/api/search/prop?build.number=$REQ_BUILD_NUMBER"  | jq --raw-output '.results[0].uri')
echo $SOMETHING
SOMETHING_ELSE=$(curl $SOMETHING | jq --raw-output '.downloadUri')
echo $SOMETHING_ELSE
wget -N --directory-prefix=/var/lib/jenkins/artifacts/ $SOMETHING_ELSE

(注意:我几乎不能胜任shell脚本。我确信它可以以更好的方式完成)

编辑:这需要安装' jq'用于命令行。

答案 1 :(得分:0)

为第二个作业创建参数化构建。 QA团队可以在开始构建时输入内部版本号。此构建号将作为环境变量提供,可以在脚本中访问,然后可以从存储库中检索包。