Circleci: развертывание в зависимости от тега git

Есть ли способ ограничить развертывание circleci при проверках с определенным тегом git?

В настоящее время я использую этот

...
deployment:
  dockerhub:
    branch: master
    commands:
      - docker login -e $DOCKER_EMAIL -u $DOCKER_USER -p $DOCKER_PASS
      - docker push abcdef

Вместо branch: master я хотел бы написать что-то вроде tag: /release_.*/

Фон: я хотел бы установить теги докеров в зависимости от тегов git. Так, например, всякий раз, когда что-то совершено для освоения, будут созданы и нажаты новые изображения докеров с тегом latest. Всякий раз, когда установлен специальный тег git (например, release_1.0_2015-06-13), будет создано и нажато новое изображение докеры с тегом 1.0.

Альтернатива - использовать только разные ветки в соответствии с разными тегами. Но я хотел бы использовать теги для отметки конкретной версии.

Ответ 1

Похоже, что это было добавлено, поскольку Ким ответил.

Обычно нажатие тега не запускает сборку. Если есть конфигурация развертывания с свойством tag, которое соответствует имени созданного тега, мы запустим раздел сборки и развертывания, который соответствует.

В приведенном ниже примере нажатие тега с именем release-v1.05 приведет к созданию и развертыванию. Нажатие тега qa-9502 не приведет к созданию сборки.

deployment:
  release:
    tag: /release-.*/
    owner: circleci
    commands:
      - ./deploy_master.sh

Ответ 2

Это Ким из CircleCI.

Чтобы архивировать то, что вы хотите сделать, я думаю, вы должны иметь возможность запускать сборку, когда новый тег будет перенесен в Github. Тем не менее, только новая фиксация вызовет сборку, поэтому, похоже, это не выполнимо. Извините!

UPDATE: эта функция теперь реализована: https://circleci.com/docs/configuration/#tags

Ответ 3

Я помещаю это здесь для людей, которые следуют документации, но не получили этого, чтобы работать. CircleCI, кажется, вообще игнорирует теги, если у вас есть настройка branch only в ваших общих настройках. Тег-метки будут отображаться как "Не запускаться" таким образом.

Чтобы строить только на определенных ветвях и развертывать по определенному тегу, используйте параметры branch и ignore вместе с отрицательным регулярным выражением:

# circle.yml
general:
  branches:
    ignore:
      - /^(?!master).*$/
deployment:
  beta:
    tag: /v[0-9]+(\.[0-9]+)*(-.*)*/
    owner: mediafreakch
    commands:
      - deploy.sh

Это построит каждую фиксацию на master и разворачивает, если она помечена фиксацией. Чтобы пометить фиксацию, я использую npm version.