.gitlab-ci.yml 是否可用于 Gitlab CI 中具有 GIT_STRATEGY=none 的作业?

Is the .gitlab-ci.yml available for jobs with GIT_STRATEGY=none in Gitlab CI?

Gitlab 文档对 GIT_STRATEGY: none 的描述如下:

none also re-uses the project workspace, but skips all Git operations (including GitLab Runner's pre-clone script, if present). It is mostly useful for jobs that operate exclusively on artifacts (e.g., deploy). Git repository data may be present, but it is certain to be out of date, so you should only rely on files brought into the project workspace from cache or artifacts.

我仍然对这应该如何工作感到困惑。如果不能保证源代码存在,那么项目工作区中可能没有源代码,因此 .gitlab-ci.yml 文件也会丢失。如果没有构建脚本,作业一定会失败。如果根据外部因素,源仅在部分时间丢失,作业将随机失败,这比每次都失败更糟糕。但是,如果它每次都失败,那么该功能的意义何在?

我看到的另一种可能性是 .gitlab-ci.yml 可能会在运行时注入,因此即使没有存储库的新副本,也会有一个构建脚本。如果是这样,我可以从我的存储库中定义更多文件以注入构建过程吗?这些特定工​​作有哪些限制?

是的,.gitlab-ci.yml 文件不会像所有其他文件一样复制到系统中。但这并不重要,因为作业不是来自文件的 运行。这项工作是 运行 作为目标上的脚本(甚至在此之前,因为它定义了它将 运行 上的目标)。如果没有 git 克隆,则无法仅复制选定的文件,尽管您可能希望从其他服务器复制文件。

当你想要 运行 GIT_STRATEGY: none 时,一个很好的例子是当你真的不想克隆千兆字节的存储库数据只是为了推送时,将 slackchat 通知作为构建的最后阶段一条通知。