jenkins通过共享工作区连续交付
背景:
我们Production
每天晚上都有一份詹金斯工作()构建可交付成果。我们还有另一项工作(ProductionPush
),第二天通过专有协议将可交付成果推送到生产机器。这是因为某些生产机器仅在一天中的某些时段可用(这也使我们有机会修复任何最后的构建中断)。
ProductionPush
需要访问Production
作业构建的可交付成果(因此需要访问同一工作空间)。我们有多个节点和并发的内部版本(因此是不可预测的工作空间),并且由于资源有限,所以最好不要将作业绑定到固定的节点/工作空间。
问题:
如何确保两个作业共享相同的工作空间,并确保
ProductionPush
仅在Production
成功的情况下第二天在固定时间运行-而不将两个作业固定为在同一节点/工作空间用完?我知道参数化触发器插件可能会帮助解决其中一些问题,但是它似乎没有延时功能,在安静的时间里12个小时似乎太长了。共享工作空间是个坏主意吗?
回答:
答案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的另一个作业提升特定的内部版本号?
如果您的要求是始终将最新的版本部署到生产中,则可以跳过上面链接中的 升级 配置。只需按照配置 部署 作业的步骤进行即可。 部署
作业一旦完成,如果始终在同一时间运行,则只需配置其 参数即可。或者,您可以拥有另一个作业,该作业将根据您想要的任何条件触发 部署
作业。
在上述两种情况下,如果您的“ 设置为“ 最新成功构建” (如上面的链接中所述),则最新构建将被推送到“生产”中
以上是 jenkins通过共享工作区连续交付 的全部内容, 来源链接: utcz.com/qa/403823.html