标记发布时的 Gitlab 作业

Gitlab job when tagging a release

所以我有一个 Gitlab 8.1 实例 运行。一切(几乎)都按预期工作。我有在合并到不同分支时执行的部署和构建作业。

但我想在每次标记项目的新版本时创建一个 tarball。但我似乎无法弄清楚触发那种工作所需的条件。

我在版本名称中标记发布(即 v0.9.1-beta)。我在项目的 .gitlab-ci.yml 中有这个:

build_release:
  script:
    - composer update
    - cd ..
    - tar cvzf $CI_BUILD_REF_NAME.tar.gz kin
stage: build
except:
  - production
  - develop
  - ^enhancement\/.*$
  - ^feature\/.*$
  - ^bugfix\/.*$

但是没有触发。请帮忙。

GitLab 为您提供 CI_BUILD_TAG 环境变量。只需向您的脚本添加一个测试,该测试仅在设置该环境变量时创建 tarball

before_script:
  - ... Some before code ...

stage:
  stage: stage
  script:
    - if [ -z "${CI_BUILD_TAG}" ]; then echo "Cowardly refusing to package an un-tagged commit."; exit 0; fi
    - ... Script Code Continues if didn't exit ...

实际上我自己找到了非常有效的解决方案。 鉴于我所有的发布标签都以 'v' 开头,后跟一个数字,我可以这样做:

release:
script:
  - [BUNCH OF CLEANUP, REMOVAL OF FILES, ETC]
  - tar cvzf [APPNAME]_$CI_BUILD_REF_NAME.tar.gz  
stage: build
only:
  - /v[0-9].*$/

那真是太棒了。 :)