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
.