我们的bamboo-specs YAML 文件中有一个签出任务:
- checkout:
force-clean-build: "false"
description: Checkout default repository
作为构建过程的一部分,我们希望对项目运行发布分析,并且此分析需要了解当前在存储库中设置的所有标签及其 git 哈希值。该脚本使用
git tag
获取所有标签,然后针对每个标签使用 git rev-list -n 1 <tag>
获取哈希值。
但是,虽然该脚本在我的本地存储库中运行良好,但在 Bamboo 上却失败了,因为这些标签似乎在其签出的存储库中不存在。这些标签肯定存在于 BitBucket 中(我已将它们推到上游)。例如,Bamboo Web 界面显示
1.0.0rc1
存在,但在 Bamboo 上运行的分析脚本找不到它。
我的猜测是,Bamboo
checkout
任务正在执行某种类型的“轻量级”克隆。我知道我以前工作过的商店也做类似的事情,例如只进行浅层克隆,或者只获取影响分支的对象作为克隆的一部分被签出。
这是可以理解的,因为如果你只想构建一个哈希,那么获取整个存储库历史记录就没有什么意义)。
寻找解决方案没有找到任何结果。有一个与 Jenkins 相关的问题,它很相似,但当然,那不是 Bamboo。
checkout
任务上的
文档没有显示任何有用的选项(例如“也获取该死的标签[X]`),所以那里没有任何乐趣:-)
所以我想知道是否有办法:
checkout
(在bamboo-specs YAML文件中)我需要它来获取所有标签;或git fetch --tags
(假设我可以确保从 Bamboo 存储库中运行它)。后一种可能性可能是最好的,因为我稍后可能需要其他东西(例如整个回购历史记录,而不仅仅是标签)。
额外信息,尝试
git tag
时 Bamboo 日志的输出为(为了便于阅读而格式化):
build 18-Apr-2024 08:02:40 <<< ERROR[0bbdd4cc]: error: object directory
/home/bamboo/bamboo-agent-home/xml-data/build-dir/_git-repositories-cache/
9c8324fc55f93ea4c7a0730ef5791ddc872de550/.git/objects
does not exist; check .git/objects/info/alternates
与
git rev-list
:
build 18-Apr-2024 08:02:40 <<< ERROR[0bbdd4cc ]: error: refs/tags/1.0.0rc1
does not point to a valid object!
所以我想知道标签 do 是否存在,但只是它们指向的对象不存在(因为前面提到的浅克隆可能性?)。如果是这样,也许有一种方法可以在不存在支持对象的情况下获得标签到 git 哈希的映射。