我有一个页面作业,我想在分支上手动运行,但在 master 上自动触发:
pages:
stage: deploy
cache:
paths:
- public
script:
- scripts/pages.sh
artifacts:
paths:
- public
expire_in: 2 days
所以我想要一个组合:
only:
- master
when: always
only:
- branches
except:
- master
when: manual
那可能吗?
最佳答案
如果您使用 GitLab CI rules,这应该可以做到.这是一个 shell 是 powershell 的示例,它显示当前时间和分支/标签名称:
pages:
script:
- mkdir public
- date > public\index.html
- $CI_COMMIT_REF_NAME >> public\index.html
artifacts:
paths:
- public
rules:
- if: '$CI_COMMIT_BRANCH == "master"'
when: always
- if: '$CI_COMMIT_BRANCH == null'
when: never
- when: manual
GitLab 从上到下匹配每个单独的规则。如果分支名为“master”,则作业将标记为
when: always
.如果分支名称为空,则这是一个标记,并且作业标记为从不。如果这不是名为 master
的分支,也不是标签,这是一个普通的分支,作业用manual打上标记。正如 Aleksey Tsalolikhin 所述,您可以删除此规则:
- if: '$CI_COMMIT_BRANCH == null'
when: never
然后,您还可以选择为您的标签运行管道,如下所示:
如果这是你想要的,那取决于你。
关于gitlab-ci - 如何让 gitlab CI 作业仅在分支上手动触发并始终在 master 上自动触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55398771/