我正在调查Maven / Jenkins / Artifactory,作为CI /发布流程的可能解决方案。
我在Jenkins工作 - 称之为MYJOB - 为Artifactory构建和部署工件。现在,我想要另一个我可以手动运行的工作,它将从Artifactory复制MYJOB的特定构建的工件并将其置于某个地方(现在不是太困扰,但最终它将是另一个服务器)。
例如,假设build#123变为绿色,现在我的QA团队希望将构建的工件部署到他们的环境中进行进一步测试(这个想法是在整个测试过程中保持这个工件完好无损,然后再标记它可释放的)。我希望他们能够将“123”输入Jenkins作为工作参数,然后开始构建。
所以,我想我需要一个使用脚本来执行此操作的自由式作业。
我的问题是:如何将以前的MYJOB构建编号传递给作业,以便从神器中获取正确的工件?
欢迎实现我的目标的替代方法:)
答案 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团队可以在开始构建时输入内部版本号。此构建号将作为环境变量提供,可以在脚本中访问,然后可以从存储库中检索包。