You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 18:35:09