我想使用Gitlab CI / CD进行部署。同样的代码库是用来部署到不同的环境,需要一个状态文件进行部署,这需要在部署后更新(环境状况),并在部署之前牵强。由于这是一条至关重要的信息,因此我希望它成为构建工件。
考虑一下我的部署流程以及不同的工作deploy-env1
和deploy-env2
。是否可以通过一种方式定义作业
state.dat
为构建工件(使用该artifacts
选项很容易)看来我目前无法将作业配置为依赖于自身,你是否知道是否有办法实现这一目标?
不存在没有实现的函数来处理此问题。
但是有可能的解决方法,我还没有尝试过,还有第三方解决方案。
解决方法: 你可以构建自己的脚本,该脚本使用Gitlab Jobs API为分支机构下载最新的工件。Gitlab文档中的示例
另一个解决方法: 除了使用API下载外,你还可以结合使用工件和缓存对象
干净的解决方案: 将设置一个Gitlab不提供的工件服务。你将在此处部署文件,然后再次从同一服务中检索它。这样的程序是Artifactory和Nexus
感谢您的回答!第一个解决方案肯定会工作,即使它需要其他脚本来查找同一引用的最新成功作业运行的ID。好主意!我看到的缓存组合的问题是文档说不能保证它可用(何时清除?)。也许您是对的,我应该看一下您提到的两个程序,但是当然,使用预先存在的仅适用于Gitlab的解决方案会更好。
@muffel默认情况下,缓存是本地运行器。因此,如果您有多个跑步者,那么您将无法对所有人使用缓存的构建工件。对于下载,您无需查找实际的作业ID,因为工件总是会被覆盖-您总是会从最近一次成功的作业中获得最新的工件。