将 GitLab CI 作业拆分为多个文件

pgi*_*erz 8 continuous-integration gitlab gitlab-ci gitlab-ci-runner

我一直在尝试更熟悉 GitLab 的 CI 功能,并发现将 CI 管道拆分为多个单独作业的想法很有趣。这将使我能够维护一个“已知工作”项目并将它们包含在其他项目中。

到目前为止,我有这样的事情:

$ ls
jobA.yaml jobB.yaml jobC.yaml jobD.yaml
Run Code Online (Sandbox Code Playgroud)

这 4 个都是相同的(目前),并且具有以下内容:

$ ls
jobA.yaml jobB.yaml jobC.yaml jobD.yaml
Run Code Online (Sandbox Code Playgroud)

在实际.gitlab-ci.yaml我想要使用的情况下,我会(我认为)放置这样的东西。在这种情况下,我将使用项目中定义的作业:

job-name:
   stage: my-stage # Might be needed to differentiate later on
   tags: runner-tag # used to figure out where/how the job should be done: directly on a server, in a container, etc
   script:
      - echo "beep beep"
Run Code Online (Sandbox Code Playgroud)

但这给了我一个 linter 错误。也许我误读了文档,但我认为这应该是可能的......

sur*_*ute 5

这应该是一条注释,但不能在其中放置格式化代码。

我们使用一个主 yml,它只包含所有其他的。它不像您那样使用通配符。

您是否尝试过将“文件”更改为“本地”?以“-”开头?

include:
  - template: Code-Quality.gitlab-ci.yml
  - local: '/.gitlab/py.yml'
  - local: '/.gitlab/static.yml'
  - local: '/.gitlab/lint.yml'
  - local: '/.gitlab/docs.yml'
  - local: '/.gitlab/publish.yml'
Run Code Online (Sandbox Code Playgroud)


dan*_*elz 5

根据文档,通配符包含仅适用于local. 此外,您需要将 jobA.yaml 移动到目录,否则您将.gitlab-ci.yml在顶层包含通配符。

因此,以下内容适用于配置中的 JobA.yaml:

include:
  - local: 'config/*.yaml'

stages:
  - my-stage
Run Code Online (Sandbox Code Playgroud)