首页 > 解决方案 > 在 cirrus-ci 下 git describe --tags --always 返回 sha1 而不是 tag

问题描述

我正在尝试使用 command 根据最新标签获取 git 信息git describe --tags --always
这在我的电脑上运行良好,来自circle-ci,travis-ci,但不使用 cirrus-ci。

使用相同的Dockerfile运行

 echo "GIT:$(git describe --tags --always --dirty)"

正如预期的那样,我从 circle-ci 得到 log :

GIT:v0.0-6-ge75d196

但是来自 cirrus-ci log :

吉特:e75d196

我将环境变量CIRRUS_CLONE_DEPTH设置为 0,但这似乎链接到当前分支的历史记录并且不包含标签。

有没有办法让 cirrus-ci 获取标签?

标签: gitcirrus-ci

解决方案


使用自定义脚本进行克隆,而不是使用提示和技巧中描述的默认 go-git 实现

  clone_script: |
    if [ -z "$CIRRUS_PR" ]; then
      git clone --recursive --branch=$CIRRUS_BRANCH https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git $CIRRUS_WORKING_DIR
      git reset --hard $CIRRUS_CHANGE_IN_REPO
    else
      git clone --recursive https://x-access-token:${CIRRUS_REPO_CLONE_TOKEN}@github.com/${CIRRUS_REPO_FULL_NAME}.git $CIRRUS_WORKING_DIR
      git fetch origin pull/$CIRRUS_PR/head:pull/$CIRRUS_PR
      git reset --hard $CIRRUS_CHANGE_IN_REPO
    fi  

给出预期的行为。


推荐阅读