提交软件版本号作为服务器挂钩中的标签和过程标签

时间:2018-07-09 12:08:21

标签: bash git tags githooks git-server

我有一个工具链,每当新的推送到达我的Git服务器时,它都会构建我的项目文档。

如果没有特定版本,则应使用称为“最新”的引用来构建文档。但是,当我决定使用Git标签设置版本时,应在Git挂钩中使用该标签以使用此版本号构建文档。

挂钩的伪代码应如下所示:

if (tag_for_this_commit_exists):
    build_docs(str(tag_of_this_commit))
else:
    build_docs("latest")

问题1:

如果有一个分配给提交的标签,如果有一个标签,我该如何在接收后钩子中提取信息?

问题2:

如何以某种方式将标记添加到命令行中,使其完全属于push事件,并随软件的推送一起被推送到服务器?

1 个答案:

答案 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