mirror of
https://code.forgejo.org/actions/setup-go.git
synced 2026-08-28 04:54:58 -04:00
Resolve latest-patch from the versions manifest and tighten input handling
- latest-patch implies check-latest so the newest patch release comes from the versions manifest instead of a possibly stale runner tool cache, with a warning when the manifest cannot be reached - fail fast when latest-patch is combined with a custom download base URL - never widen an exact toolchain directive pin - validate go-version-file-behavior on every input path - widen v-prefixed versions and log when a version is used as written - document dependency cache invalidation on new patch releases
This commit is contained in:
parent
71b6f8926f
commit
f75efb3f19
6 changed files with 246 additions and 51 deletions
|
|
@ -229,7 +229,20 @@ steps:
|
|||
- run: go version
|
||||
```
|
||||
|
||||
Versions without a patch component (e.g., `go 1.22`) already resolve to the latest available patch release, and prerelease versions (e.g., `go1.22rc1` from a `toolchain` directive) are always used as written, so `latest-patch` leaves both unchanged. As with any version range, the resolved patch release depends on what is available in the runner's tool cache and the versions manifest.
|
||||
Because the newest patch release is often not yet present in the runner's tool cache, `latest-patch` implies `check-latest`: the newest matching patch is resolved from the versions manifest rather than from whatever the cache happens to hold.
|
||||
|
||||
Two operational effects to be aware of:
|
||||
|
||||
- The dependency cache key includes the installed Go version, so with `cache: true` each new Go patch release changes the key: the first run after a patch release rebuilds the module and build caches from scratch.
|
||||
- If the versions manifest cannot be reached (for example on GitHub Enterprise Server or other runners without github.com access), the action emits a warning and falls back to resolving the version range locally, which may install an older patch release from the runner's tool cache.
|
||||
|
||||
Some versions are always used as written and are not affected by `latest-patch`:
|
||||
|
||||
- Versions without a patch component (e.g., `go 1.22`), which already resolve to the latest available patch release.
|
||||
- Prerelease versions (e.g., `go1.22rc1`), which have no patch series to float within.
|
||||
- An exact version pinned by a go.mod or go.work `toolchain` directive (e.g., `toolchain go1.22.3`): the pin is deliberate and is never widened.
|
||||
|
||||
`latest-patch` is not supported together with `go-download-base-url`, which requires an exact version.
|
||||
|
||||
## Check latest version
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue