当前位置: 首页 > 面试题库 >

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

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

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


问题答案:

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

  • 请勿使用 永久链接指定
  • 使用 特定版本 并将版本号设置为${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/被无法识别的特殊固定链接之一,拷贝从而将失败。



 类似资料:
  • 我有一个詹金斯管道,负责大约5个阶段(构建和几个不同的测试)。我正在从Jenkins1.xx(没有管道)迁移到Jenkins2,我希望尽可能地复制我的过程。我在J2上设置的管道作业处理的一切都完全相同,除了使用JenkinsFile。唯一的问题是,管道插件似乎不支持特定构建的推广,就像你可以做的自由式工作一样。有人找到办法了吗?

  • 问题内容: 我从Jenkins的构建目录中删除了旧的构建文件夹,希望将它们从UI中删除,但是不幸的是,这些构建目录不见了,它们的UI链接仍然存在。我现在有两个问题: 1)如何摆脱UI中已失效的链接? 2)如何从cli中删除旧版本并将其反映在UI中? 问题答案: 您必须重新启动Jenkins或重新加载数据,以使UI与后端保持一致。没有别的办法了。 如果可以访问“ Manage Jenkins”菜单,

  • 问题内容: 我已经全局安装了gulp(npm install gulp -g)。但是我认为这是行不通的。当我在本地程序上进行gulp测试时,它工作正常。但是,当我在github(在Jenkins上)的同一个程序上进行gulp测试时,会出现以下错误。它不会识别gulp命令。有人能帮我吗?感谢詹金斯的错误: 但是在命令行中它运行良好。 问题答案: 为了知道您的gulp在哪里,您应该全局(对所有用户)将

  • 我删除旧的jenkins构建与其中的作业托管: 这些旧版本在作业页中仍然可见。如何用命令行删除它们? (在每个构建用户界面中没有删除按钮)

  • 有没有可能让詹金斯使用真正的浏览器而不是无头浏览器?我正在运行一些用TestNG编写的测试(使用Selenium webdriver)。当我运行testng时。在Eclipse中,浏览器启动并运行测试。但当我使用Jenkins并用maven运行测试时,它不会启动任何浏览器。

  • 问题内容: 我有一个.Jar文件,它将在运行时将数据加载到数据库中。我已经计划通过詹金斯来担任这项工作。当我在詹金斯执行作业时,它将成功运行.JAR。但是,请说作业中是否存在空指针异常,并且该异常未成功完成。即便如此,詹金斯仍然说工作已经“通过”。如果作业执行过程中出现问题,如何使作业失败? 问题答案: @Corey的解决方案很好。而且,如果您不想编写JUnit测试并在Jenkins中提供支持,则