我在CI自动化工作流程中遇到了读取git仓库标签的问题。我不想创建完整克隆,因为这会产生大量开销,所以我更喜欢保持“浅克隆”,但是要找到应用程序版本的标签。
使用案例
- Github Actions CI构建通过设置
git clone ... --depth=1
作为'浅'克隆来检查Git-Repository。 - 预构建阶段执行
git describe --tags
将版本信息嵌入编译后的应用程序中。
期望结果
使用完全克隆会报告标签如下:
> git describe --tags
v0.5.0-95-g7bbc323
实际结果
CI下的浅克隆不起作用:
> git describe --tags
fatal: No names found, cannot describe anything.
解决方案想法
- 修改CI下的“克隆”操作,以某种方式包含标签?
- 如果可能的话,修改预构建的“描述”步骤,从远程读取标签?
git clone --filter=tree:0 <url>
可以在我的预构建脚本中运行,我还没有使用过这个命令,将会研究如何使用它进行脚本编写。你可以更新答案,以便在脚本中运行并加以详细说明,我可能会接受这个答案 :) 如果它有效,我认为可以保留修改Actions checkout模块的计划到另一天! - Crog