Этого должно быть достаточно, чтобы вы пришли в нужное русло, я не тестировал код, но все идеи есть.
- Получите SHA для вашего текущего мастера
- name: Get Git SHA
id: gitsha
run: echo "::set-output name=gitsha::$(git rev-parse HEAD)"
Получить все теги
- uses: actions/checkout@v2
- run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
Получить последний созданный тег, получив дату вчерашнего дня, затем получить этот тег и вывести SHA-код фиксации.
- name: Get yesterdays date
id: ydate
run: echo "::set-output name=ydate::$(date -d "yesterday 13:00" +'%Y-%m-%d')"
- uses: actions/checkout@v2
with:
ref: refs/tags/${{ steps.ydate.outputs.ydate }}
- name: Get Yesterdays Git SHA
id: ygitsha
run: echo "::set-output name=ygitsha::$(git rev-parse HEAD)"
Если они такие же, не выполняйте другое развертывание
- name: Deploy if anything has changed
if: steps.ygitsha.outputs.ygitsha == steps.gitsha.outputs.gitsha
run: <your code>
Похоже, вы также можете захотеть l oop и проверить наличие тегов, пока не найдете последний, в этом случае просто продолжайте вычитать еще 1 из даты и используйте что-то вроде этого, чтобы проверить, существует ли тег, и l oop, пока не найдете тег.
if git rev-parse "$TAG" >/dev/null 2>&1; then
echo "tag exists";
else
echo "tag does not exist"
fi