DevOps流水线中bat编译脚本获取git仓库版本信息

背景

DevOps流水线可以发布web应用A和B,其中A和B在编译时候依赖于C模块,A、B、C存储在不同的git仓库,C作为SubModule添加到A和B仓库中。
需要查询A和B应用使用到的C仓库的代码版本,在流水线构建的时候执行git命令拉取C的commit-id即可。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@echo off
setlocal enabledelayedexpansion //变量延迟执行
set dstDir=%1 //将版本信息写入的目标文件夹
set baseDir=%2 //在该目录执行git命令获取版本号(也就是上文所述C仓库目录)

if "%dstDir%" neq "" {

cd %baseDir%
if exist temp.ini del temp.ini
git rev-parse HEAD>>temp.ini
set /p commitId=<temp.ini
del temp.ini
(git log --pretty=format:%%cd !commitId! -1 --date==format:"%%Y-%%m--%%d %%H:%%M:%%S")>>temp.ini
set /p commitTime=<temp.ini
del temp.ini

rem 获取当前编译时间 2019-11-11 11:11:11
set compileTime=%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%:%time:~3,2%:%time:~6,2%

cd %dstDir%

rem 将数据输出到文件dst.ini中
if exist dst.ini del dst.ini
echo CommitId=!commitId!>>dst.ini
echo CommitTime=!commitTime!>>dst.ini
echo CompileTime=!compileTime!>>dst.ini

}