GitLab CI/CD获取提交双标签及本地Git命令CI执行失效问题
GitLab CI/CD 标签触发与多标签获取问题
更新记录
更新1
已解决该问题,解决方案待补充(原说明提及文末附方案,但未提供具体内容)。
更新2
找到一个可获取版本标签的Git脚本:
git log --decorate -n 1 --oneline | cut -d: -f2 | cut -d, -f1
该命令在本地终端可正常返回版本标签:v1.0.7
但在gitlab-ci.yml中执行该命令时,始终返回空值。
相关CI配置代码片段:
... export USER_TAG=$(git rev-parse HEAD) export STAGE_TAG=$(git log --decorate -n 1 --oneline $USER_TAG | cut -d: -f2 | cut -d, -f1 | xargs) echo "*ver tag: $STAGE_TAG"
该Git命令执行无输出,需进一步排查原因。
原问题描述
正在配置gitlab-ci.yml,需求是:仅当提交同时存在两个特定标签(如版本标签v1.0.0和DEV_TEST标签)时,才触发CI/CD流水线,单个标签不触发。
提交标签格式示例:同时包含DEV_TEST和版本号(如<DEV_TEST><v1.0.7>)
当前CI配置仅能通过$CI_COMMIT_TAG获取到DEV_TEST标签,无法获取版本标签:
build:dev: stage: build:dev only: refs: - /^DEV_TEST/ script: | set -e echo echo echo "################################################################################" echo "# Building Docker Base Image" echo "################################################################################" echo echo # ---- build image from branch ---- # if [ "$CI_COMMIT_TAG" != "" ]; # ---- Build image from tag ---- # then echo "building from tag branch $CI_COMMIT_TAG" docker build -t $CONTAINER_TEST_IMAGE -f Dockerfile . docker tag $CI_REGISTRY_IMAGE $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG export TAG_VERSION=$(echo $CI_COMMIT_TAG | cut -d '-' -f1) fi
操作流程:
- 先推送版本标签(如
v1.0.0) - 再推送
DEV_TEST标签,流水线按规则触发 - 但执行
echo "building from tag branch $CI_COMMIT_TAG"仅输出DEV_TEST,无法获取版本标签,如何解决?
内容的提问来源于stack exchange,提问作者Theo Itzaris
相关产品推荐
相关产品推荐

