Tar errors on cache restore after toolchain installation #424
Description
Description:
When the version of Go in the go
directive of go.mod
is different from the version in the toolchain
directive there is a cache conflict which causes errors on cache extraction.
Note: I think this is related to, but different from #403 since that appears to be covering the situation where some other tool is also working on the cache, but this issue is purely for the action running on a hosted runner without any additional changes to the environment etc.
Action version:
actions/setup-go@v4
Platform:
- Ubuntu
- macOS (untested)
- Windows (untested)
Runner type:
- Hosted
- Self-hosted
Tools version:
go 1.21.0
toolchain go1.21.1
Repro steps:
See repo https://github.com/matthewhughes-uw/setup-go-test/, very basic repo with a single workflow that just runs this action (https://github.com/matthewhughes-uw/setup-go-test/blob/main/.github/workflows/go.yaml):
First run of the action https://github.com/matthewhughes-uw/setup-go-test/actions/runs/6195831453/job/16821285537
- Installs Go 1.21.0 (version detected from
go-version-file
- Go detects toolchain and performs a toolchain install of Go 1.21.1 (see output
go: downloading go1.21.1 (linux/amd64)
) - This places some files under
../../../go/pkg/mod/golang.org/[email protected]
- Finds no existing cache, doesn't try to extract anything
- Caches
/home/runner/go/pkg/mod
(which contains the files above) and/home/runner/.cache/go-build
Second run of the action https://github.com/matthewhughes-uw/setup-go-test/actions/runs/6195844389/job/16821321968
- First two steps as above
- Finds an existing cache, attempts to extract it, but because of the toolchain installation step files under
../../../go/pkg/mod/golang.org/[email protected]
are already present on the machine, causing errors fromtar
Expected behavior:
Caching of the toolchain is handled gracefully, no errors between runs that don't contain any extra caching logic outside of what the action provides by default
Actual behavior:
Errors on cache extraction (see repro steps)