小编典典

詹金斯(Jenkins):在升级版本中使用存档的工件

jenkins

我已将工件存档,作为构建的最后一步,它可以像这样使用: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脚本中指出其自身。

使用复制工件插件,我只能在升级过程中从其他内部版本复制工件,而无需这样做。


阅读 233

收藏
2020-07-25

共1个答案

小编典典

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

摘要

  • 请勿使用 永久链接指定
  • 使用 特定版本 并将版本号设置为${PROMOTED_NUMBER}

解决方案

先决条件

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

促销设置:

像往常一样使用名称和条件设置升级的版本。

在“操作”部分中,添加操作 “从另一个项目复制工件” ,然后设置这些值。

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

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

为什么要注意

复制工件

您可能现在知道,促销不应期望访问构建工作区的内容。它可能在另一台服务器上执行,并且可能根本无法访问任何工作空间,也无法访问旧版本或更新版本的工作空间。因此,需要将要使用的工件复制到当前工作空间。

这也是设置 目标值
的原因。该工作区可能会被其他构建或产品污染。将目标设置为${BUILD_TAG},通过创建升级过程唯一的文件夹来防止与工作空间中已有的文件发生任何冲突。

$ {PROMOTED_ *}个变量

当您声明正常的构建变量时,它指的是升级过程本身,但“升级的构建插件”会定义一些环境变量,而这些变量则指的是实际的构建。

固定链接

在Jenkins上下文中,永久链接仅指指向某种类型的最新版本或最新促销的特殊链接。这就是为什么您将始终获得最新版本的原因

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

2020-07-25