Правила GitLab только для «мастера» и «тегов»

#yaml #cicd #gitlab-ci.yml

Вопрос:

я ищу решение для выполнения задания CI/CD только для master и tags , но в то же время я хотел бы проверить, Dockerfile существует ли, что требует использования rules

Чего я хочу достичь

Я хотел бы создавать изображения Docker только для master и tags без ограничений для конкретной записи тегов. Раньше я мог добиться чего-то подобного с помощью only

gitlab-ci.yml

 only:  - master  - tags  

К сожалению, однако, с only этим мне пришлось бы отказаться от своего чека на «Док-файл», поэтому я переключился на rules .

Проблема с rules

Однако проблема в rules том, что до сих пор единственным способом найти решение здесь является использование регулярных выражений. Это значительно ограничивает конвенцию в отношении тегов.

В моем примере 0-9.0-9.0-9

Будут запрещены другие обозначения, 1.0.0.1 или 1.0.0-альфа, которые должны быть определены и реализованы отдельно для каждого проекта.

Неужели нет возможности справиться с этим более элегантно?

 Build Images:  stage: Build  lt;lt;: *docker  lt;lt;: *registry  rules:   - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH   - if: $CI_COMMIT_TAG =~ "/[0-9].[0-9].[0-9]/g"  - if: $CI_COMMIT_BRANCH  exists:  - Dockerfile  script:  - |  if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then  tag="latest"  echo "Running on default branch '$CI_DEFAULT_BRANCH'"  else  tag="$CI_COMMIT_TAG"  echo "Running on branch 'tag/$CI_COMMIT_TAG'"  fi   - docker build --pull -t "$CI_REGISTRY_IMAGE/testing:${tag}" .  - docker push "$CI_REGISTRY_IMAGE/testing:${tag}"  

Редактировать:

Это if: $CI_COMMIT_TAG =~ "/[0-9].[0-9].[0-9]/g" не работает должным образом