Gitlab Ci: 对除A或B之外的任意分支执行一个stage

Gitlab Ci: execute a stage for any branch except A or B

我想 运行 阶段 publish_snapshot_rpm 除了 masterrelease 之外的任何分支。管道 运行 成功,但阶段 publish_snapshot_rpm 未执行。我错过了什么?我的 gitlab-ci 文件部分:

.publish:
  stage: publish
  tags:
    - dev
  dependencies:
    - build

publish_snapshot_rpm:
  extends: .publish
  only:
#    for any branch except master or release
    - (?!(master|release)\b)\b\w+
  script:
    - some script here

您可以使用 rules 关键字的强大功能轻松实现这一目标。

rules:
  - if: $CI_COMMIT_BRANCH == master
    when: never
  - if: $CI_COMMIT_BRANCH =~ /^release/
    when: never
  - when: on_success

使用 except 的更简单方法:

.publish:
  stage: publish
  tags:
    - dev
  dependencies:
    - build

publish_snapshot_rpm:
  extends: .publish
  except:
        - master
        - release
  script:
    - some script here