git - 在 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 获取标签?
解决方案
使用自定义脚本进行克隆,而不是使用提示和技巧中描述的默认 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
给出预期的行为。
推荐阅读
- gitlab - 带有工件报告和路径的 gitlab ci 作业
- flutter - Flutter - 从自定义小部件返回 onTap 并执行动画
- kotlin - 定位类中的第一个和第二个值
- java - 为什么这个构造函数没有给我正确的答案
- angular - Angular 7在网格中拖放无法在网格之间移动面板
- python - 如何在 Airflow 中将参数传递给 PythonOperator
- python - 为什么我的 ping 命令出现使用错误?
- c# - 无法从我自己的计算机上从 S3 存储桶上传和下载文件
- java - Java 8 的模式匹配接口显示编译器警告
- r - 从分布到置信区间的寓言