mirror of
				https://github.com/actions/setup-go.git
				synced 2025-10-31 07:22:00 +00:00 
			
		
		
		
	Compare commits
	
		
			14 Commits
		
	
	
		
			v6.0.0
			...
			node24-fix
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 83e99e7384 | ||
|   | 4cf7c0560d | ||
|   | 4fc21c0d5d | ||
|   | da434008b8 | ||
|   | 565ba0f11a | ||
|   | 7ca6144633 | ||
|   | af03c14274 | ||
|   | c3e3067955 | ||
|   | d7ffe7f414 | ||
|   | 22d9ca5e06 | ||
|   | b184a007c8 | ||
|   | 96c2b3c9c1 | ||
|   | 60b6f6b09a | ||
|   | abe7d6b8af | 
| @@ -14,7 +14,7 @@ jobs: | |||||||
|  |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Checking out |       - name: Checking out | ||||||
|         uses: actions/checkout@v5 |         uses: actions/checkout@v4 | ||||||
|       - name: Publish |       - name: Publish | ||||||
|         id: publish |         id: publish | ||||||
|         uses: actions/publish-immutable-action@v0.0.4 |         uses: actions/publish-immutable-action@v0.0.4 | ||||||
|   | |||||||
							
								
								
									
										20
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							| @@ -20,7 +20,7 @@ jobs: | |||||||
|       matrix: |       matrix: | ||||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] |         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - name: Setup Go Stable |       - name: Setup Go Stable | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @@ -35,7 +35,7 @@ jobs: | |||||||
|       matrix: |       matrix: | ||||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] |         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - name: Setup Go oldStable |       - name: Setup Go oldStable | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @@ -57,7 +57,7 @@ jobs: | |||||||
|           - os: macos-13 |           - os: macos-13 | ||||||
|             architecture: x32 |             architecture: x32 | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - name: Setup Go ${{ matrix.version }} ${{ matrix.architecture }} |       - name: Setup Go ${{ matrix.version }} ${{ matrix.architecture }} | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @@ -82,7 +82,7 @@ jobs: | |||||||
|             go: 1.23.2 |             go: 1.23.2 | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v5 |         uses: actions/checkout@v4 | ||||||
|  |  | ||||||
|       - name: setup-go ${{ matrix.go }} |       - name: setup-go ${{ matrix.go }} | ||||||
|         uses: ./ |         uses: ./ | ||||||
| @@ -101,7 +101,7 @@ jobs: | |||||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] |         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||||
|         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@v5 |       - uses: actions/checkout@v4 | ||||||
|       - name: Setup Go and check latest |       - name: Setup Go and check latest | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @@ -117,7 +117,7 @@ jobs: | |||||||
|       matrix: |       matrix: | ||||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] |         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - name: Setup Go and check latest |       - name: Setup Go and check latest | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @@ -133,7 +133,7 @@ jobs: | |||||||
|       matrix: |       matrix: | ||||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] |         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - name: Setup Go and check latest |       - name: Setup Go and check latest | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @@ -151,7 +151,7 @@ jobs: | |||||||
|         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@v5 |         uses: actions/checkout@v4 | ||||||
|  |  | ||||||
|       - name: setup-go ${{ matrix.go }} |       - name: setup-go ${{ matrix.go }} | ||||||
|         uses: ./ |         uses: ./ | ||||||
| @@ -171,7 +171,7 @@ jobs: | |||||||
|         go: [1.11.12] |         go: [1.11.12] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v5 |         uses: actions/checkout@v4 | ||||||
|  |  | ||||||
|       - name: setup-go ${{ matrix.go }} |       - name: setup-go ${{ matrix.go }} | ||||||
|         uses: ./ |         uses: ./ | ||||||
| @@ -199,7 +199,7 @@ jobs: | |||||||
|           - os: macos-13 |           - os: macos-13 | ||||||
|             architecture: x64 |             architecture: x64 | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v5 |       - uses: actions/checkout@v4 | ||||||
|       - 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@v5 |       - uses: actions/checkout@v4 | ||||||
|  |  | ||||||
|       - 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@v5 |       - uses: actions/checkout@v4 | ||||||
|  |  | ||||||
|       - 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@v5 |       - uses: actions/checkout@v4 | ||||||
|  |  | ||||||
|       - name: 'Setup ${{ matrix.go }}, cache: ${{ matrix.cache }}' |       - name: 'Setup ${{ matrix.go }}, cache: ${{ matrix.cache }}' | ||||||
|         uses: ./ |         uses: ./ | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								README.md
									
									
									
									
									
								
							| @@ -191,15 +191,9 @@ 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` | 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. | ||||||
| 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 | ||||||
|   | |||||||
| @@ -129,9 +129,6 @@ 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(); | ||||||
| @@ -288,7 +285,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 GOROOT for Go versions >=1.9', async () => { |   it('does not export any variables 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]); | ||||||
|  |  | ||||||
| @@ -301,7 +298,7 @@ describe('setup-go', () => { | |||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     await main.run(); |     await main.run(); | ||||||
|     expect(vars).not.toHaveProperty('GOROOT'); |     expect(vars).toStrictEqual({}); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   it('exports GOROOT for Go versions <1.9', async () => { |   it('exports GOROOT for Go versions <1.9', async () => { | ||||||
| @@ -317,7 +314,9 @@ describe('setup-go', () => { | |||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     await main.run(); |     await main.run(); | ||||||
|     expect(vars).toHaveProperty('GOROOT', toolPath); |     expect(vars).toStrictEqual({ | ||||||
|  |       GOROOT: toolPath | ||||||
|  |     }); | ||||||
|   }); |   }); | ||||||
|  |  | ||||||
|   it('finds a version of go already in the cache', async () => { |   it('finds a version of go already in the cache', async () => { | ||||||
| @@ -990,104 +989,4 @@ 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'); |  | ||||||
|   }); |  | ||||||
| }); | }); | ||||||
|   | |||||||
							
								
								
									
										31
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -94312,7 +94312,6 @@ 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; | ||||||
| @@ -94331,8 +94330,6 @@ 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'; | ||||||
| @@ -94666,18 +94663,8 @@ 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') { | ||||||
|         // for backwards compatibility: use version from go directive if
 |         const match = contents.match(/^go (\d+(\.\d+)*)/m); | ||||||
|         // 'GOTOOLCHAIN' has been explicitly set
 |         return match ? match[1] : ''; | ||||||
|         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] : ''; |  | ||||||
|     } |     } | ||||||
|     return contents.trim(); |     return contents.trim(); | ||||||
| } | } | ||||||
| @@ -94795,7 +94782,6 @@ 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'); | ||||||
| @@ -94904,19 +94890,6 @@ 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); |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| /***/ }), | /***/ }), | ||||||
|   | |||||||
| @@ -9,8 +9,6 @@ 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'; | ||||||
| @@ -498,21 +496,8 @@ 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' | ||||||
|   ) { |   ) { | ||||||
|     // for backwards compatibility: use version from go directive if |     const match = contents.match(/^go (\d+(\.\d+)*)/m); | ||||||
|     // 'GOTOOLCHAIN' has been explicitly set |     return match ? match[1] : ''; | ||||||
|     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] : ''; |  | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   return contents.trim(); |   return contents.trim(); | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								src/main.ts
									
									
									
									
									
								
							| @@ -17,7 +17,6 @@ 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}`); | ||||||
| @@ -162,20 +161,3 @@ 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