mirror of https://github.com/actions/setup-go.git
				
				
				
			Merge a16a57d83d into c0137caad7
				
					
				
			This commit is contained in:
		
						commit
						dfa5e1d0b6
					
				|  | @ -142,6 +142,28 @@ jobs: | ||||||
|         run: __tests__/verify-go.sh 1.21 |         run: __tests__/verify-go.sh 1.21 | ||||||
|         shell: bash |         shell: bash | ||||||
| 
 | 
 | ||||||
|  |   auto-detect-go-mod: | ||||||
|  |     runs-on: ${{ matrix.os }} | ||||||
|  |     strategy: | ||||||
|  |       fail-fast: false | ||||||
|  |       matrix: | ||||||
|  |         os: [ubuntu-latest, windows-latest, macos-latest, macos-13] | ||||||
|  |     steps: | ||||||
|  |       - uses: actions/checkout@v5 | ||||||
|  |       - name: Create go.mod in workspace root | ||||||
|  |         run: | | ||||||
|  |           cat > go.mod << 'EOF' | ||||||
|  |           module github.com/actions/setup-go | ||||||
|  | 
 | ||||||
|  |           go 1.21 | ||||||
|  |           EOF | ||||||
|  |         shell: bash | ||||||
|  |       - name: Setup Go with auto-detection | ||||||
|  |         uses: ./ | ||||||
|  |       - name: Verify go version | ||||||
|  |         run: __tests__/verify-go.sh 1.21 | ||||||
|  |         shell: bash | ||||||
|  | 
 | ||||||
|   setup-versions-from-manifest: |   setup-versions-from-manifest: | ||||||
|     runs-on: ${{ matrix.os }} |     runs-on: ${{ matrix.os }} | ||||||
|     strategy: |     strategy: | ||||||
|  |  | ||||||
							
								
								
									
										14
									
								
								README.md
								
								
								
								
							
							
						
						
									
										14
									
								
								README.md
								
								
								
								
							|  | @ -192,6 +192,20 @@ If no patch version is specified, it will search for the latest available patch | ||||||
| [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 | ||||||
| [official Go language website](https://golang.org/dl/?mode=json&include=all), in that order. | [official Go language website](https://golang.org/dl/?mode=json&include=all), in that order. | ||||||
| 
 | 
 | ||||||
|  | ### Automatic go.mod detection | ||||||
|  | 
 | ||||||
|  | **New in v6**: If neither `go-version` nor `go-version-file` is specified, the action will automatically look for a `go.mod` file in the repository root and use the Go version specified in it. This simplifies workflows for projects that already have a `go.mod` file. | ||||||
|  | 
 | ||||||
|  | ```yaml | ||||||
|  | steps: | ||||||
|  |   - uses: actions/checkout@v5 | ||||||
|  |   - uses: actions/setup-go@v6 | ||||||
|  |     # Automatically uses go.mod from repository root | ||||||
|  |   - run: go version | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | ### Specifying a custom path | ||||||
|  | 
 | ||||||
| If both the `go-version` and the `go-version-file` inputs are provided then the `go-version` input is used. | If both the `go-version` and the `go-version-file` inputs are provided then the `go-version` input is used. | ||||||
| > The action will search for the `go.mod` file relative to the repository root | > The action will search for the `go.mod` file relative to the repository root | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1090,4 +1090,29 @@ use . | ||||||
|     expect(vars).toStrictEqual({GOTOOLCHAIN: 'local'}); |     expect(vars).toStrictEqual({GOTOOLCHAIN: 'local'}); | ||||||
|     expect(process.env).toHaveProperty('GOTOOLCHAIN', 'local'); |     expect(process.env).toHaveProperty('GOTOOLCHAIN', 'local'); | ||||||
|   }); |   }); | ||||||
|  | 
 | ||||||
|  |   describe('auto-detect go.mod', () => { | ||||||
|  |     it('uses go.mod from workspace root when no inputs provided', async () => { | ||||||
|  |       existsSpy.mockImplementation((filePath: string) => { | ||||||
|  |         return filePath === 'go.mod'; | ||||||
|  |       }); | ||||||
|  |       readFileSpy.mockImplementation(() => | ||||||
|  |         Buffer.from('module test\n\ngo 1.20') | ||||||
|  |       ); | ||||||
|  | 
 | ||||||
|  |       await main.run(); | ||||||
|  | 
 | ||||||
|  |       expect(logSpy).toHaveBeenCalledWith('Setup go version spec 1.20'); | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     it('uses pre-installed Go when no inputs and no go.mod exists', async () => { | ||||||
|  |       existsSpy.mockImplementation(() => false); | ||||||
|  | 
 | ||||||
|  |       await main.run(); | ||||||
|  | 
 | ||||||
|  |       expect(logSpy).toHaveBeenCalledWith( | ||||||
|  |         '[warning]go-version input was not specified. The action will try to use pre-installed version.' | ||||||
|  |       ); | ||||||
|  |     }); | ||||||
|  |   }); | ||||||
| }); | }); | ||||||
|  |  | ||||||
|  | @ -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 or go.work file. If not specified, the action will automatically use go.mod from the workspace root if it exists.' | ||||||
|   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 | ||||||
|  |  | ||||||
|  | @ -94902,6 +94902,9 @@ function resolveVersionInput() { | ||||||
|         } |         } | ||||||
|         version = installer.parseGoVersionFile(versionFilePath); |         version = installer.parseGoVersionFile(versionFilePath); | ||||||
|     } |     } | ||||||
|  |     if (!version && fs_1.default.existsSync('go.mod')) { | ||||||
|  |         version = installer.parseGoVersionFile('go.mod'); | ||||||
|  |     } | ||||||
|     return version; |     return version; | ||||||
| } | } | ||||||
| function setGoToolchain() { | function setGoToolchain() { | ||||||
|  |  | ||||||
|  | @ -160,6 +160,10 @@ function resolveVersionInput(): string { | ||||||
|     version = installer.parseGoVersionFile(versionFilePath); |     version = installer.parseGoVersionFile(versionFilePath); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   if (!version && fs.existsSync('go.mod')) { | ||||||
|  |     version = installer.parseGoVersionFile('go.mod'); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   return version; |   return version; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 RaeCheol Park
						RaeCheol Park