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

jenkins通过共享工作区连续交付

呼延源
2023-03-14
问题内容

背景:

我们Production每天晚上都有一份詹金斯工作()构建可交付成果。我们还有另一项工作(ProductionPush),第二天通过专有协议将可交付成果推送到生产机器。这是因为某些生产机器仅在一天中的某些时段可用(这也使我们有机会修复任何最后的构建中断)。
ProductionPush需要访问Production作业构建的可交付成果(因此需要访问同一工作空间)。我们有多个节点和并发的内部版本(因此是不可预测的工作空间),并且由于资源有限,所以最好不要将作业绑定到固定的节点/工作空间。

问题:

  1. 如何确保两个作业共享相同的工作空间,并确保ProductionPush仅在Production成功的情况下第二天在固定时间运行-而不将两个作业固定为在同一节点/工作空间用完?我知道参数化触发器插件可能会帮助解决其中一些问题,但是它似乎没有延时功能,在安静的时间里12个小时似乎太长了。

  2. 共享工作空间是个坏主意吗?


问题答案:

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

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

存档工件

  • 构建 作业中的 “构建后操作”下 ,选择“ 归档工件”。
  • 指定要归档的工件(可以使用以下组合)
    a)可以归档所有内容:*.*
    b)可以使用通配符归档特定文件:/path/to/file_version*.zip
    c)可以忽略中间目录,例如:**/file_version*.zip

  • 为了避免许多工件的存储问题,您可以在配置的顶部选择“ 丢弃旧版本” ,单击“ 高级” 按钮,然后选择“ 天数”以保留工件, 并选择“ 最大构建数”以保留工件 。请注意,这两个设置不能控制实际构建的保留时间(其他设置可以控制)

从詹金斯访问工件

  • 在构建历史记录中,选择所需的任何以前的构建。
  • 除了SCM更改和修订数据之外,您现在还将具有“ 构建工件” 链接,在该链接下,您将找到 该特定 构建的所有工件。
  • 您还可以使用Jenkins的永久链接(例如
    http://JENKINS_URL/job/JOB_NAME/lastSuccessfulBuild/artifact/,然后是工件的名称)来访问它们。

访问其他作业的工件

我在这里广泛解释了如何从另一个 部署 作业(在您的示例中ProductionPush)访问以前的工件:
如何从Jenkins的另一个作业提升特定的内部版本号?

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

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



 类似资料:
  • 设置容器要使用的卷数组。可以使用卷在服务或作业中的其他步骤之间共享数据。可以在主机上指定命名Docker卷、匿名Docker卷或绑定挂载。 工作流程 第一个作业(build)有一个build目录,但当第二个作业(deploy)运行时,它没有,只包含源代码。 这个项目是一个mono repo,我试图部署的代码位于路径,因此所有标志。

  • 问题内容: 我正在尝试在python和lua之间传递数据(数组),并且我想使用Torch7框架在lua中处理数据。我认为这可以通过C来最好地完成,因为python和lua与C进行了接口。另外一些优点是不需要这种方式进行数据复制(仅传递指针)并且速度很快。 我实现了两个程序,一个程序将lua嵌入到c中,另一个程序将python将数据传递给c。它们都编译为可执行二进制文件时都可以工作。但是,当将c t

  • 我在AWS中使用Terraform部署了一个基础设施。这个基础设施可以部署到不同的环境中,我使用的是工作区。 部署中的大多数组件应该为每个工作区分别创建,但我有几个关键组件希望在它们之间共享,主要是: IAM角色和权限 例如: 第一个资源是一个IAM角色,应该在该Lambda的所有实例中共享,并且不应该重新创建多次。 第二个资源是Lambda函数,其名称取决于当前工作区,因此每个工作区将部署并跟踪

  • 我在我的平台上保存客户和他们的来源,并试图为我的关联账户收费。我可以成功地创建目的地费用,但创建直接费用时遇到了问题。 我已经尝试创建一个令牌per:https://stripe.com/docs/connect/shared-customers 如果我仅使用客户示例创建令牌,错误是: 您提供了一个客户,但没有指定来源。客户的默认来源是一个来源,不能与现有客户共享。 即使文档中说你需要“该客户的卡

  • 我正在开发一个应用程序,它必须通过whatsapp共享mp3文件。 我现在的代码如下: 例如,我可以通过Gmail成功共享,但通过whatsapp无法实现。这是我的代码的问题还是whatsapp不允许你共享mp3文件? 提前感谢!

  • 我很难搞清楚这一点,基本上我有一个< code>headerTitleService,我希望能够在我的< code>header组件中动态设置标题,但由于某种原因,当我设置标题时,什么也没有显示?我没有得到任何错误,所以我似乎可以找出问题是什么.. 表头.组件. ts header.component.html home.component.ts