Проверьте, есть ли новые коммиты с момента последнего тега - PullRequest
1 голос
• 1000 Я хочу изменить рабочий процесс, чтобы создавать новые теги только в том случае, если есть новые коммиты после создания последнего тега. Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 11 мая 2020

Этого должно быть достаточно, чтобы вы пришли в нужное русло, я не тестировал код, но все идеи есть.

  1. Получите 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
0 голосов
/ 09 мая 2020

См. это . Этот рабочий процесс запустит развертывание только при отправке тега deployment. Хотя сборка будет запускаться при каждой фиксации в мастере.

...