我有一个工具链,每当新的推送到达我的Git服务器时,它都会构建我的项目文档。
如果没有特定版本,则应使用称为“最新”的引用来构建文档。但是,当我决定使用Git标签设置版本时,应在Git挂钩中使用该标签以使用此版本号构建文档。
挂钩的伪代码应如下所示:
if (tag_for_this_commit_exists):
build_docs(str(tag_of_this_commit))
else:
build_docs("latest")
问题1:
如果有一个分配给提交的标签,如果有一个标签,我该如何在接收后钩子中提取信息?
问题2:
如何以某种方式将标记添加到命令行中,使其完全属于push事件,并随软件的推送一起被推送到服务器?
答案 0 :(得分:0)
好的,谢谢您的答复。我通过位于hooks文件夹中的后接收脚本来管理服务器端。
如果其他人需要此脚本,则脚本如下:
#!/bin/bash
#Get the newest tag
NEWEST_TAG=$(ls ../refs/tags | sort -n | head -1)
if [ -z "$NEWEST_TAG" ]
then
#No tags exist yet
DOCU_VERSION="latest"
else
#Check if the tag is referencing the current commit
TAG_SHA=$(git rev-list ${NEWEST_TAG} -n 1)
COMMIT_SHA=$(cat ../refs/heads/master)
if [ "$TAG_SHA" == "$COMMIT_SHA" ]
then
#Tag matches current commit
DOCU_VERSION=$(ls ../refs/tags | sort -n | head -1)
else
#Tag does not match current commit
DOCU_VERSION="latest"
fi
fi
#Trigger the build of the documentation on the read-the-docs server
curl -X POST -d "ref=$DOCU_VERSION"
http://192.168.1.106:8000/api/v2/webhook/myproject/1/
exit 0