我已经将一个工件存档为构建的最后一步,它可以像这样:https://xxx.ci.cloudbees.com/job/xxx/52/artifact/target/xxx-1.2.1-SNAPSHOT-r8304-20130807-1507-app.zip
如何在我的推广过程中轻松地访问工件?请注意,我需要访问特定的构建,而不是最近成功的一个。
升级过程的目标是将工件复制到S3,我们的部署作业将在那里进一步处理它。因此,我可能会将build #52推广到开发(将其复制到特定的S3桶中),稍后再将build #50推广到生产,等等。
理想情况下,我可以访问shell脚本中的工件来重命名文件等等。是否有一个环境变量来访问已存档的构建工件,但我无法找到,或者应该如何完成?$BUILD_URL和$JOB_URL已经是特定于升级过程的,并且没有在提升任务上指向shell脚本中的构建本身。
使用复制工件插件,我只能在推广过程中从其他构建复制工件,这是我不需要做的。
发布于 2014-11-26 12:31:25
我相信我已经找到了解决办法。
摘要
${PROMOTED_NUMBER}解决方案
先决条件
升级设置:
与往常一样,使用名称和标准设置您的升迁生成。
在Actions部分中,添加动作复制来自其他项目的工件,并设置这些值。
${PROMOTED_JOB_NAME}${PROMOTED_NUMBER}path/to/your/artifacts/**${BUILD_TAG}然后添加你真正想做的动作。例如,添加动作存档工件以保存工件。记住在你的路径前加上${BUILD_TAG}例如${BUILD_TAG}/path/to/your/artifacts/**
关于为什么
复制伪影
正如您现在可能知道的那样,升级不应该期望访问构建的工作区的内容。它可能在另一台服务器上执行,而且它可能完全没有工作空间,也可以访问来自旧版本或更新版本的工作区。因此,需要将要使用的工件复制到当前工作区。
这也是设置目标值的原因。工作区可能会与其他构建或升级相混淆。将目标设置为${BUILD_TAG}可防止与工作区中已经存在的文件发生冲突,方法是创建晋升过程特有的文件夹。
${PROMOTED_*}变量
正如您所述,普通的构建变量引用了升级过程本身,但是升级的构建插件定义了一些引用实际构建的环境变量。
Permalinks
在Jenkins上下文中,坡麦芽糖仅指指向某些类型的最新版本或最新升级的特殊链接。这就是为什么你总是会得到最新的版本。
在我的Jenkins版本中,下拉列表被一个文本框所取代。将URL写入特定的构建(如http://jenkins/job/myjob/59/ )是未获承认作为特殊的permalinks之一,以及复制就会失败。
发布于 2013-08-07 21:00:34
你可以使用复制人工合成插件。将其设置为从主项目复制工件,并选择permalink指定的permalink,其中permalink是最新的升级:此升级过程。
(请注意,由于升级配置在这里引用了自身,所以不能在一个步骤中添加这样的升级:必须添加没有生成步骤的升级,保存,然后返回并添加生成步骤。)
发布于 2014-11-06 19:36:03
顺便说一句,您可能会发现,工作流系统使定制这种管道逻辑变得更容易,而不需要使用升级的构建或复制Artifact。
https://stackoverflow.com/questions/18105218
复制相似问题