当另一个作业包含 'only' 时在管道中显示 GitLab 作业
Show GitLab job in the pipeline when another job contains 'only'
我需要设置 .gitlab-ci.yml
管道,以便一些作业在任何地方执行(没有 only 和 except),而一些作业,如 Deploy 步骤,只在 master 分支上执行。但是当我添加到 Deploy only:
时,如果没有为它们指定 only:
属性,我的其他作业将变得不可见。例如 - Test
工作将被隐藏在任何地方。
有没有办法配置 GitLab 以在没有 only/except 配置的情况下在任何地方显示测试作业?
---
stages:
- Tests
- Build
- Deploy
Test:
stage: Tests
Build:
stage: Build
only:
- master
- merge_requests
Deploy:
stage: Deploy
only:
- master
管道中所需职位的可见性:
- 工作分支(和任何其他管道):
Tests
- 合并请求:
Tests
、Build
- 主分支:
Tests
、Build
、Deploy
您观察到的行为是由于为您的项目创建合并请求的管道。
您正在观察的缺少作业的管道是合并请求管道。在 合并请求管道 .
中,只有 only: - merge_requests
的作业才会 运行
您会注意到在您的管道列表中还有 也 一个分支管道,可能 运行 或多或少如您所料。但是,此管道不会显示在合并请求中 UI -- 在 MR UI 中,仅考虑 合并请求管道。
要解决此问题,您可以将以下内容添加到测试作业中:
Test:
# ...
only:
- pushes
- schedules
- api
- web
- triggers
- merge_requests # enable pipelines for merge requests
或者更简单地使用 rules:
Test:
rules: # enable pipelines for merge requests
- when: on_succes
如果您想继续使用管道进行合并请求并避免在测试作业中使用 only
/except
,则需要改用 rules:
。当使用管道进行合并请求时,无法避免以 some 方式为此配置测试作业。
或者,如果您可以避免合并请求管道功能并使用 rules:
(或等效的 only
/except
),则可以避免配置 Test
作业获得您想要的行为,但有一些注意事项。
include: # disable pipelines for merge requests
- template: 'Workflows/Branch-Pipelines.gitlab-ci.yml'
Test:
stage: test
# ...
Build:
rules: # run when merge requests are open
- if: $CI_OPEN_MERGE_REQUESTS
when: on_success
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: on_success # run when on default branch
- when: never # otherwise, do not run
Deploy:
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: on_success
- when: never
注意事项:要捕获 CI_OPEN_MERGE_REQUESTS
规则,合并请求必须在管道启动之前存在,或者必须在创建 MR 之后触发。这显然也排除了合并请求管道功能的使用。
我需要设置 .gitlab-ci.yml
管道,以便一些作业在任何地方执行(没有 only 和 except),而一些作业,如 Deploy 步骤,只在 master 分支上执行。但是当我添加到 Deploy only:
时,如果没有为它们指定 only:
属性,我的其他作业将变得不可见。例如 - Test
工作将被隐藏在任何地方。
有没有办法配置 GitLab 以在没有 only/except 配置的情况下在任何地方显示测试作业?
---
stages:
- Tests
- Build
- Deploy
Test:
stage: Tests
Build:
stage: Build
only:
- master
- merge_requests
Deploy:
stage: Deploy
only:
- master
管道中所需职位的可见性:
- 工作分支(和任何其他管道):
Tests
- 合并请求:
Tests
、Build
- 主分支:
Tests
、Build
、Deploy
您观察到的行为是由于为您的项目创建合并请求的管道。
您正在观察的缺少作业的管道是合并请求管道。在 合并请求管道 .
中,只有only: - merge_requests
的作业才会 运行
您会注意到在您的管道列表中还有 也 一个分支管道,可能 运行 或多或少如您所料。但是,此管道不会显示在合并请求中 UI -- 在 MR UI 中,仅考虑 合并请求管道。
要解决此问题,您可以将以下内容添加到测试作业中:
Test:
# ...
only:
- pushes
- schedules
- api
- web
- triggers
- merge_requests # enable pipelines for merge requests
或者更简单地使用 rules:
Test:
rules: # enable pipelines for merge requests
- when: on_succes
如果您想继续使用管道进行合并请求并避免在测试作业中使用 only
/except
,则需要改用 rules:
。当使用管道进行合并请求时,无法避免以 some 方式为此配置测试作业。
或者,如果您可以避免合并请求管道功能并使用 rules:
(或等效的 only
/except
),则可以避免配置 Test
作业获得您想要的行为,但有一些注意事项。
include: # disable pipelines for merge requests
- template: 'Workflows/Branch-Pipelines.gitlab-ci.yml'
Test:
stage: test
# ...
Build:
rules: # run when merge requests are open
- if: $CI_OPEN_MERGE_REQUESTS
when: on_success
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: on_success # run when on default branch
- when: never # otherwise, do not run
Deploy:
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: on_success
- when: never
注意事项:要捕获 CI_OPEN_MERGE_REQUESTS
规则,合并请求必须在管道启动之前存在,或者必须在创建 MR 之后触发。这显然也排除了合并请求管道功能的使用。