gpt4 book ai didi

triggers - jenkins 使用共享工作区进行持续交付

转载 作者:行者123 更新时间:2023-12-04 09:11:15 26 4
gpt4 key购买 nike

背景:
我们有一个 Jenkins 工作 (Production) 每天晚上构建一个可交付成果。我们还有另一项工作 (ProductionPush),第二天通过专有协议(protocol)将可交付成果推送到生产机器。这是因为一些生产机器只在白天的特定时间可用(这也让我们有机会修复任何最后一分钟的构建中断)。 ProductionPush需要访问 Production 构建的可交付成果工作(因此它需要访问同一个工作区)。我们有多个节点和并发构建(因此是不可预测的工作空间),并且不希望将作业绑定(bind)到固定的节点/工作空间,因为资源有些有限。
问题:

  • 如何确保两个作业共享相同的工作空间并确保 ProductionPush仅当 Production 时在第二天的固定时间运行成功 - 没有修复两个作业以耗尽同一个节点/工作区?我知道Parameterized Trigger Plugin可能会有所帮助,但它似乎没有时间延迟能力,而且 12 小时对于安静的时期来说似乎太长了。
  • 共享工作空间是个坏主意吗?
  • 最佳答案

    答案 2:是的,共享工作空间是个坏主意。有文件锁定的可能性。存在工作空间被清除的问题。只是不要这样做...

    答案1:您需要的是存档 构建的工件。这样,特定构建的工件(按构建号)将始终可用,无论另一个构建是否正在运行,或者工作空间处于什么状态

    归档工件

  • 在您的构建作业中,在 下构建后操作 , 选择 归档工件
  • 指定要归档的工件(您可以使用以下组合)
    a) 您可以归档所有:*.*b) 您可以使用通配符归档特定文件:/path/to/file_version*.zipc) 您可以忽略中间目录,例如:**/file_version*.zip
  • 为了避免许多工件的存储问题,您可以在配置顶部选择 丢弃旧版本 , 点击高级 按钮,然后使用 Days 来保存工件和 Max # of builds 来保存工件。请注意,这两个设置不控制实际构建的保留时间(其他设置控制)

  • 从 Jenkins 访问工件
  • 在构建历史记录中,选择您想要的任何以前的构建。
  • 除了 SCM 更改和修订数据,您现在还有一个 构建工件 链接,您将在该链接下找到 的所有工件那个特别的 build 。
  • 您还可以使用 Jenkins 的永久链接访问它们,例如http://JENKINS_URL/job/JOB_NAME/lastSuccessfulBuild/artifact/然后是工件的名称。

  • 从另一个作业访问工件

    我已经在此处广泛解释了如何从另一个部署作业(在您的示例中为 ProductionPush )访问以前的工件:
    How to promote a specific build number from another job in Jenkins?

    如果您的要求是始终将最新版本部署到生产环境,您可以跳过上述链接中的升级配置。只需按照部署作业的配置步骤即可。完成部署作业后,如果它始终同时运行,只需配置其 定期构建 参数。或者,您可以拥有另一个作业,该作业将根据您想要的任何条件触发部署作业。

    在上述任何一种情况下,如果您的 默认选择器设置为最新的成功构建(如上面的链接中所述),最新的构建将被推送到生产

    关于triggers - jenkins 使用共享工作区进行持续交付,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15140580/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com