mirror of
				https://github.com/actions/setup-go.git
				synced 2025-10-31 15:50:33 +00:00 
			
		
		
		
	Compare commits
	
		
			6 Commits
		
	
	
		
			node24-fix
			...
			main
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | faf52423ec | ||
|   | 7bc60db215 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c0137caad7 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | 4469467582 | ||
|   | e093d1e9bb | ||
|   | 1d76b952eb | 
| @@ -14,7 +14,7 @@ jobs: | |||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Checking out |       - name: Checking out | ||||||
|         uses: actions/checkout@v4 |         uses: actions/checkout@v5 | ||||||
|       - name: Publish |       - name: Publish | ||||||
|         id: publish |         id: publish | ||||||
|         uses: actions/publish-immutable-action@v0.0.4 |         uses: actions/publish-immutable-action@v0.0.4 | ||||||
|   | |||||||
							
								
								
									
										60
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										60
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							| @@ -18,9 +18,9 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] |         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v5 | ||||||
|       - name: Setup Go Stable |       - name: Setup Go Stable | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @@ -33,9 +33,9 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] |         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v5 | ||||||
|       - name: Setup Go oldStable |       - name: Setup Go oldStable | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @@ -48,16 +48,16 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] |         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||||
|         version: [stable, oldstable] |         version: [stable, oldstable] | ||||||
|         architecture: [x64, x32] |         architecture: [x64, x32] | ||||||
|         exclude: |         exclude: | ||||||
|           - os: macos-latest |           - os: macos-latest | ||||||
|             architecture: x32 |             architecture: x32 | ||||||
|           - os: macos-13 |           - os: macos-latest-large | ||||||
|             architecture: x32 |             architecture: x32 | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v5 | ||||||
|       - name: Setup Go ${{ matrix.version }} ${{ matrix.architecture }} |       - name: Setup Go ${{ matrix.version }} ${{ matrix.architecture }} | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @@ -72,7 +72,7 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         os: [macos-latest, windows-latest, ubuntu-latest, macos-13] |         os: [macos-latest, windows-latest, ubuntu-latest, macos-latest-large] | ||||||
|         go: [1.21.13, 1.22.8, 1.23.2] |         go: [1.21.13, 1.22.8, 1.23.2] | ||||||
|         include: |         include: | ||||||
|           - os: windows-latest |           - os: windows-latest | ||||||
| @@ -82,7 +82,7 @@ jobs: | |||||||
|             go: 1.23.2 |             go: 1.23.2 | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v4 |         uses: actions/checkout@v5 | ||||||
|  |  | ||||||
|       - name: setup-go ${{ matrix.go }} |       - name: setup-go ${{ matrix.go }} | ||||||
|         uses: ./ |         uses: ./ | ||||||
| @@ -98,10 +98,10 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] |         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||||
|         go-version: ['1.20', '1.21', '1.22', '1.23'] |         go-version: ['1.20', '1.21', '1.22', '1.23'] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v5 | ||||||
|       - name: Setup Go and check latest |       - name: Setup Go and check latest | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @@ -115,9 +115,9 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] |         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v5 | ||||||
|       - name: Setup Go and check latest |       - name: Setup Go and check latest | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @@ -131,9 +131,9 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] |         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v5 | ||||||
|       - name: Setup Go and check latest |       - name: Setup Go and check latest | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @@ -142,16 +142,32 @@ jobs: | |||||||
|         run: __tests__/verify-go.sh 1.21 |         run: __tests__/verify-go.sh 1.21 | ||||||
|         shell: bash |         shell: bash | ||||||
|  |  | ||||||
|  |   go-version-file-with-tool-versions: | ||||||
|  |     runs-on: ${{ matrix.os }} | ||||||
|  |     strategy: | ||||||
|  |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v5 | ||||||
|  |       - name: Setup Go and check latest | ||||||
|  |         uses: ./ | ||||||
|  |         with: | ||||||
|  |           go-version-file: __tests__/data/.tool-versions | ||||||
|  |       - name: verify go | ||||||
|  |         run: __tests__/verify-go.sh 1.23.2 | ||||||
|  |         shell: bash | ||||||
|  |  | ||||||
|   setup-versions-from-manifest: |   setup-versions-from-manifest: | ||||||
|     runs-on: ${{ matrix.os }} |     runs-on: ${{ matrix.os }} | ||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         os: [macos-latest, windows-latest, ubuntu-latest, macos-13] |         os: [macos-latest, windows-latest, ubuntu-latest, macos-latest-large] | ||||||
|         go: [1.20.14, 1.21.10, 1.22.8, 1.23.2] |         go: [1.20.14, 1.21.10, 1.22.8, 1.23.2] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v4 |         uses: actions/checkout@v5 | ||||||
|  |  | ||||||
|       - name: setup-go ${{ matrix.go }} |       - name: setup-go ${{ matrix.go }} | ||||||
|         uses: ./ |         uses: ./ | ||||||
| @@ -167,11 +183,11 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         os: [windows-latest, ubuntu-latest, macos-13] |         os: [windows-latest, ubuntu-latest, macos-latest-large] | ||||||
|         go: [1.11.12] |         go: [1.11.12] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v4 |         uses: actions/checkout@v5 | ||||||
|  |  | ||||||
|       - name: setup-go ${{ matrix.go }} |       - name: setup-go ${{ matrix.go }} | ||||||
|         uses: ./ |         uses: ./ | ||||||
| @@ -187,7 +203,7 @@ jobs: | |||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] |         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||||
|         go-version: [1.20.14, 1.21, 1.22, 1.23] |         go-version: [1.20.14, 1.21, 1.22, 1.23] | ||||||
|         include: |         include: | ||||||
|           - os: macos-latest |           - os: macos-latest | ||||||
| @@ -196,10 +212,10 @@ jobs: | |||||||
|             architecture: x64 |             architecture: x64 | ||||||
|           - os: windows-latest |           - os: windows-latest | ||||||
|             architecture: x64 |             architecture: x64 | ||||||
|           - os: macos-13 |           - os: macos-latest-large | ||||||
|             architecture: x64 |             architecture: x64 | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v5 | ||||||
|       - name: Setup Go and check latest |       - name: Setup Go and check latest | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								.github/workflows/windows-validation.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/windows-validation.yml
									
									
									
									
										vendored
									
									
								
							| @@ -19,7 +19,7 @@ jobs: | |||||||
|         cache: [false, true] |         cache: [false, true] | ||||||
|         go: [1.20.1] |         go: [1.20.1] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v5 | ||||||
|  |  | ||||||
|       - name: 'Setup ${{ matrix.cache }}, cache: ${{ matrix.go }}' |       - name: 'Setup ${{ matrix.cache }}, cache: ${{ matrix.go }}' | ||||||
|         uses: ./ |         uses: ./ | ||||||
| @@ -88,7 +88,7 @@ jobs: | |||||||
|       matrix: |       matrix: | ||||||
|         cache: [false, true] |         cache: [false, true] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v5 | ||||||
|  |  | ||||||
|       - name: 'Setup default go, cache: ${{ matrix.cache }}' |       - name: 'Setup default go, cache: ${{ matrix.cache }}' | ||||||
|         uses: ./ |         uses: ./ | ||||||
| @@ -121,7 +121,7 @@ jobs: | |||||||
|         cache: [false] |         cache: [false] | ||||||
|         go: [1.20.1] |         go: [1.20.1] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v5 | ||||||
|  |  | ||||||
|       - name: 'Setup ${{ matrix.go }}, cache: ${{ matrix.cache }}' |       - name: 'Setup ${{ matrix.go }}, cache: ${{ matrix.cache }}' | ||||||
|         uses: ./ |         uses: ./ | ||||||
|   | |||||||
							
								
								
									
										52
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										52
									
								
								README.md
									
									
									
									
									
								
							| @@ -8,6 +8,14 @@ This action sets up a go environment for use in actions by: | |||||||
| - Optionally downloading and caching a version of Go by version and adding to `PATH`. | - Optionally downloading and caching a version of Go by version and adding to `PATH`. | ||||||
| - Registering problem matchers for error output. | - Registering problem matchers for error output. | ||||||
|  |  | ||||||
|  | # Breaking changes in V6 | ||||||
|  |  | ||||||
|  | - Improve toolchain handling to ensure more reliable and consistent toolchain selection and management. | ||||||
|  | - Upgraded from node20 to node24. | ||||||
|  |   > Make sure your runner is on version v2.327.1 or later to ensure compatibility with this release. [See Release Notes](https://github.com/actions/runner/releases/tag/v2.327.1) | ||||||
|  |  | ||||||
|  | For more details,  see the full release notes on the [releases page](https://github.com/actions/setup-go/releases/tag/v6.0.0) | ||||||
|  |  | ||||||
| # V5 | # V5 | ||||||
|  |  | ||||||
| The V5 edition of the action offers: | The V5 edition of the action offers: | ||||||
| @@ -16,31 +24,10 @@ The V5 edition of the action offers: | |||||||
|  |  | ||||||
| See full release notes on the [releases page](https://github.com/actions/setup-go/releases). | See full release notes on the [releases page](https://github.com/actions/setup-go/releases). | ||||||
|  |  | ||||||
| # V4 |  | ||||||
|  |  | ||||||
| The V4 edition of the action offers: |  | ||||||
|  |  | ||||||
|  - Enabled caching by default |  | ||||||
|  |  | ||||||
| The action will try to enable caching unless the `cache` input is explicitly set to false. |  | ||||||
|  |  | ||||||
| Please see "[Caching dependency files and build outputs](https://github.com/actions/setup-go#caching-dependency-files-and-build-outputs)" for more information. |  | ||||||
|  |  | ||||||
| # V3 |  | ||||||
|  |  | ||||||
| The V3 edition of the action offers: |  | ||||||
|  |  | ||||||
| - Adds `GOBIN` to the `PATH` |  | ||||||
| - Proxy support |  | ||||||
| - Check latest version |  | ||||||
| - Caching packages dependencies |  | ||||||
| - stable and oldstable aliases |  | ||||||
| - Bug Fixes (including issues around version matching and semver) |  | ||||||
|  |  | ||||||
| The action will first check the local cache for a version match. If a version is not found locally, it will pull it from | The action will first check the local cache for a version match. If a version is not found locally, it will pull it from | ||||||
| the `main` branch of the [go-versions](https://github.com/actions/go-versions/blob/main/versions-manifest.json) | the `main` branch of the [go-versions](https://github.com/actions/go-versions/blob/main/versions-manifest.json) | ||||||
| repository. On miss or failure, it will fall back to downloading directly | repository. On miss or failure, it will fall back to downloading directly | ||||||
| from [go dist](https://storage.googleapis.com/golang). To change the default behavior, please use | from [go dist](https://go.dev/dl). To change the default behavior, please use | ||||||
| the [check-latest input](#check-latest-version). | the [check-latest input](#check-latest-version). | ||||||
|  |  | ||||||
| **Note:** The `setup-go` action uses executable binaries which are built by Golang side. The action does not build | **Note:** The `setup-go` action uses executable binaries which are built by Golang side. The action does not build | ||||||
| @@ -191,9 +178,15 @@ steps: | |||||||
|  |  | ||||||
| ## Getting go version from the go.mod file | ## Getting go version from the go.mod file | ||||||
|  |  | ||||||
| The `go-version-file` input accepts a path to a `go.mod` file or a `go.work` file that contains the version of Go to be used by a project. | The `go-version-file` input accepts a path to a `go.mod` file, `.tool-versions` file or a `go.work` | ||||||
|  | file that contains the version of Go to be used by a project. The version taken | ||||||
|  | from thils file will be: | ||||||
|  |  | ||||||
|  |   - The version from the `toolchain` directive, if there is one, otherwise | ||||||
|  |   - The version from the `go` directive | ||||||
|  |  | ||||||
|  | The version can specify a patch version or omit it altogether (e.g., `go 1.22.0` or `go 1.22`). | ||||||
|  |  | ||||||
| The `go` directive in `go.mod` can specify a patch version or omit it altogether (e.g., `go 1.22.0` or `go 1.22`).   |  | ||||||
| If a patch version is specified, that specific patch version will be used.   | If a patch version is specified, that specific patch version will be used.   | ||||||
| If no patch version is specified, it will search for the latest available patch version in the cache, | If no patch version is specified, it will search for the latest available patch version in the cache, | ||||||
| [versions-manifest.json](https://github.com/actions/go-versions/blob/main/versions-manifest.json), and the | [versions-manifest.json](https://github.com/actions/go-versions/blob/main/versions-manifest.json), and the | ||||||
| @@ -210,6 +203,15 @@ steps: | |||||||
|       go-version-file: 'path/to/go.mod' |       go-version-file: 'path/to/go.mod' | ||||||
|   - run: go version |   - run: go version | ||||||
| ``` | ``` | ||||||
|  | ```yaml | ||||||
|  | steps: | ||||||
|  |   - uses: actions/checkout@v5 | ||||||
|  |   - uses: actions/setup-go@v6 | ||||||
|  |     with: | ||||||
|  |       go-version-file: '.tool-versions' | ||||||
|  |   - run: go version | ||||||
|  | ``` | ||||||
|  | > The [.tool-versions file](https://asdf-vm.com/manage/configuration.html#tool-versions) supports version specifications in accordance with asdf standards, adhering to Semantic Versioning ([semver](https://semver.org)). | ||||||
|  |  | ||||||
| ## Matrix testing | ## Matrix testing | ||||||
|  |  | ||||||
| @@ -247,7 +249,7 @@ When dynamically downloading Go distributions, `setup-go` downloads distribution | |||||||
|  |  | ||||||
| These calls to `actions/go-versions` are made via unauthenticated requests, which are limited to [60 requests per hour per IP](https://docs.github.com/en/rest/overview/resources-in-the-rest-api#rate-limiting). | These calls to `actions/go-versions` are made via unauthenticated requests, which are limited to [60 requests per hour per IP](https://docs.github.com/en/rest/overview/resources-in-the-rest-api#rate-limiting). | ||||||
| If more requests are made within the time frame, then the action leverages the `raw API` to retrieve the version-manifest. This approach does not impose a rate limit and hence facilitates unrestricted consumption. This is particularly beneficial for GHES runners, which often share the same IP, to avoid the quick exhaustion of the unauthenticated rate limit. | If more requests are made within the time frame, then the action leverages the `raw API` to retrieve the version-manifest. This approach does not impose a rate limit and hence facilitates unrestricted consumption. This is particularly beneficial for GHES runners, which often share the same IP, to avoid the quick exhaustion of the unauthenticated rate limit. | ||||||
| If that fails as well the action will try to download versions directly from https://storage.googleapis.com/golang. | If that fails as well the action will try to download versions directly from https://go.dev/dl. | ||||||
|  |  | ||||||
| If that fails as well you can get a higher rate limit with [generating a personal access token on github.com](https://github.com/settings/tokens/new) and passing it as the `token` input to the action: | If that fails as well you can get a higher rate limit with [generating a personal access token on github.com](https://github.com/settings/tokens/new) and passing it as the `token` input to the action: | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								__tests__/data/.tool-versions
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								__tests__/data/.tool-versions
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | golang 1.23.2 | ||||||
| @@ -129,6 +129,9 @@ describe('setup-go', () => { | |||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   afterEach(() => { |   afterEach(() => { | ||||||
|  |     // clear out env var set during 'run' | ||||||
|  |     delete process.env[im.GOTOOLCHAIN_ENV_VAR]; | ||||||
|  |  | ||||||
|     //jest.resetAllMocks(); |     //jest.resetAllMocks(); | ||||||
|     jest.clearAllMocks(); |     jest.clearAllMocks(); | ||||||
|     //jest.restoreAllMocks(); |     //jest.restoreAllMocks(); | ||||||
| @@ -285,7 +288,7 @@ describe('setup-go', () => { | |||||||
|     expect(logSpy).toHaveBeenCalledWith(`Setup go version spec 1.13.0`); |     expect(logSpy).toHaveBeenCalledWith(`Setup go version spec 1.13.0`); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   it('does not export any variables for Go versions >=1.9', async () => { |   it('does not export GOROOT for Go versions >=1.9', async () => { | ||||||
|     inputs['go-version'] = '1.13.0'; |     inputs['go-version'] = '1.13.0'; | ||||||
|     inSpy.mockImplementation(name => inputs[name]); |     inSpy.mockImplementation(name => inputs[name]); | ||||||
|  |  | ||||||
| @@ -298,7 +301,7 @@ describe('setup-go', () => { | |||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     await main.run(); |     await main.run(); | ||||||
|     expect(vars).toStrictEqual({}); |     expect(vars).not.toHaveProperty('GOROOT'); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   it('exports GOROOT for Go versions <1.9', async () => { |   it('exports GOROOT for Go versions <1.9', async () => { | ||||||
| @@ -314,9 +317,7 @@ describe('setup-go', () => { | |||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     await main.run(); |     await main.run(); | ||||||
|     expect(vars).toStrictEqual({ |     expect(vars).toHaveProperty('GOROOT', toolPath); | ||||||
|       GOROOT: toolPath |  | ||||||
|     }); |  | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   it('finds a version of go already in the cache', async () => { |   it('finds a version of go already in the cache', async () => { | ||||||
| @@ -388,7 +389,7 @@ describe('setup-go', () => { | |||||||
|  |  | ||||||
|     const expPath = path.win32.join(toolPath, 'bin'); |     const expPath = path.win32.join(toolPath, 'bin'); | ||||||
|     expect(dlSpy).toHaveBeenCalledWith( |     expect(dlSpy).toHaveBeenCalledWith( | ||||||
|       'https://storage.googleapis.com/golang/go1.13.1.windows-amd64.zip', |       'https://go.dev/dl/go1.13.1.windows-amd64.zip', | ||||||
|       'C:\\temp\\go1.13.1.windows-amd64.zip', |       'C:\\temp\\go1.13.1.windows-amd64.zip', | ||||||
|       undefined |       undefined | ||||||
|     ); |     ); | ||||||
| @@ -865,6 +866,9 @@ exclude example.com/thismodule v1.3.0 | |||||||
|  |  | ||||||
| use . | use . | ||||||
|  |  | ||||||
|  | `; | ||||||
|  |  | ||||||
|  |     const toolVersionsContents = `golang 1.23 | ||||||
| `; | `; | ||||||
|  |  | ||||||
|     it('reads version from go.mod', async () => { |     it('reads version from go.mod', async () => { | ||||||
| @@ -891,6 +895,18 @@ use . | |||||||
|       expect(logSpy).toHaveBeenCalledWith('matching 1.19...'); |       expect(logSpy).toHaveBeenCalledWith('matching 1.19...'); | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|  |     it('reads version from .tool-versions', async () => { | ||||||
|  |       inputs['go-version-file'] = '.tool-versions'; | ||||||
|  |       existsSpy.mockImplementation(() => true); | ||||||
|  |       readFileSpy.mockImplementation(() => Buffer.from(toolVersionsContents)); | ||||||
|  |  | ||||||
|  |       await main.run(); | ||||||
|  |  | ||||||
|  |       expect(logSpy).toHaveBeenCalledWith('Setup go version spec 1.23'); | ||||||
|  |       expect(logSpy).toHaveBeenCalledWith('Attempting to download 1.23...'); | ||||||
|  |       expect(logSpy).toHaveBeenCalledWith('matching 1.23...'); | ||||||
|  |     }); | ||||||
|  |  | ||||||
|     it('reads version from .go-version', async () => { |     it('reads version from .go-version', async () => { | ||||||
|       inputs['go-version-file'] = '.go-version'; |       inputs['go-version-file'] = '.go-version'; | ||||||
|       existsSpy.mockImplementation(() => true); |       existsSpy.mockImplementation(() => true); | ||||||
| @@ -945,7 +961,7 @@ use . | |||||||
|         const expectedUrl = |         const expectedUrl = | ||||||
|           platform === 'win32' |           platform === 'win32' | ||||||
|             ? `https://github.com/actions/go-versions/releases/download/${version}/go-${version}-${platform}-${arch}.${fileExtension}` |             ? `https://github.com/actions/go-versions/releases/download/${version}/go-${version}-${platform}-${arch}.${fileExtension}` | ||||||
|             : `https://storage.googleapis.com/golang/go${version}.${osSpec}-${arch}.${fileExtension}`; |             : `https://go.dev/dl/go${version}.${osSpec}-${arch}.${fileExtension}`; | ||||||
|  |  | ||||||
|         // ... but not in the local cache |         // ... but not in the local cache | ||||||
|         findSpy.mockImplementation(() => ''); |         findSpy.mockImplementation(() => ''); | ||||||
| @@ -989,4 +1005,104 @@ use . | |||||||
|       } |       } | ||||||
|     ); |     ); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|  |   describe('go-version-file-toolchain', () => { | ||||||
|  |     const goVersions = ['1.22.0', '1.21rc2', '1.18']; | ||||||
|  |     const placeholderVersion = '1.19'; | ||||||
|  |     const buildGoMod = ( | ||||||
|  |       goVersion: string, | ||||||
|  |       toolchainVersion: string | ||||||
|  |     ) => `module example.com/mymodule | ||||||
|  |  | ||||||
|  | go ${goVersion} | ||||||
|  |  | ||||||
|  | toolchain go${toolchainVersion} | ||||||
|  |  | ||||||
|  | require ( | ||||||
|  | 	example.com/othermodule v1.2.3 | ||||||
|  | 	example.com/thismodule v1.2.3 | ||||||
|  | 	example.com/thatmodule v1.2.3 | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | replace example.com/thatmodule => ../thatmodule | ||||||
|  | exclude example.com/thismodule v1.3.0 | ||||||
|  | `; | ||||||
|  |  | ||||||
|  |     const buildGoWork = ( | ||||||
|  |       goVersion: string, | ||||||
|  |       toolchainVersion: string | ||||||
|  |     ) => `go 1.19 | ||||||
|  |  | ||||||
|  | toolchain go${toolchainVersion} | ||||||
|  |  | ||||||
|  | use . | ||||||
|  |  | ||||||
|  | `; | ||||||
|  |  | ||||||
|  |     goVersions.forEach(version => { | ||||||
|  |       [ | ||||||
|  |         { | ||||||
|  |           goVersionfile: 'go.mod', | ||||||
|  |           fileContents: Buffer.from(buildGoMod(placeholderVersion, version)), | ||||||
|  |           expected_version: version, | ||||||
|  |           desc: 'from toolchain directive' | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           goVersionfile: 'go.work', | ||||||
|  |           fileContents: Buffer.from(buildGoMod(placeholderVersion, version)), | ||||||
|  |           expected_version: version, | ||||||
|  |           desc: 'from toolchain directive' | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           goVersionfile: 'go.mod', | ||||||
|  |           fileContents: Buffer.from(buildGoMod(placeholderVersion, version)), | ||||||
|  |           gotoolchain_env: 'local', | ||||||
|  |           expected_version: placeholderVersion, | ||||||
|  |           desc: 'from go directive when GOTOOLCHAIN is local' | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           goVersionfile: 'go.work', | ||||||
|  |           fileContents: Buffer.from(buildGoMod(placeholderVersion, version)), | ||||||
|  |           gotoolchain_env: 'local', | ||||||
|  |           expected_version: placeholderVersion, | ||||||
|  |           desc: 'from go directive when GOTOOLCHAIN is local' | ||||||
|  |         } | ||||||
|  |       ].forEach(test => { | ||||||
|  |         it(`reads version (${version}) in ${test.goVersionfile} ${test.desc}`, async () => { | ||||||
|  |           inputs['go-version-file'] = test.goVersionfile; | ||||||
|  |           if (test.gotoolchain_env !== undefined) { | ||||||
|  |             process.env[im.GOTOOLCHAIN_ENV_VAR] = test.gotoolchain_env; | ||||||
|  |           } | ||||||
|  |           existsSpy.mockImplementation(() => true); | ||||||
|  |           readFileSpy.mockImplementation(() => Buffer.from(test.fileContents)); | ||||||
|  |  | ||||||
|  |           await main.run(); | ||||||
|  |  | ||||||
|  |           expect(logSpy).toHaveBeenCalledWith( | ||||||
|  |             `Setup go version spec ${test.expected_version}` | ||||||
|  |           ); | ||||||
|  |           expect(logSpy).toHaveBeenCalledWith( | ||||||
|  |             `Attempting to download ${test.expected_version}...` | ||||||
|  |           ); | ||||||
|  |           expect(logSpy).toHaveBeenCalledWith( | ||||||
|  |             `matching ${test.expected_version}...` | ||||||
|  |           ); | ||||||
|  |         }); | ||||||
|  |       }); | ||||||
|  |     }); | ||||||
|  |   }); | ||||||
|  |  | ||||||
|  |   it('exports GOTOOLCHAIN and sets it in current process env', async () => { | ||||||
|  |     inputs['go-version'] = '1.21.0'; | ||||||
|  |     inSpy.mockImplementation(name => inputs[name]); | ||||||
|  |  | ||||||
|  |     const vars: {[key: string]: string} = {}; | ||||||
|  |     exportVarSpy.mockImplementation((name: string, val: string) => { | ||||||
|  |       vars[name] = val; | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     await main.run(); | ||||||
|  |     expect(vars).toStrictEqual({GOTOOLCHAIN: 'local'}); | ||||||
|  |     expect(process.env).toHaveProperty('GOTOOLCHAIN', 'local'); | ||||||
|  |   }); | ||||||
| }); | }); | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ inputs: | |||||||
|   go-version: |   go-version: | ||||||
|     description: 'The Go version to download (if necessary) and use. Supports semver spec and ranges. Be sure to enclose this option in single quotation marks.' |     description: 'The Go version to download (if necessary) and use. Supports semver spec and ranges. Be sure to enclose this option in single quotation marks.' | ||||||
|   go-version-file: |   go-version-file: | ||||||
|     description: 'Path to the go.mod or go.work file.' |     description: 'Path to the go.mod, .tool-versions, or go.work file.' | ||||||
|   check-latest: |   check-latest: | ||||||
|     description: 'Set this option to true if you want the action to always check for the latest available version that satisfies the version spec' |     description: 'Set this option to true if you want the action to always check for the latest available version that satisfies the version spec' | ||||||
|     default: false |     default: false | ||||||
|   | |||||||
							
								
								
									
										37
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										37
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -94312,6 +94312,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { | |||||||
|     return (mod && mod.__esModule) ? mod : { "default": mod }; |     return (mod && mod.__esModule) ? mod : { "default": mod }; | ||||||
| }; | }; | ||||||
| Object.defineProperty(exports, "__esModule", ({ value: true })); | Object.defineProperty(exports, "__esModule", ({ value: true })); | ||||||
|  | exports.GOTOOLCHAIN_LOCAL_VAL = exports.GOTOOLCHAIN_ENV_VAR = void 0; | ||||||
| exports.getGo = getGo; | exports.getGo = getGo; | ||||||
| exports.extractGoArchive = extractGoArchive; | exports.extractGoArchive = extractGoArchive; | ||||||
| exports.getManifest = getManifest; | exports.getManifest = getManifest; | ||||||
| @@ -94330,6 +94331,8 @@ const sys = __importStar(__nccwpck_require__(5632)); | |||||||
| const fs_1 = __importDefault(__nccwpck_require__(7147)); | const fs_1 = __importDefault(__nccwpck_require__(7147)); | ||||||
| const os_1 = __importDefault(__nccwpck_require__(2037)); | const os_1 = __importDefault(__nccwpck_require__(2037)); | ||||||
| const utils_1 = __nccwpck_require__(1314); | const utils_1 = __nccwpck_require__(1314); | ||||||
|  | exports.GOTOOLCHAIN_ENV_VAR = 'GOTOOLCHAIN'; | ||||||
|  | exports.GOTOOLCHAIN_LOCAL_VAL = 'local'; | ||||||
| const MANIFEST_REPO_OWNER = 'actions'; | const MANIFEST_REPO_OWNER = 'actions'; | ||||||
| const MANIFEST_REPO_NAME = 'go-versions'; | const MANIFEST_REPO_NAME = 'go-versions'; | ||||||
| const MANIFEST_REPO_BRANCH = 'main'; | const MANIFEST_REPO_BRANCH = 'main'; | ||||||
| @@ -94580,7 +94583,7 @@ function getInfoFromDist(versionSpec, arch) { | |||||||
|         if (!version) { |         if (!version) { | ||||||
|             return null; |             return null; | ||||||
|         } |         } | ||||||
|         const downloadUrl = `https://storage.googleapis.com/golang/${version.files[0].filename}`; |         const downloadUrl = `https://go.dev/dl/${version.files[0].filename}`; | ||||||
|         return { |         return { | ||||||
|             type: 'dist', |             type: 'dist', | ||||||
|             downloadUrl: downloadUrl, |             downloadUrl: downloadUrl, | ||||||
| @@ -94663,8 +94666,22 @@ function parseGoVersionFile(versionFilePath) { | |||||||
|     const contents = fs_1.default.readFileSync(versionFilePath).toString(); |     const contents = fs_1.default.readFileSync(versionFilePath).toString(); | ||||||
|     if (path.basename(versionFilePath) === 'go.mod' || |     if (path.basename(versionFilePath) === 'go.mod' || | ||||||
|         path.basename(versionFilePath) === 'go.work') { |         path.basename(versionFilePath) === 'go.work') { | ||||||
|         const match = contents.match(/^go (\d+(\.\d+)*)/m); |         // for backwards compatibility: use version from go directive if
 | ||||||
|         return match ? match[1] : ''; |         // 'GOTOOLCHAIN' has been explicitly set
 | ||||||
|  |         if (process.env[exports.GOTOOLCHAIN_ENV_VAR] !== exports.GOTOOLCHAIN_LOCAL_VAL) { | ||||||
|  |             // toolchain directive: https://go.dev/ref/mod#go-mod-file-toolchain
 | ||||||
|  |             const matchToolchain = contents.match(/^toolchain go(1\.\d+(?:\.\d+|rc\d+)?)/m); | ||||||
|  |             if (matchToolchain) { | ||||||
|  |                 return matchToolchain[1]; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         // go directive: https://go.dev/ref/mod#go-mod-file-go
 | ||||||
|  |         const matchGo = contents.match(/^go (\d+(\.\d+)*)/m); | ||||||
|  |         return matchGo ? matchGo[1] : ''; | ||||||
|  |     } | ||||||
|  |     else if (path.basename(versionFilePath) === '.tool-versions') { | ||||||
|  |         const match = contents.match(/^golang\s+([^\n#]+)/m); | ||||||
|  |         return match ? match[1].trim() : ''; | ||||||
|     } |     } | ||||||
|     return contents.trim(); |     return contents.trim(); | ||||||
| } | } | ||||||
| @@ -94782,6 +94799,7 @@ function run() { | |||||||
|             // If not supplied then problem matchers will still be setup.  Useful for self-hosted.
 |             // If not supplied then problem matchers will still be setup.  Useful for self-hosted.
 | ||||||
|             //
 |             //
 | ||||||
|             const versionSpec = resolveVersionInput(); |             const versionSpec = resolveVersionInput(); | ||||||
|  |             setGoToolchain(); | ||||||
|             const cache = core.getBooleanInput('cache'); |             const cache = core.getBooleanInput('cache'); | ||||||
|             core.info(`Setup go version spec ${versionSpec}`); |             core.info(`Setup go version spec ${versionSpec}`); | ||||||
|             let arch = core.getInput('architecture'); |             let arch = core.getInput('architecture'); | ||||||
| @@ -94890,6 +94908,19 @@ function resolveVersionInput() { | |||||||
|     } |     } | ||||||
|     return version; |     return version; | ||||||
| } | } | ||||||
|  | function setGoToolchain() { | ||||||
|  |     // docs: https://go.dev/doc/toolchain
 | ||||||
|  |     // "local indicates the bundled Go toolchain (the one that shipped with the go command being run)"
 | ||||||
|  |     // this is so any 'go' command is run with the selected Go version
 | ||||||
|  |     // and doesn't trigger a toolchain download and run commands with that
 | ||||||
|  |     // see e.g. issue #424
 | ||||||
|  |     // and a similar discussion: https://github.com/docker-library/golang/issues/472.
 | ||||||
|  |     // Set the value in process env so any `go` commands run as child-process
 | ||||||
|  |     // don't cause toolchain downloads
 | ||||||
|  |     process.env[installer.GOTOOLCHAIN_ENV_VAR] = installer.GOTOOLCHAIN_LOCAL_VAL; | ||||||
|  |     // and in the runner env so e.g. a user running `go mod tidy` won't cause it
 | ||||||
|  |     core.exportVariable(installer.GOTOOLCHAIN_ENV_VAR, installer.GOTOOLCHAIN_LOCAL_VAL); | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										14
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -26,7 +26,7 @@ | |||||||
|         "@typescript-eslint/parser": "^8.35.1", |         "@typescript-eslint/parser": "^8.35.1", | ||||||
|         "@vercel/ncc": "^0.38.1", |         "@vercel/ncc": "^0.38.1", | ||||||
|         "eslint": "^8.57.0", |         "eslint": "^8.57.0", | ||||||
|         "eslint-config-prettier": "^10.0.1", |         "eslint-config-prettier": "^10.1.8", | ||||||
|         "eslint-plugin-jest": "^29.0.1", |         "eslint-plugin-jest": "^29.0.1", | ||||||
|         "eslint-plugin-node": "^11.1.0", |         "eslint-plugin-node": "^11.1.0", | ||||||
|         "jest": "^29.7.0", |         "jest": "^29.7.0", | ||||||
| @@ -2984,12 +2984,16 @@ | |||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "node_modules/eslint-config-prettier": { |     "node_modules/eslint-config-prettier": { | ||||||
|       "version": "10.0.1", |       "version": "10.1.8", | ||||||
|       "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz", |       "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", | ||||||
|       "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==", |       "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", | ||||||
|       "dev": true, |       "dev": true, | ||||||
|  |       "license": "MIT", | ||||||
|       "bin": { |       "bin": { | ||||||
|         "eslint-config-prettier": "build/bin/cli.js" |         "eslint-config-prettier": "bin/cli.js" | ||||||
|  |       }, | ||||||
|  |       "funding": { | ||||||
|  |         "url": "https://opencollective.com/eslint-config-prettier" | ||||||
|       }, |       }, | ||||||
|       "peerDependencies": { |       "peerDependencies": { | ||||||
|         "eslint": ">=7.0.0" |         "eslint": ">=7.0.0" | ||||||
|   | |||||||
| @@ -45,7 +45,7 @@ | |||||||
|     "@typescript-eslint/parser": "^8.35.1", |     "@typescript-eslint/parser": "^8.35.1", | ||||||
|     "@vercel/ncc": "^0.38.1", |     "@vercel/ncc": "^0.38.1", | ||||||
|     "eslint": "^8.57.0", |     "eslint": "^8.57.0", | ||||||
|     "eslint-config-prettier": "^10.0.1", |     "eslint-config-prettier": "^10.1.8", | ||||||
|     "eslint-plugin-jest": "^29.0.1", |     "eslint-plugin-jest": "^29.0.1", | ||||||
|     "eslint-plugin-node": "^11.1.0", |     "eslint-plugin-node": "^11.1.0", | ||||||
|     "jest": "^29.7.0", |     "jest": "^29.7.0", | ||||||
|   | |||||||
| @@ -15,6 +15,7 @@ process.on('uncaughtException', e => { | |||||||
| // Added early exit to resolve issue with slow post action step: | // Added early exit to resolve issue with slow post action step: | ||||||
| // - https://github.com/actions/setup-node/issues/878 | // - https://github.com/actions/setup-node/issues/878 | ||||||
| // https://github.com/actions/cache/pull/1217 | // https://github.com/actions/cache/pull/1217 | ||||||
|  |  | ||||||
| export async function run(earlyExit?: boolean) { | export async function run(earlyExit?: boolean) { | ||||||
|   try { |   try { | ||||||
|     const cacheInput = core.getBooleanInput('cache'); |     const cacheInput = core.getBooleanInput('cache'); | ||||||
|   | |||||||
| @@ -9,6 +9,8 @@ import os from 'os'; | |||||||
| import {StableReleaseAlias, isSelfHosted} from './utils'; | import {StableReleaseAlias, isSelfHosted} from './utils'; | ||||||
| import {Architecture} from './types'; | import {Architecture} from './types'; | ||||||
|  |  | ||||||
|  | export const GOTOOLCHAIN_ENV_VAR = 'GOTOOLCHAIN'; | ||||||
|  | export const GOTOOLCHAIN_LOCAL_VAL = 'local'; | ||||||
| const MANIFEST_REPO_OWNER = 'actions'; | const MANIFEST_REPO_OWNER = 'actions'; | ||||||
| const MANIFEST_REPO_NAME = 'go-versions'; | const MANIFEST_REPO_NAME = 'go-versions'; | ||||||
| const MANIFEST_REPO_BRANCH = 'main'; | const MANIFEST_REPO_BRANCH = 'main'; | ||||||
| @@ -387,7 +389,7 @@ async function getInfoFromDist( | |||||||
|     return null; |     return null; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   const downloadUrl = `https://storage.googleapis.com/golang/${version.files[0].filename}`; |   const downloadUrl = `https://go.dev/dl/${version.files[0].filename}`; | ||||||
|  |  | ||||||
|   return <IGoVersionInfo>{ |   return <IGoVersionInfo>{ | ||||||
|     type: 'dist', |     type: 'dist', | ||||||
| @@ -496,8 +498,24 @@ export function parseGoVersionFile(versionFilePath: string): string { | |||||||
|     path.basename(versionFilePath) === 'go.mod' || |     path.basename(versionFilePath) === 'go.mod' || | ||||||
|     path.basename(versionFilePath) === 'go.work' |     path.basename(versionFilePath) === 'go.work' | ||||||
|   ) { |   ) { | ||||||
|     const match = contents.match(/^go (\d+(\.\d+)*)/m); |     // for backwards compatibility: use version from go directive if | ||||||
|     return match ? match[1] : ''; |     // 'GOTOOLCHAIN' has been explicitly set | ||||||
|  |     if (process.env[GOTOOLCHAIN_ENV_VAR] !== GOTOOLCHAIN_LOCAL_VAL) { | ||||||
|  |       // toolchain directive: https://go.dev/ref/mod#go-mod-file-toolchain | ||||||
|  |       const matchToolchain = contents.match( | ||||||
|  |         /^toolchain go(1\.\d+(?:\.\d+|rc\d+)?)/m | ||||||
|  |       ); | ||||||
|  |       if (matchToolchain) { | ||||||
|  |         return matchToolchain[1]; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // go directive: https://go.dev/ref/mod#go-mod-file-go | ||||||
|  |     const matchGo = contents.match(/^go (\d+(\.\d+)*)/m); | ||||||
|  |     return matchGo ? matchGo[1] : ''; | ||||||
|  |   } else if (path.basename(versionFilePath) === '.tool-versions') { | ||||||
|  |     const match = contents.match(/^golang\s+([^\n#]+)/m); | ||||||
|  |     return match ? match[1].trim() : ''; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   return contents.trim(); |   return contents.trim(); | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								src/main.ts
									
									
									
									
									
								
							| @@ -17,6 +17,7 @@ export async function run() { | |||||||
|     // If not supplied then problem matchers will still be setup.  Useful for self-hosted. |     // If not supplied then problem matchers will still be setup.  Useful for self-hosted. | ||||||
|     // |     // | ||||||
|     const versionSpec = resolveVersionInput(); |     const versionSpec = resolveVersionInput(); | ||||||
|  |     setGoToolchain(); | ||||||
|  |  | ||||||
|     const cache = core.getBooleanInput('cache'); |     const cache = core.getBooleanInput('cache'); | ||||||
|     core.info(`Setup go version spec ${versionSpec}`); |     core.info(`Setup go version spec ${versionSpec}`); | ||||||
| @@ -161,3 +162,20 @@ function resolveVersionInput(): string { | |||||||
|  |  | ||||||
|   return version; |   return version; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | function setGoToolchain() { | ||||||
|  |   // docs: https://go.dev/doc/toolchain | ||||||
|  |   // "local indicates the bundled Go toolchain (the one that shipped with the go command being run)" | ||||||
|  |   // this is so any 'go' command is run with the selected Go version | ||||||
|  |   // and doesn't trigger a toolchain download and run commands with that | ||||||
|  |   // see e.g. issue #424 | ||||||
|  |   // and a similar discussion: https://github.com/docker-library/golang/issues/472. | ||||||
|  |   // Set the value in process env so any `go` commands run as child-process | ||||||
|  |   // don't cause toolchain downloads | ||||||
|  |   process.env[installer.GOTOOLCHAIN_ENV_VAR] = installer.GOTOOLCHAIN_LOCAL_VAL; | ||||||
|  |   // and in the runner env so e.g. a user running `go mod tidy` won't cause it | ||||||
|  |   core.exportVariable( | ||||||
|  |     installer.GOTOOLCHAIN_ENV_VAR, | ||||||
|  |     installer.GOTOOLCHAIN_LOCAL_VAL | ||||||
|  |   ); | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user