Зафиксируйте программное обеспечение с номером версии в виде тега и тега процесса в ловушке
У меня есть набор инструментов, который создает мою документацию по проекту каждый раз, когда на мой 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