Circleci:如何根据git标签进行部署

时间:2015-06-13 10:43:54

标签: git circleci git-tag

有没有办法在具有特定git标签的检查上限制circleci部署?

目前我正在使用此

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

而不是branch: master我想写一些像tag: /release_.*/

这样的内容

背景:我想根据git标签设置docker标签。因此,例如,无论什么时候提交给master,都会创建并推送带有latest标记的新docker镜像。只要设置了特殊的git标记(例如release_1.0_2015-06-13),就会创建并推送带有标记1.0的新泊坞窗图像。

替代方案是仅根据不同的标签使用不同的分支。但我想使用标签来标记特定版本。

3 个答案:

答案 0 :(得分:16)

It looks like this was added因为金回答。

  

通常,推送标签不会运行构建。如果部署配置的tag属性与您创建的标记的名称相匹配,我们将运行匹配的构建和部署部分。

     

在下面的示例中,推送名为release-v1.05的标记会触发构建&部署。推送标签qa-9502不会触发构建。

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

答案 1 :(得分:4)

这是来自CircleCI的Kim。

要存档您想要执行的操作,我认为您必须能够在将新标记推送到Github时触发构建。但是,只有新的提交才会触发构建,因此现在看来这是不可行的。遗憾!

更新:此功能现已实施:https://circleci.com/docs/configuration/#tags

答案 2 :(得分:3)

我把这个放在documentation之后的人身上,但没有让这个工作。如果您在常规设置中有branch only配置,则CircleCI似乎完全忽略标记。标记的提交将显示为"未运行"那样。

要仅在特定分支上构建并在特定代码上部署,请使用branchignore选项以及否定前瞻性正则表达式:

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

如果它是标记的提交,这将构建每个master的提交并进行部署。要标记提交,我使用npm version