标记发布时的 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].*$/
那真是太棒了。 :)
所以我有一个 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].*$/
那真是太棒了。 :)