Gitlab Ci: выполнить этап для любой ветви, кроме A или B

# #gitlab #gitlab-ci

Вопрос:

Я хочу запустить этап publish_snapshot_rpm для любой ветви, кроме master или release . Конвейер выполняется успешно, но этап 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)bw 
  script:
    - some script here
 

Ответ №1:

Вы можете легко достичь этого, используя силу rules ключевого слова.

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

Ответ №2:

Более простой способ с использованием except :

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

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

Комментарии:

1. «только и кроме не разрабатываются активно. правила — это предпочтительное ключевое слово для управления добавлением заданий в конвейеры. »