从GitLab的official document起,似乎只能根据文件是否更改来跳过CI / CD阶段。是否可以根据要部署的计算机上是否存在文件/文件夹来跳过步骤?
这种情况是使用软件包管理工具很常见。 (例如,PHP中的composer或Node.js中的NPM)当前的规则是检查相应的配置文件是否已更改(例如,对于composer来说是composer.json或对于NPM来说是package.json),以查看是否有必要运行安装步骤(即composer install
或npm install
),尽管很少发生,但是当使用新计算机进行部署时,CI / CD会崩溃,因为跳过了安装步骤。
当前,通过手动触发安装步骤解决了问题,但是是否可以自动检测主机上的文件是否存在,以确定是否应运行安装步骤?
我不认为有一种方法可以做您描述的事情。在创建任何作业之前,GitLab中的only/except
功能在GitLab服务器上运行。为了能够知道服务器上是否已经存在文件,需要创建一个作业并将其分配给gitlab运行程序。
他们有这个问题,看起来可以开始工作,然后通过使用退出代码确定应该跳过它:
https://gitlab.com/gitlab-org/gitlab/issues/16733
同时,您可以做到这一点,以便安装作业始终运行,然后仅使用构建脚本来检查该文件。在GitLab的管道视图中,您将始终看到安装步骤。如果文件已经存在,则实际的作业可以跳过任何操作,因此您无需记住手动运行该作业。