Зафиксируйте программное обеспечение с номером версии в виде тега и тега процесса в ловушке

У меня есть набор инструментов, который создает мою документацию по проекту каждый раз, когда на мой Git-сервер поступает новая версия.

Если конкретной версии нет, документация должна быть собрана с ссылкой "последняя". Но когда я решаю установить версию с использованием тега Git, этот тег следует использовать в хуке Git для создания документации с этим номером версии.

Псевдокод хука должен выглядеть так:

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

Вопрос 1:

Как я могу извлечь в перехвате после получения информацию, если есть тэг, назначенный для коммита, и если был, то какой?

Вопрос 2:

Как добавить тег в командную строку таким образом, чтобы он точно соответствовал событию push и передавался на сервер вместе с push-уведомлением программного обеспечения?

1 ответ

Хорошо, спасибо за все ответы. Я управлял серверной частью с помощью скрипта post-receive, который находится в папке 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
Другие вопросы по тегам