Jenkins:在推荐构建中使用存档工件

xer*_*raa 13 java deployment jenkins cloudbees

我已经将一个工件归档为构建的最后一步,它可以像这样:https://xxx.ci.cloudbees.com/job/xxx/52/artifact/target/xxx-1.2.1-SNAPSHOT -r8304-20130807-1507-app.zip

如何在促销过程中轻松访问工件?请注意,我需要访问特定的版本,而不是最新的成功版本.

升级过程的目标是将工件复制到S3,我们的部署作业将从中进一步处理它.因此,我可以将构建#52推广到开发(将其复制到特定的S3存储桶),稍后将构建#50推广到生产等等.

理想情况下,我可以在shell脚本中访问工件来重命名文件等.是否有环境变量来访问构建的存档工件,我找不到或应该如何完成?$BUILD_URL并且$JOB_URL已经特定于促销流程,并且不会在促销作业的shell脚本中指向构建本身.

使用复制工件插件,我只能复制促销过程中其他构建的工件,我不需要这样做.

Tob*_*ber 22

我相信我找到了解决方案.

摘要

  • 不要使用永久链接指定
  • 使用特定构建并设置内部版本号${PROMOTED_NUMBER}

解决方案

先决条件

  • 副本神器插件必须安装.
  • 存档您希望促销访问的工件
    • 构建后操作中添加操作存档工件并将文件设置为存档到您希望促销访问的内容.
  • 不要丢弃旧的文物
    • 在"作业配置"中,取消选择" 丢弃旧构建"或确保其设置将保留工件,只要您要升级构建即可.

促销设置:

像往常一样使用名称和标准设置升级版本.

在"操作"部分中,添加操作从其他项目复制工件,并设置这些值.

  • 项目名: ${PROMOTED_JOB_NAME}
  • 哪种构建:特定构建
  • 内部编号: ${PROMOTED_NUMBER}
  • 要复制的工件: path/to/your/artifacts/**
  • 目标: ${BUILD_TAG}

然后添加您真正想要执行的操作.例如,添加操作存档工件以保存工件.请记住在路径前加上${BUILD_TAG}例如${BUILD_TAG}/path/to/your/artifacts/**

关于原因的说明

复制工件

正如您现在可能知道的那样,促销不应期望访问构建工作区的内容.它可能在不同的服务器上执行,并且它可能根本不能访问任何工作空间或来自较旧或较新构建的工作空间.因此,需要将要使用的工件复制到当前工作空间.

这也是设置Target值的原因.工作区可能与其他构建或促销有关.${BUILD_TAG}通过创建促销过程特有的文件夹,将目标设置为防止与工作空间中已有文件发生冲突.

$ {PROMOTED_*}变量

正如您所说,正常构建变量是指促销过程本身,但是Promoted Build Plugin定义了一些引用实际构建的环境变量.

固定链接

在Jenkins上下文中,永久链接仅指向指向某种类型的最新版本或最新促销的特殊链接.这就是为什么你总能得到最新版本

在我的Jenkins版本中,下拉列表替换为文本框.编写URL以特定生成像http://jenkins/job/myjob/59/无法识别的特殊固定链接之一,拷贝从而将失败.


Jes*_*ick 5

您可以使用Copy Artifact插件.将其设置为从主项目中复制工件,并选择" 永久链接指定",其中永久链接为最新促销:此促销过程.

(请注意,由于促销配置在此处引用自身,因此您无法在一个步骤中添加此类促销:您必须在没有构建步骤的情况下添加促销,保存,然后返回并添加构建步骤.)