mirror of
				https://github.com/actions/setup-go.git
				synced 2025-10-30 15:00:33 +00:00 
			
		
		
		
	Compare commits
	
		
			3 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | faf52423ec | ||
|   | 7bc60db215 | ||
| ![dependabot[bot]](/assets/img/avatar_default.png)  | c0137caad7 | 
							
								
								
									
										40
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							| @@ -18,7 +18,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Go Stable | ||||
| @@ -33,7 +33,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Go oldStable | ||||
| @@ -48,13 +48,13 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|         version: [stable, oldstable] | ||||
|         architecture: [x64, x32] | ||||
|         exclude: | ||||
|           - os: macos-latest | ||||
|             architecture: x32 | ||||
|           - os: macos-13 | ||||
|           - os: macos-latest-large | ||||
|             architecture: x32 | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
| @@ -72,7 +72,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       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] | ||||
|         include: | ||||
|           - os: windows-latest | ||||
| @@ -98,7 +98,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       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'] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
| @@ -115,7 +115,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Go and check latest | ||||
| @@ -131,7 +131,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest, macos-latest-large] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|       - name: Setup Go and check latest | ||||
| @@ -142,12 +142,28 @@ jobs: | ||||
|         run: __tests__/verify-go.sh 1.21 | ||||
|         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: | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       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] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
| @@ -167,7 +183,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [windows-latest, ubuntu-latest, macos-13] | ||||
|         os: [windows-latest, ubuntu-latest, macos-latest-large] | ||||
|         go: [1.11.12] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
| @@ -187,7 +203,7 @@ jobs: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       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] | ||||
|         include: | ||||
|           - os: macos-latest | ||||
| @@ -196,7 +212,7 @@ jobs: | ||||
|             architecture: x64 | ||||
|           - os: windows-latest | ||||
|             architecture: x64 | ||||
|           - os: macos-13 | ||||
|           - os: macos-latest-large | ||||
|             architecture: x64 | ||||
|     steps: | ||||
|       - uses: actions/checkout@v5 | ||||
|   | ||||
							
								
								
									
										44
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										44
									
								
								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`. | ||||
| - 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 | ||||
|  | ||||
| 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). | ||||
|  | ||||
| # 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 `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 | ||||
| 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). | ||||
|  | ||||
| **Note:** The `setup-go` action uses executable binaries which are built by Golang side. The action does not build | ||||
| @@ -191,7 +178,7 @@ steps: | ||||
|  | ||||
| ## 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, `.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: | ||||
|  | ||||
| @@ -216,6 +203,15 @@ steps: | ||||
|       go-version-file: 'path/to/go.mod' | ||||
|   - 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 | ||||
|  | ||||
| @@ -253,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). | ||||
| 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: | ||||
|  | ||||
|   | ||||
							
								
								
									
										1
									
								
								__tests__/data/.tool-versions
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								__tests__/data/.tool-versions
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| golang 1.23.2 | ||||
| @@ -389,7 +389,7 @@ describe('setup-go', () => { | ||||
|  | ||||
|     const expPath = path.win32.join(toolPath, 'bin'); | ||||
|     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', | ||||
|       undefined | ||||
|     ); | ||||
| @@ -866,6 +866,9 @@ exclude example.com/thismodule v1.3.0 | ||||
|  | ||||
| use . | ||||
|  | ||||
| `; | ||||
|  | ||||
|     const toolVersionsContents = `golang 1.23 | ||||
| `; | ||||
|  | ||||
|     it('reads version from go.mod', async () => { | ||||
| @@ -892,6 +895,18 @@ use . | ||||
|       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 () => { | ||||
|       inputs['go-version-file'] = '.go-version'; | ||||
|       existsSpy.mockImplementation(() => true); | ||||
| @@ -946,7 +961,7 @@ use . | ||||
|         const expectedUrl = | ||||
|           platform === 'win32' | ||||
|             ? `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 | ||||
|         findSpy.mockImplementation(() => ''); | ||||
|   | ||||
| @@ -5,7 +5,7 @@ inputs: | ||||
|   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.' | ||||
|   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: | ||||
|     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 | ||||
|   | ||||
							
								
								
									
										6
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							| @@ -94583,7 +94583,7 @@ function getInfoFromDist(versionSpec, arch) { | ||||
|         if (!version) { | ||||
|             return null; | ||||
|         } | ||||
|         const downloadUrl = `https://storage.googleapis.com/golang/${version.files[0].filename}`; | ||||
|         const downloadUrl = `https://go.dev/dl/${version.files[0].filename}`; | ||||
|         return { | ||||
|             type: 'dist', | ||||
|             downloadUrl: downloadUrl, | ||||
| @@ -94679,6 +94679,10 @@ function parseGoVersionFile(versionFilePath) { | ||||
|         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(); | ||||
| } | ||||
| function resolveStableVersionDist(versionSpec, arch) { | ||||
|   | ||||
							
								
								
									
										14
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										14
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -26,7 +26,7 @@ | ||||
|         "@typescript-eslint/parser": "^8.35.1", | ||||
|         "@vercel/ncc": "^0.38.1", | ||||
|         "eslint": "^8.57.0", | ||||
|         "eslint-config-prettier": "^10.0.1", | ||||
|         "eslint-config-prettier": "^10.1.8", | ||||
|         "eslint-plugin-jest": "^29.0.1", | ||||
|         "eslint-plugin-node": "^11.1.0", | ||||
|         "jest": "^29.7.0", | ||||
| @@ -2984,12 +2984,16 @@ | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/eslint-config-prettier": { | ||||
|       "version": "10.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz", | ||||
|       "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==", | ||||
|       "version": "10.1.8", | ||||
|       "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", | ||||
|       "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", | ||||
|       "dev": true, | ||||
|       "license": "MIT", | ||||
|       "bin": { | ||||
|         "eslint-config-prettier": "build/bin/cli.js" | ||||
|         "eslint-config-prettier": "bin/cli.js" | ||||
|       }, | ||||
|       "funding": { | ||||
|         "url": "https://opencollective.com/eslint-config-prettier" | ||||
|       }, | ||||
|       "peerDependencies": { | ||||
|         "eslint": ">=7.0.0" | ||||
|   | ||||
| @@ -45,7 +45,7 @@ | ||||
|     "@typescript-eslint/parser": "^8.35.1", | ||||
|     "@vercel/ncc": "^0.38.1", | ||||
|     "eslint": "^8.57.0", | ||||
|     "eslint-config-prettier": "^10.0.1", | ||||
|     "eslint-config-prettier": "^10.1.8", | ||||
|     "eslint-plugin-jest": "^29.0.1", | ||||
|     "eslint-plugin-node": "^11.1.0", | ||||
|     "jest": "^29.7.0", | ||||
|   | ||||
| @@ -15,6 +15,7 @@ process.on('uncaughtException', e => { | ||||
| // Added early exit to resolve issue with slow post action step: | ||||
| // - https://github.com/actions/setup-node/issues/878 | ||||
| // https://github.com/actions/cache/pull/1217 | ||||
|  | ||||
| export async function run(earlyExit?: boolean) { | ||||
|   try { | ||||
|     const cacheInput = core.getBooleanInput('cache'); | ||||
|   | ||||
| @@ -389,7 +389,7 @@ async function getInfoFromDist( | ||||
|     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>{ | ||||
|     type: 'dist', | ||||
| @@ -513,6 +513,9 @@ export function parseGoVersionFile(versionFilePath: string): string { | ||||
|     // 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(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user