Compare commits
	
		
			No commits in common. "main" and "v4.0.1" have entirely different histories.
		
	
	
		
	
		
| @ -7,7 +7,7 @@ module.exports = { | |||||||
|     'eslint-config-prettier' |     'eslint-config-prettier' | ||||||
|   ], |   ], | ||||||
|   parser: '@typescript-eslint/parser', |   parser: '@typescript-eslint/parser', | ||||||
|   plugins: ['@typescript-eslint', 'eslint-plugin-node', 'eslint-plugin-jest'], |   plugins: ['@typescript-eslint', 'eslint-plugin-jest'], | ||||||
|   rules: { |   rules: { | ||||||
|     '@typescript-eslint/no-require-imports': 'error', |     '@typescript-eslint/no-require-imports': 'error', | ||||||
|     '@typescript-eslint/no-non-null-assertion': 'off', |     '@typescript-eslint/no-non-null-assertion': 'off', | ||||||
| @ -28,8 +28,7 @@ module.exports = { | |||||||
|       } |       } | ||||||
|     ], |     ], | ||||||
|     'no-control-regex': 'off', |     'no-control-regex': 'off', | ||||||
|     'no-constant-condition': ['error', {checkLoops: false}], |     'no-constant-condition': ['error', {checkLoops: false}] | ||||||
|     'node/no-extraneous-import': 'error' |  | ||||||
|   }, |   }, | ||||||
|   overrides: [ |   overrides: [ | ||||||
|     { |     { | ||||||
|  | |||||||
							
								
								
									
										22
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,22 +0,0 @@ | |||||||
| # To get started with Dependabot version updates, you'll need to specify which |  | ||||||
| # package ecosystems to update and where the package manifests are located. |  | ||||||
| # Please see the documentation for all configuration options: |  | ||||||
| # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file |  | ||||||
| 
 |  | ||||||
| version: 2 |  | ||||||
| updates: |  | ||||||
|   # Enable version updates for npm |  | ||||||
|   - package-ecosystem: 'npm' |  | ||||||
|     # Look for `package.json` and `lock` files in the `root` directory |  | ||||||
|     directory: '/' |  | ||||||
|     # Check the npm registry for updates every day (weekdays) |  | ||||||
|     schedule: |  | ||||||
|       interval: 'weekly' |  | ||||||
| 
 |  | ||||||
|   # Enable version updates for GitHub Actions |  | ||||||
|   - package-ecosystem: 'github-actions' |  | ||||||
|     # Workflow files stored in the default location of `.github/workflows` |  | ||||||
|     # You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`. |  | ||||||
|     directory: '/' |  | ||||||
|     schedule: |  | ||||||
|       interval: 'weekly' |  | ||||||
							
								
								
									
										2
									
								
								.github/workflows/basic-validation.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/basic-validation.yml
									
									
									
									
										vendored
									
									
								
							| @ -14,5 +14,3 @@ jobs: | |||||||
|   call-basic-validation: |   call-basic-validation: | ||||||
|     name: Basic validation |     name: Basic validation | ||||||
|     uses: actions/reusable-workflows/.github/workflows/basic-validation.yml@main |     uses: actions/reusable-workflows/.github/workflows/basic-validation.yml@main | ||||||
|     with: |  | ||||||
|       node-version: '20' |  | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								.github/workflows/check-dist.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/check-dist.yml
									
									
									
									
										vendored
									
									
								
							| @ -15,5 +15,3 @@ jobs: | |||||||
|   call-check-dist: |   call-check-dist: | ||||||
|     name: Check dist/ |     name: Check dist/ | ||||||
|     uses: actions/reusable-workflows/.github/workflows/check-dist.yml@main |     uses: actions/reusable-workflows/.github/workflows/check-dist.yml@main | ||||||
|     with: |  | ||||||
|       node-version: '20' |  | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								.github/workflows/publish-immutable-actions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/publish-immutable-actions.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,20 +0,0 @@ | |||||||
| name: 'Publish Immutable Action Version' |  | ||||||
| 
 |  | ||||||
| on: |  | ||||||
|   release: |  | ||||||
|     types: [published] |  | ||||||
| 
 |  | ||||||
| jobs: |  | ||||||
|   publish: |  | ||||||
|     runs-on: ubuntu-latest |  | ||||||
|     permissions: |  | ||||||
|       contents: read |  | ||||||
|       id-token: write |  | ||||||
|       packages: write |  | ||||||
| 
 |  | ||||||
|     steps: |  | ||||||
|       - name: Checking out |  | ||||||
|         uses: actions/checkout@v4 |  | ||||||
|       - name: Publish |  | ||||||
|         id: publish |  | ||||||
|         uses: actions/publish-immutable-action@v0.0.4 |  | ||||||
| @ -22,7 +22,7 @@ jobs: | |||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     steps: |     steps: | ||||||
|       - name: Update the ${{ env.TAG_NAME }} tag |       - name: Update the ${{ env.TAG_NAME }} tag | ||||||
|         uses: actions/publish-action@v0.3.0 |         uses: actions/publish-action@v0.2.2 | ||||||
|         with: |         with: | ||||||
|           source-tag: ${{ env.TAG_NAME }} |           source-tag: ${{ env.TAG_NAME }} | ||||||
|           slack-webhook: ${{ secrets.SLACK_WEBHOOK }} |           slack-webhook: ${{ secrets.SLACK_WEBHOOK }} | ||||||
|  | |||||||
							
								
								
									
										75
									
								
								.github/workflows/versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										75
									
								
								.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] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v3 | ||||||
|       - 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] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v3 | ||||||
|       - name: Setup Go oldStable |       - name: Setup Go oldStable | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @ -48,16 +48,14 @@ 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] | ||||||
|         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 |  | ||||||
|             architecture: x32 |  | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v3 | ||||||
|       - name: Setup Go ${{ matrix.version }} ${{ matrix.architecture }} |       - name: Setup Go ${{ matrix.version }} ${{ matrix.architecture }} | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @ -72,17 +70,11 @@ 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] | ||||||
|         go: [1.21.13, 1.22.8, 1.23.2] |         go: [1.17, 1.18, 1.19] | ||||||
|         include: |  | ||||||
|           - os: windows-latest |  | ||||||
|             go: 1.20.14 |  | ||||||
|         exclude: |  | ||||||
|           - os: windows-latest |  | ||||||
|             go: 1.23.2 |  | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v4 |         uses: actions/checkout@v3 | ||||||
| 
 | 
 | ||||||
|       - name: setup-go ${{ matrix.go }} |       - name: setup-go ${{ matrix.go }} | ||||||
|         uses: ./ |         uses: ./ | ||||||
| @ -98,10 +90,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] | ||||||
|         go-version: ['1.20', '1.21', '1.22', '1.23'] |         go-version: [1.16, 1.17] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v3 | ||||||
|       - name: Setup Go and check latest |       - name: Setup Go and check latest | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
| @ -115,15 +107,15 @@ 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] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v3 | ||||||
|       - name: Setup Go and check latest |       - name: Setup Go and check latest | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
|           go-version-file: __tests__/data/go.mod |           go-version-file: __tests__/data/go.mod | ||||||
|       - name: verify go |       - name: verify go | ||||||
|         run: __tests__/verify-go.sh 1.20.14 |         run: __tests__/verify-go.sh 1.14 | ||||||
|         shell: bash |         shell: bash | ||||||
| 
 | 
 | ||||||
|   go-version-file-with-gowork: |   go-version-file-with-gowork: | ||||||
| @ -131,27 +123,28 @@ 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] | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v3 | ||||||
|       - name: Setup Go and check latest |       - name: Setup Go and check latest | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
|           go-version-file: __tests__/data/go.work |           go-version-file: __tests__/data/go.work | ||||||
|       - name: verify go |       - name: verify go | ||||||
|         run: __tests__/verify-go.sh 1.21 |         run: __tests__/verify-go.sh 1.19 | ||||||
|         shell: bash |         shell: bash | ||||||
| 
 | 
 | ||||||
|   setup-versions-from-manifest: |   setup-versions-from-manifest: | ||||||
|  |     name: Setup ${{ matrix.go }} ${{ matrix.os }} | ||||||
|     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] | ||||||
|         go: [1.20.14, 1.21.10, 1.22.8, 1.23.2] |         go: [1.12.16, 1.13.11, 1.14.3] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v4 |         uses: actions/checkout@v3 | ||||||
| 
 | 
 | ||||||
|       - name: setup-go ${{ matrix.go }} |       - name: setup-go ${{ matrix.go }} | ||||||
|         uses: ./ |         uses: ./ | ||||||
| @ -163,15 +156,16 @@ jobs: | |||||||
|         shell: bash |         shell: bash | ||||||
| 
 | 
 | ||||||
|   setup-versions-from-dist: |   setup-versions-from-dist: | ||||||
|  |     name: Setup ${{ matrix.go }} ${{ matrix.os }} | ||||||
|     runs-on: ${{ matrix.os }} |     runs-on: ${{ matrix.os }} | ||||||
|     strategy: |     strategy: | ||||||
|       fail-fast: false |       fail-fast: false | ||||||
|       matrix: |       matrix: | ||||||
|         os: [windows-latest, ubuntu-latest, macos-13] |         os: [macos-latest, windows-latest, ubuntu-latest] | ||||||
|         go: [1.11.12] |         go: [1.9, 1.8.6] | ||||||
|     steps: |     steps: | ||||||
|       - name: Checkout |       - name: Checkout | ||||||
|         uses: actions/checkout@v4 |         uses: actions/checkout@v3 | ||||||
| 
 | 
 | ||||||
|       - name: setup-go ${{ matrix.go }} |       - name: setup-go ${{ matrix.go }} | ||||||
|         uses: ./ |         uses: ./ | ||||||
| @ -187,23 +181,14 @@ 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] | ||||||
|         go-version: [1.20.14, 1.21, 1.22, 1.23] |         go-version: [1.16, 1.17] | ||||||
|         include: |  | ||||||
|           - os: macos-latest |  | ||||||
|             architecture: arm64 |  | ||||||
|           - os: ubuntu-latest |  | ||||||
|             architecture: x64 |  | ||||||
|           - os: windows-latest |  | ||||||
|             architecture: x64 |  | ||||||
|           - os: macos-13 |  | ||||||
|             architecture: x64 |  | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v3 | ||||||
|       - name: Setup Go and check latest |       - name: Setup Go and check latest | ||||||
|         uses: ./ |         uses: ./ | ||||||
|         with: |         with: | ||||||
|           go-version: ${{ matrix.go-version }} |           go-version: ${{ matrix.go-version }} | ||||||
|           architecture: ${{ matrix.architecture }} |           architecture: x64 | ||||||
|       - name: Verify Go |       - name: Verify Go | ||||||
|         run: go version |         run: go version | ||||||
|  | |||||||
							
								
								
									
										136
									
								
								.github/workflows/windows-validation.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										136
									
								
								.github/workflows/windows-validation.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,136 +0,0 @@ | |||||||
| name: Validate Windows installation |  | ||||||
| 
 |  | ||||||
| on: |  | ||||||
|   push: |  | ||||||
|     branches: |  | ||||||
|       - main |  | ||||||
|     paths-ignore: |  | ||||||
|       - '**.md' |  | ||||||
|   pull_request: |  | ||||||
|     paths-ignore: |  | ||||||
|       - '**.md' |  | ||||||
| 
 |  | ||||||
| jobs: |  | ||||||
|   create-link-if-not-default: |  | ||||||
|     runs-on: windows-latest |  | ||||||
|     name: 'Validate if symlink is created' |  | ||||||
|     strategy: |  | ||||||
|       matrix: |  | ||||||
|         cache: [false, true] |  | ||||||
|         go: [1.20.1] |  | ||||||
|     steps: |  | ||||||
|       - uses: actions/checkout@v4 |  | ||||||
| 
 |  | ||||||
|       - name: 'Setup ${{ matrix.cache }}, cache: ${{ matrix.go }}' |  | ||||||
|         uses: ./ |  | ||||||
|         with: |  | ||||||
|           go-version: ${{ matrix.go }} |  | ||||||
|           cache: ${{ matrix.cache }} |  | ||||||
| 
 |  | ||||||
|       - name: 'Drive C: should have zero size link' |  | ||||||
|         run: | |  | ||||||
|           du -m -s 'C:\hostedtoolcache\windows\go\${{ matrix.go }}\x64' |  | ||||||
|           # make sure drive c: contains only a link |  | ||||||
|           size=$(du -m -s 'C:\hostedtoolcache\windows\go\${{ matrix.go }}\x64'|cut -f1 -d$'\t') |  | ||||||
|           if [ $size -ne 0 ];then |  | ||||||
|             echo 'Size of the link created on drive c: must be 0' |  | ||||||
|             exit 1 |  | ||||||
|           fi |  | ||||||
|         shell: bash |  | ||||||
| 
 |  | ||||||
|       # Drive D: is small, take care the action does not eat up the space |  | ||||||
|       - name: 'Drive D: space usage should be below 1G' |  | ||||||
|         run: | |  | ||||||
|           du -m -s 'D:\hostedtoolcache\windows\go\${{ matrix.go }}\x64' |  | ||||||
|           size=$(du -m -s 'D:\hostedtoolcache\windows\go\${{ matrix.go }}\x64'|cut -f1 -d$'\t') |  | ||||||
|           # make sure archive does not take lot of space |  | ||||||
|           if [ $size -gt 999 ];then |  | ||||||
|             echo 'Size of installed on drive d: go is too big'; |  | ||||||
|             exit 1 |  | ||||||
|           fi |  | ||||||
|         shell: bash |  | ||||||
| 
 |  | ||||||
|       # make sure the Go installation has not been changed to the end user |  | ||||||
|       - name: Test paths and environments |  | ||||||
|         run: | |  | ||||||
|           echo $PATH |  | ||||||
|           which go |  | ||||||
|           go version |  | ||||||
|           go env |  | ||||||
|           if [ $(which go) != '/c/hostedtoolcache/windows/go/${{ matrix.go }}/x64/bin/go' ];then |  | ||||||
|             echo 'which go should return "/c/hostedtoolcache/windows/go/${{ matrix.go }}/x64/bin/go"' |  | ||||||
|             exit 1 |  | ||||||
|           fi |  | ||||||
|           if [ $(go env GOROOT) != 'C:\hostedtoolcache\windows\go\${{ matrix.go }}\x64' ];then |  | ||||||
|             echo 'go env GOROOT should return "C:\hostedtoolcache\windows\go\${{ matrix.go }}\x64"' |  | ||||||
|             exit 1 |  | ||||||
|           fi |  | ||||||
|         shell: bash |  | ||||||
| 
 |  | ||||||
|   find-default-go: |  | ||||||
|     name: 'Find default go version' |  | ||||||
|     runs-on: windows-latest |  | ||||||
|     outputs: |  | ||||||
|       version: ${{ steps.goversion.outputs.version }} |  | ||||||
|     steps: |  | ||||||
|       - run: | |  | ||||||
|           version=`go env GOVERSION|sed s/^go//` |  | ||||||
|           echo "default go version: $version" |  | ||||||
|           echo "version=$version" >> "$GITHUB_OUTPUT" |  | ||||||
|         id: goversion |  | ||||||
|         shell: bash |  | ||||||
| 
 |  | ||||||
|   dont-create-link-if-default: |  | ||||||
|     name: 'Validate if symlink is not created for default go' |  | ||||||
|     runs-on: windows-latest |  | ||||||
|     needs: find-default-go |  | ||||||
|     strategy: |  | ||||||
|       matrix: |  | ||||||
|         cache: [false, true] |  | ||||||
|     steps: |  | ||||||
|       - uses: actions/checkout@v4 |  | ||||||
| 
 |  | ||||||
|       - name: 'Setup default go, cache: ${{ matrix.cache }}' |  | ||||||
|         uses: ./ |  | ||||||
|         with: |  | ||||||
|           go-version: ${{ needs.find-default-go.outputs.version }} |  | ||||||
|           cache: ${{ matrix.cache }} |  | ||||||
| 
 |  | ||||||
|       - name: 'Drive C: should have Go installation, cache: ${{ matrix.cache}}' |  | ||||||
|         run: | |  | ||||||
|           size=$(du -m -s 'C:\hostedtoolcache\windows\go\${{ needs.find-default-go.outputs.version }}\x64'|cut -f1 -d$'\t') |  | ||||||
|           if [ $size -eq 0 ];then |  | ||||||
|             echo 'Size of the hosted go installed on drive c: must be above zero' |  | ||||||
|             exit 1 |  | ||||||
|           fi |  | ||||||
|         shell: bash |  | ||||||
| 
 |  | ||||||
|       - name: 'Drive D: should not have Go installation, cache: ${{ matrix.cache }}' |  | ||||||
|         run: | |  | ||||||
|           if [ -e 'D:\hostedtoolcache\windows\go\${{ needs.find-default-go.outputs.version }}\x64' ];then |  | ||||||
|             echo 'D:\hostedtoolcache\windows\go\${{ needs.find-default-go.outputs.version }}\x64 should not exist for hosted version of go'; |  | ||||||
|             exit 1 |  | ||||||
|           fi |  | ||||||
|         shell: bash |  | ||||||
| 
 |  | ||||||
|   hostedtoolcache: |  | ||||||
|     name: 'Validate if hostedtoolcache works as expected' |  | ||||||
|     runs-on: windows-latest |  | ||||||
|     strategy: |  | ||||||
|       matrix: |  | ||||||
|         cache: [false] |  | ||||||
|         go: [1.20.1] |  | ||||||
|     steps: |  | ||||||
|       - uses: actions/checkout@v4 |  | ||||||
| 
 |  | ||||||
|       - name: 'Setup ${{ matrix.go }}, cache: ${{ matrix.cache }}' |  | ||||||
|         uses: ./ |  | ||||||
|         with: |  | ||||||
|           go-version: ${{ matrix.go }} |  | ||||||
|           cache: ${{ matrix.cache }} |  | ||||||
| 
 |  | ||||||
|       - name: 'Setup ${{ matrix.go }}, cache: ${{ matrix.cache }} (from hostedtoolcache)' |  | ||||||
|         uses: ./ |  | ||||||
|         with: |  | ||||||
|           go-version: ${{ matrix.go }} |  | ||||||
|           cache: ${{ matrix.cache }} |  | ||||||
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@actions/core.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@actions/core.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@actions/http-client-1.0.11.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@actions/http-client-1.0.11.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@actions/io.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@actions/io.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@actions/tool-cache.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@actions/tool-cache.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@azure/core-auth.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@azure/core-auth.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@azure/core-http.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@azure/core-http.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@azure/core-lro.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@azure/core-lro.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@azure/core-paging.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@azure/core-paging.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@azure/core-util.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@azure/core-util.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@azure/logger.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@azure/logger.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@azure/ms-rest-js.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@azure/ms-rest-js.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@azure/storage-blob.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@azure/storage-blob.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@fastify/busboy.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@fastify/busboy.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@opentelemetry/api.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@opentelemetry/api.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/plugin-framework.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/plugin-framework.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/plugin.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/plugin.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/protoc.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/protoc.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/runtime-rpc.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/runtime-rpc.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/runtime.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@protobuf-ts/runtime.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@types/node-fetch.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@types/node-fetch.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@types/node.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@types/node.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/camel-case.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/camel-case.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/commander.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/commander.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/form-data-3.0.1.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/form-data-3.0.1.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/fs.realpath.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/fs.realpath.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/glob.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/glob.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/inflight.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/inflight.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/inherits.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/inherits.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/lodash.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/lodash.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/lower-case.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/lower-case.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/no-case.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/no-case.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/node-fetch.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/node-fetch.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/once.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/once.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/pascal-case.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/pascal-case.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/path-to-regexp.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/path-to-regexp.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/prettier.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/prettier.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/psl.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/psl.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/sax.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/sax.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/semver-6.3.1.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/semver-6.3.1.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/tough-cookie.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/tough-cookie.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/ts-poet.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/ts-poet.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/tslib-2.3.1.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/tslib-2.3.1.dep.yml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/twirp-ts.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/twirp-ts.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/typescript.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/typescript.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/undici-types.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/undici-types.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/wrappy.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/wrappy.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/yaml.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/yaml.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										114
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										114
									
								
								README.md
									
									
									
									
									
								
							| @ -8,14 +8,6 @@ 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. | ||||||
| 
 | 
 | ||||||
| # V5 |  | ||||||
| 
 |  | ||||||
| The V5 edition of the action offers: |  | ||||||
| 
 |  | ||||||
| - Upgraded Node.js runtime from node16 to node20 |  | ||||||
| 
 |  | ||||||
| See full release notes on the [releases page](https://github.com/actions/setup-go/releases). |  | ||||||
| 
 |  | ||||||
| # V4 | # V4 | ||||||
| 
 | 
 | ||||||
| The V4 edition of the action offers: | The V4 edition of the action offers: | ||||||
| @ -50,8 +42,8 @@ Matching by [semver spec](https://github.com/npm/node-semver): | |||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
|   - uses: actions/checkout@v4 |   - uses: actions/checkout@v3 | ||||||
|   - uses: actions/setup-go@v5 |   - uses: actions/setup-go@v4 | ||||||
|     with: |     with: | ||||||
|       go-version: '^1.13.1' # The Go version to download (if necessary) and use. |       go-version: '^1.13.1' # The Go version to download (if necessary) and use. | ||||||
|   - run: go version |   - run: go version | ||||||
| @ -59,27 +51,19 @@ steps: | |||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
|   - uses: actions/checkout@v4 |   - uses: actions/checkout@v3 | ||||||
|   - uses: actions/setup-go@v5 |   - uses: actions/setup-go@v4 | ||||||
|     with: |     with: | ||||||
|       go-version: '>=1.17.0' |       go-version: '>=1.17.0' | ||||||
|   - run: go version |   - run: go version | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| > **Note**: Due to the peculiarities of YAML parsing, it is recommended to wrap the version in single quotation marks: |  | ||||||
| > |  | ||||||
| > ```yaml |  | ||||||
| >   go-version: '1.20' |  | ||||||
| > ``` |  | ||||||
| > |  | ||||||
| > The recommendation is based on the YAML parser's behavior, which interprets non-wrapped values as numbers and, in the case of version 1.20, trims it down to 1.2, which may not be very obvious. |  | ||||||
| 
 |  | ||||||
| Matching an unstable pre-release: | Matching an unstable pre-release: | ||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
|   - uses: actions/checkout@v4 |   - uses: actions/checkout@v3 | ||||||
|   - uses: actions/setup-go@v5 |   - uses: actions/setup-go@v4 | ||||||
|     with: |     with: | ||||||
|       go-version: '1.18.0-rc.1' # The Go version to download (if necessary) and use. |       go-version: '1.18.0-rc.1' # The Go version to download (if necessary) and use. | ||||||
|   - run: go version |   - run: go version | ||||||
| @ -87,8 +71,8 @@ steps: | |||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
|   - uses: actions/checkout@v4 |   - uses: actions/checkout@v3 | ||||||
|   - uses: actions/setup-go@v5 |   - uses: actions/setup-go@v4 | ||||||
|     with: |     with: | ||||||
|       go-version: '1.16.0-beta.1' # The Go version to download (if necessary) and use. |       go-version: '1.16.0-beta.1' # The Go version to download (if necessary) and use. | ||||||
|   - run: go version |   - run: go version | ||||||
| @ -102,8 +86,8 @@ See [action.yml](action.yml) | |||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
|   - uses: actions/checkout@v4 |   - uses: actions/checkout@v3 | ||||||
|   - uses: actions/setup-go@v5 |   - uses: actions/setup-go@v4 | ||||||
|     with: |     with: | ||||||
|       go-version: '1.16.1' # The Go version to download (if necessary) and use. |       go-version: '1.16.1' # The Go version to download (if necessary) and use. | ||||||
|   - run: go run hello.go |   - run: go run hello.go | ||||||
| @ -123,8 +107,8 @@ want the most up-to-date Go version to always be used. | |||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
|   - uses: actions/checkout@v4 |   - uses: actions/checkout@v3 | ||||||
|   - uses: actions/setup-go@v5 |   - uses: actions/setup-go@v4 | ||||||
|     with: |     with: | ||||||
|       go-version: '1.14' |       go-version: '1.14' | ||||||
|       check-latest: true |       check-latest: true | ||||||
| @ -144,8 +128,8 @@ set to `true` | |||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
|   - uses: actions/checkout@v4 |   - uses: actions/checkout@v3 | ||||||
|   - uses: actions/setup-go@v5 |   - uses: actions/setup-go@v4 | ||||||
|     with: |     with: | ||||||
|       go-version: 'stable' |       go-version: 'stable' | ||||||
|   - run: go run hello.go |   - run: go run hello.go | ||||||
| @ -153,8 +137,8 @@ steps: | |||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
|   - uses: actions/checkout@v4 |   - uses: actions/checkout@v3 | ||||||
|   - uses: actions/setup-go@v5 |   - uses: actions/setup-go@v4 | ||||||
|     with: |     with: | ||||||
|       go-version: 'oldstable' |       go-version: 'oldstable' | ||||||
|   - run: go run hello.go |   - run: go run hello.go | ||||||
| @ -168,7 +152,7 @@ The `cache` input is optional, and caching is turned on by default. | |||||||
| 
 | 
 | ||||||
| The action defaults to search for the dependency file - go.sum in the repository root, and uses its hash as a part of | The action defaults to search for the dependency file - go.sum in the repository root, and uses its hash as a part of | ||||||
| the cache key. Use `cache-dependency-path` input for cases when multiple dependency files are used, or they are located | the cache key. Use `cache-dependency-path` input for cases when multiple dependency files are used, or they are located | ||||||
| in different subdirectories. The input supports glob patterns. | in different subdirectories. | ||||||
| 
 | 
 | ||||||
| If some problem that prevents success caching happens then the action issues the warning in the log and continues the execution of the pipeline.  | If some problem that prevents success caching happens then the action issues the warning in the log and continues the execution of the pipeline.  | ||||||
| 
 | 
 | ||||||
| @ -176,36 +160,30 @@ If some problem that prevents success caching happens then the action issues the | |||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
|   - uses: actions/checkout@v4 |   - uses: actions/checkout@v3 | ||||||
|   - uses: actions/setup-go@v5 |   - uses: actions/setup-go@v4 | ||||||
|     with: |     with: | ||||||
|       go-version: '1.17' |       go-version: '1.17' | ||||||
|       check-latest: true |       check-latest: true | ||||||
|       cache-dependency-path: | |       cache-dependency-path: subdir/go.sum | ||||||
|              subdir/go.sum |  | ||||||
|              tools/go.sum |  | ||||||
|     # cache-dependency-path: "**/*.sum" |  | ||||||
| 
 |  | ||||||
|   - run: go run hello.go |   - run: go run hello.go | ||||||
|   ``` |   ``` | ||||||
| 
 | 
 | ||||||
| ## 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 or a `go.work` file that contains the version of Go to be | ||||||
| 
 | used by a project. As the `go.mod` file contains only major and minor (e.g. 1.18) tags, the action will search for the | ||||||
| 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`).   | latest available patch version sequentially in the runner's directory with the cached tools, in | ||||||
| If a patch version is specified, that specific patch version will be used.   | the [versions-manifest.json](https://github.com/actions/go-versions/blob/main/versions-manifest.json) file or at the go | ||||||
| If no patch version is specified, it will search for the latest available patch version in the cache, | servers. | ||||||
| [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. |  | ||||||
| 
 | 
 | ||||||
| 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 | ||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| steps: | steps: | ||||||
|   - uses: actions/checkout@v4 |   - uses: actions/checkout@v3 | ||||||
|   - uses: actions/setup-go@v5 |   - uses: actions/setup-go@v4 | ||||||
|     with: |     with: | ||||||
|       go-version-file: 'path/to/go.mod' |       go-version-file: 'path/to/go.mod' | ||||||
|   - run: go version |   - run: go version | ||||||
| @ -222,9 +200,9 @@ jobs: | |||||||
|         go: [ '1.14', '1.13' ] |         go: [ '1.14', '1.13' ] | ||||||
|     name: Go ${{ matrix.go }} sample |     name: Go ${{ matrix.go }} sample | ||||||
|     steps: |     steps: | ||||||
|       - uses: actions/checkout@v4 |       - uses: actions/checkout@v3 | ||||||
|       - name: Setup go |       - name: Setup go | ||||||
|         uses: actions/setup-go@v5 |         uses: actions/setup-go@v4 | ||||||
|         with: |         with: | ||||||
|           go-version: ${{ matrix.go }} |           go-version: ${{ matrix.go }} | ||||||
|       - run: go run hello.go |       - run: go run hello.go | ||||||
| @ -242,35 +220,31 @@ documentation. | |||||||
| 
 | 
 | ||||||
| ## Using `setup-go` on GHES | ## Using `setup-go` on GHES | ||||||
| 
 | 
 | ||||||
| `setup-go` comes pre-installed on the appliance with GHES if Actions is enabled. | `setup-go` comes pre-installed on the appliance with GHES if Actions is enabled. When dynamically downloading Go | ||||||
| When dynamically downloading Go distributions, `setup-go` downloads distributions from [`actions/go-versions`](https://github.com/actions/go-versions) on github.com (outside of the appliance). | distributions, `setup-go` downloads distributions from [`actions/go-versions`](https://github.com/actions/go-versions) | ||||||
|  | on github.com (outside of the appliance). 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 you will start to see rate-limit errors during downloading that looks | ||||||
|  | like: `##[error]API rate limit exceeded for...`. After that error the action will try to download versions directly | ||||||
|  | from https://storage.googleapis.com/golang, but it also can have rate limit so it's better to put token. | ||||||
| 
 | 
 | ||||||
| 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). | To get a higher rate limit, you | ||||||
| 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. | can [generate a personal access token on github.com](https://github.com/settings/tokens/new) and pass it as the `token` | ||||||
| If that fails as well the action will try to download versions directly from https://storage.googleapis.com/golang. | input for 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: |  | ||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| uses: actions/setup-go@v5 | uses: actions/setup-go@v4 | ||||||
| with: | with: | ||||||
|   token: ${{ secrets.GH_DOTCOM_TOKEN }} |   token: ${{ secrets.GH_DOTCOM_TOKEN }} | ||||||
|   go-version: '1.18' |   go-version: 1.18 | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| If the runner is not able to access github.com, any Go versions requested during a workflow run must come from the runner's tool cache. | If the runner is not able to access github.com, any Go versions requested during a workflow run must come from the | ||||||
|  | runner's tool cache. | ||||||
| See "[Setting up the tool cache on self-hosted runners without internet access](https://docs.github.com/en/enterprise-server@3.2/admin/github-actions/managing-access-to-actions-from-githubcom/setting-up-the-tool-cache-on-self-hosted-runners-without-internet-access)" | See "[Setting up the tool cache on self-hosted runners without internet access](https://docs.github.com/en/enterprise-server@3.2/admin/github-actions/managing-access-to-actions-from-githubcom/setting-up-the-tool-cache-on-self-hosted-runners-without-internet-access)" | ||||||
| for more information. | for more information. | ||||||
| 
 | 
 | ||||||
| ## Recommended permissions |  | ||||||
| 
 |  | ||||||
| When using the `setup-go` action in your GitHub Actions workflow, it is recommended to set the following permissions to ensure proper functionality: |  | ||||||
| 
 |  | ||||||
| ```yaml |  | ||||||
| permissions: |  | ||||||
|   contents: read # access to check out code and install dependencies |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| # License | # License | ||||||
| 
 | 
 | ||||||
| The scripts and documentation in this project are released under the [MIT License](LICENSE) | The scripts and documentation in this project are released under the [MIT License](LICENSE) | ||||||
|  | |||||||
| @ -209,41 +209,3 @@ describe('isCacheFeatureAvailable', () => { | |||||||
|     expect(warningSpy).toHaveBeenCalledWith(warningMessage); |     expect(warningSpy).toHaveBeenCalledWith(warningMessage); | ||||||
|   }); |   }); | ||||||
| }); | }); | ||||||
| 
 |  | ||||||
| describe('isGhes', () => { |  | ||||||
|   const pristineEnv = process.env; |  | ||||||
| 
 |  | ||||||
|   beforeEach(() => { |  | ||||||
|     jest.resetModules(); |  | ||||||
|     process.env = {...pristineEnv}; |  | ||||||
|   }); |  | ||||||
| 
 |  | ||||||
|   afterAll(() => { |  | ||||||
|     process.env = pristineEnv; |  | ||||||
|   }); |  | ||||||
| 
 |  | ||||||
|   it('returns false when the GITHUB_SERVER_URL environment variable is not defined', async () => { |  | ||||||
|     delete process.env['GITHUB_SERVER_URL']; |  | ||||||
|     expect(cacheUtils.isGhes()).toBeFalsy(); |  | ||||||
|   }); |  | ||||||
| 
 |  | ||||||
|   it('returns false when the GITHUB_SERVER_URL environment variable is set to github.com', async () => { |  | ||||||
|     process.env['GITHUB_SERVER_URL'] = 'https://github.com'; |  | ||||||
|     expect(cacheUtils.isGhes()).toBeFalsy(); |  | ||||||
|   }); |  | ||||||
| 
 |  | ||||||
|   it('returns false when the GITHUB_SERVER_URL environment variable is set to a GitHub Enterprise Cloud-style URL', async () => { |  | ||||||
|     process.env['GITHUB_SERVER_URL'] = 'https://contoso.ghe.com'; |  | ||||||
|     expect(cacheUtils.isGhes()).toBeFalsy(); |  | ||||||
|   }); |  | ||||||
| 
 |  | ||||||
|   it('returns false when the GITHUB_SERVER_URL environment variable has a .localhost suffix', async () => { |  | ||||||
|     process.env['GITHUB_SERVER_URL'] = 'https://mock-github.localhost'; |  | ||||||
|     expect(cacheUtils.isGhes()).toBeFalsy(); |  | ||||||
|   }); |  | ||||||
| 
 |  | ||||||
|   it('returns true when the GITHUB_SERVER_URL environment variable is set to some other URL', async () => { |  | ||||||
|     process.env['GITHUB_SERVER_URL'] = 'https://src.onpremise.fabrikam.com'; |  | ||||||
|     expect(cacheUtils.isGhes()).toBeTruthy(); |  | ||||||
|   }); |  | ||||||
| }); |  | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| module example.com/mymodule | module example.com/mymodule | ||||||
| 
 | 
 | ||||||
| go 1.20 | go 1.14 | ||||||
| 
 | 
 | ||||||
| require ( | require ( | ||||||
| 	example.com/othermodule v1.2.3 | 	example.com/othermodule v1.2.3 | ||||||
|  | |||||||
| @ -1,3 +1,3 @@ | |||||||
| go 1.21 | go 1.19 | ||||||
| 
 | 
 | ||||||
| use . | use . | ||||||
|  | |||||||
| @ -3,11 +3,10 @@ import * as io from '@actions/io'; | |||||||
| import * as tc from '@actions/tool-cache'; | import * as tc from '@actions/tool-cache'; | ||||||
| import fs from 'fs'; | import fs from 'fs'; | ||||||
| import cp from 'child_process'; | import cp from 'child_process'; | ||||||
| import osm, {type} from 'os'; | import osm from 'os'; | ||||||
| import path from 'path'; | import path from 'path'; | ||||||
| import * as main from '../src/main'; | import * as main from '../src/main'; | ||||||
| import * as im from '../src/installer'; | import * as im from '../src/installer'; | ||||||
| import * as httpm from '@actions/http-client'; |  | ||||||
| 
 | 
 | ||||||
| import goJsonData from './data/golang-dl.json'; | import goJsonData from './data/golang-dl.json'; | ||||||
| import matchers from '../matchers.json'; | import matchers from '../matchers.json'; | ||||||
| @ -17,8 +16,6 @@ const matcherRegExp = new RegExp(matcherPattern.regexp); | |||||||
| const win32Join = path.win32.join; | const win32Join = path.win32.join; | ||||||
| const posixJoin = path.posix.join; | const posixJoin = path.posix.join; | ||||||
| 
 | 
 | ||||||
| jest.setTimeout(10000); |  | ||||||
| 
 |  | ||||||
| describe('setup-go', () => { | describe('setup-go', () => { | ||||||
|   let inputs = {} as any; |   let inputs = {} as any; | ||||||
|   let os = {} as any; |   let os = {} as any; | ||||||
| @ -42,12 +39,9 @@ describe('setup-go', () => { | |||||||
|   let existsSpy: jest.SpyInstance; |   let existsSpy: jest.SpyInstance; | ||||||
|   let readFileSpy: jest.SpyInstance; |   let readFileSpy: jest.SpyInstance; | ||||||
|   let mkdirpSpy: jest.SpyInstance; |   let mkdirpSpy: jest.SpyInstance; | ||||||
|   let mkdirSpy: jest.SpyInstance; |  | ||||||
|   let symlinkSpy: jest.SpyInstance; |  | ||||||
|   let execSpy: jest.SpyInstance; |   let execSpy: jest.SpyInstance; | ||||||
|   let getManifestSpy: jest.SpyInstance; |   let getManifestSpy: jest.SpyInstance; | ||||||
|   let getAllVersionsSpy: jest.SpyInstance; |   let getAllVersionsSpy: jest.SpyInstance; | ||||||
|   let httpmGetJsonSpy: jest.SpyInstance; |  | ||||||
| 
 | 
 | ||||||
|   beforeAll(async () => { |   beforeAll(async () => { | ||||||
|     process.env['GITHUB_ENV'] = ''; // Stub out Environment file functionality so we can verify it writes to standard out (toolkit is backwards compatible)
 |     process.env['GITHUB_ENV'] = ''; // Stub out Environment file functionality so we can verify it writes to standard out (toolkit is backwards compatible)
 | ||||||
| @ -92,20 +86,12 @@ describe('setup-go', () => { | |||||||
|     getManifestSpy = jest.spyOn(tc, 'getManifestFromRepo'); |     getManifestSpy = jest.spyOn(tc, 'getManifestFromRepo'); | ||||||
|     getAllVersionsSpy = jest.spyOn(im, 'getManifest'); |     getAllVersionsSpy = jest.spyOn(im, 'getManifest'); | ||||||
| 
 | 
 | ||||||
|     // httm
 |  | ||||||
|     httpmGetJsonSpy = jest.spyOn(httpm.HttpClient.prototype, 'getJson'); |  | ||||||
| 
 |  | ||||||
|     // io
 |     // io
 | ||||||
|     whichSpy = jest.spyOn(io, 'which'); |     whichSpy = jest.spyOn(io, 'which'); | ||||||
|     existsSpy = jest.spyOn(fs, 'existsSync'); |     existsSpy = jest.spyOn(fs, 'existsSync'); | ||||||
|     readFileSpy = jest.spyOn(fs, 'readFileSync'); |     readFileSpy = jest.spyOn(fs, 'readFileSync'); | ||||||
|     mkdirpSpy = jest.spyOn(io, 'mkdirP'); |     mkdirpSpy = jest.spyOn(io, 'mkdirP'); | ||||||
| 
 | 
 | ||||||
|     // fs
 |  | ||||||
|     mkdirSpy = jest.spyOn(fs, 'mkdir'); |  | ||||||
|     symlinkSpy = jest.spyOn(fs, 'symlinkSync'); |  | ||||||
|     symlinkSpy.mockImplementation(() => {}); |  | ||||||
| 
 |  | ||||||
|     // gets
 |     // gets
 | ||||||
|     getManifestSpy.mockImplementation(() => <tc.IToolRelease[]>goTestManifest); |     getManifestSpy.mockImplementation(() => <tc.IToolRelease[]>goTestManifest); | ||||||
| 
 | 
 | ||||||
| @ -156,21 +142,6 @@ describe('setup-go', () => { | |||||||
|     ); |     ); | ||||||
|   }); |   }); | ||||||
| 
 | 
 | ||||||
|   it('should return manifest from repo', async () => { |  | ||||||
|     const manifest = await im.getManifest(undefined); |  | ||||||
|     expect(manifest).toEqual(goTestManifest); |  | ||||||
|   }); |  | ||||||
| 
 |  | ||||||
|   it('should return manifest from raw URL if repo fetch fails', async () => { |  | ||||||
|     getManifestSpy.mockRejectedValue(new Error('Fetch failed')); |  | ||||||
|     httpmGetJsonSpy.mockResolvedValue({ |  | ||||||
|       result: goTestManifest |  | ||||||
|     }); |  | ||||||
|     const manifest = await im.getManifest(undefined); |  | ||||||
|     expect(httpmGetJsonSpy).toHaveBeenCalled(); |  | ||||||
|     expect(manifest).toEqual(goTestManifest); |  | ||||||
|   }); |  | ||||||
| 
 |  | ||||||
|   it('can find 1.9 from manifest on linux', async () => { |   it('can find 1.9 from manifest on linux', async () => { | ||||||
|     os.platform = 'linux'; |     os.platform = 'linux'; | ||||||
|     os.arch = 'x64'; |     os.arch = 'x64'; | ||||||
| @ -810,9 +781,6 @@ describe('setup-go', () => { | |||||||
|       getManifestSpy.mockImplementation(() => { |       getManifestSpy.mockImplementation(() => { | ||||||
|         throw new Error('Unable to download manifest'); |         throw new Error('Unable to download manifest'); | ||||||
|       }); |       }); | ||||||
|       httpmGetJsonSpy.mockRejectedValue( |  | ||||||
|         new Error('Unable to download manifest from raw URL') |  | ||||||
|       ); |  | ||||||
|       getAllVersionsSpy.mockImplementationOnce(() => undefined); |       getAllVersionsSpy.mockImplementationOnce(() => undefined); | ||||||
| 
 | 
 | ||||||
|       dlSpy.mockImplementation(async () => '/some/temp/path'); |       dlSpy.mockImplementation(async () => '/some/temp/path'); | ||||||
|  | |||||||
| @ -1,62 +0,0 @@ | |||||||
| import fs from 'fs'; |  | ||||||
| import * as io from '@actions/io'; |  | ||||||
| import * as tc from '@actions/tool-cache'; |  | ||||||
| import path from 'path'; |  | ||||||
| 
 |  | ||||||
| describe('Windows performance workaround', () => { |  | ||||||
|   let mkdirSpy: jest.SpyInstance; |  | ||||||
|   let symlinkSpy: jest.SpyInstance; |  | ||||||
|   let statSpy: jest.SpyInstance; |  | ||||||
|   let readdirSpy: jest.SpyInstance; |  | ||||||
|   let writeFileSpy: jest.SpyInstance; |  | ||||||
|   let rmRFSpy: jest.SpyInstance; |  | ||||||
|   let mkdirPSpy: jest.SpyInstance; |  | ||||||
|   let cpSpy: jest.SpyInstance; |  | ||||||
| 
 |  | ||||||
|   let runnerToolCache: string | undefined; |  | ||||||
|   beforeEach(() => { |  | ||||||
|     mkdirSpy = jest.spyOn(fs, 'mkdir'); |  | ||||||
|     symlinkSpy = jest.spyOn(fs, 'symlinkSync'); |  | ||||||
|     statSpy = jest.spyOn(fs, 'statSync'); |  | ||||||
|     readdirSpy = jest.spyOn(fs, 'readdirSync'); |  | ||||||
|     writeFileSpy = jest.spyOn(fs, 'writeFileSync'); |  | ||||||
|     rmRFSpy = jest.spyOn(io, 'rmRF'); |  | ||||||
|     mkdirPSpy = jest.spyOn(io, 'mkdirP'); |  | ||||||
|     cpSpy = jest.spyOn(io, 'cp'); |  | ||||||
| 
 |  | ||||||
|     // default implementations
 |  | ||||||
|     // @ts-ignore - not implement unused methods
 |  | ||||||
|     statSpy.mockImplementation(() => ({ |  | ||||||
|       isDirectory: () => true |  | ||||||
|     })); |  | ||||||
|     readdirSpy.mockImplementation(() => []); |  | ||||||
|     writeFileSpy.mockImplementation(() => {}); |  | ||||||
|     mkdirSpy.mockImplementation(() => {}); |  | ||||||
|     symlinkSpy.mockImplementation(() => {}); |  | ||||||
|     rmRFSpy.mockImplementation(() => Promise.resolve()); |  | ||||||
|     mkdirPSpy.mockImplementation(() => Promise.resolve()); |  | ||||||
|     cpSpy.mockImplementation(() => Promise.resolve()); |  | ||||||
| 
 |  | ||||||
|     runnerToolCache = process.env['RUNNER_TOOL_CACHE']; |  | ||||||
|   }); |  | ||||||
|   afterEach(() => { |  | ||||||
|     jest.clearAllMocks(); |  | ||||||
|     process.env['RUNNER_TOOL_CACHE'] = runnerToolCache; |  | ||||||
|   }); |  | ||||||
|   // cacheWindowsToolkitDir depends on implementation of tc.cacheDir
 |  | ||||||
|   // with the assumption that target dir is passed by RUNNER_TOOL_CACHE environment variable
 |  | ||||||
|   // Make sure the implementation has not been changed
 |  | ||||||
|   it('addExecutablesToCache should depend on env[RUNNER_TOOL_CACHE]', async () => { |  | ||||||
|     process.env['RUNNER_TOOL_CACHE'] = '/faked-hostedtoolcache1'; |  | ||||||
|     const cacheDir1 = await tc.cacheDir('/qzx', 'go', '1.2.3', 'arch'); |  | ||||||
|     expect(cacheDir1).toBe( |  | ||||||
|       path.join('/', 'faked-hostedtoolcache1', 'go', '1.2.3', 'arch') |  | ||||||
|     ); |  | ||||||
| 
 |  | ||||||
|     process.env['RUNNER_TOOL_CACHE'] = '/faked-hostedtoolcache2'; |  | ||||||
|     const cacheDir2 = await tc.cacheDir('/qzx', 'go', '1.2.3', 'arch'); |  | ||||||
|     expect(cacheDir2).toBe( |  | ||||||
|       path.join('/', 'faked-hostedtoolcache2', 'go', '1.2.3', 'arch') |  | ||||||
|     ); |  | ||||||
|   }); |  | ||||||
| }); |  | ||||||
| @ -3,14 +3,14 @@ description: 'Setup a Go environment and add it to the PATH' | |||||||
| author: 'GitHub' | author: 'GitHub' | ||||||
| inputs: | 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.' | ||||||
|   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.' | ||||||
|   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 | ||||||
|   token: |   token: | ||||||
|     description: Used to pull Go distributions from go-versions. Since there's a default, this is typically not supplied by the user. When running this action on github.com, the default value is sufficient. When running on GHES, you can pass a personal access token for github.com if you are experiencing rate limiting. |     description: Used to pull node distributions from go-versions. Since there's a default, this is typically not supplied by the user. When running this action on github.com, the default value is sufficient. When running on GHES, you can pass a personal access token for github.com if you are experiencing rate limiting. | ||||||
|     default: ${{ github.server_url == 'https://github.com' && github.token || '' }} |     default: ${{ github.server_url == 'https://github.com' && github.token || '' }} | ||||||
|   cache: |   cache: | ||||||
|     description: Used to specify whether caching is needed. Set to true, if you'd like to enable caching. |     description: Used to specify whether caching is needed. Set to true, if you'd like to enable caching. | ||||||
| @ -25,7 +25,7 @@ outputs: | |||||||
|   cache-hit: |   cache-hit: | ||||||
|     description: 'A boolean value to indicate if a cache was hit' |     description: 'A boolean value to indicate if a cache was hit' | ||||||
| runs: | runs: | ||||||
|   using: 'node20' |   using: 'node16' | ||||||
|   main: 'dist/setup/index.js' |   main: 'dist/setup/index.js' | ||||||
|   post: 'dist/cache-save/index.js' |   post: 'dist/cache-save/index.js' | ||||||
|   post-if: success() |   post-if: success() | ||||||
|  | |||||||
							
								
								
									
										46633
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										46633
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										50683
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										50683
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -32,7 +32,7 @@ We don't pursue the goal to provide wide customization of caching in scope of `a | |||||||
| 
 | 
 | ||||||
| ```yml | ```yml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v4 | - uses: actions/checkout@v3 | ||||||
| - uses: actions/setup-go@v3 | - uses: actions/setup-go@v3 | ||||||
|   with: |   with: | ||||||
|     go-version: '18' |     go-version: '18' | ||||||
| @ -43,7 +43,7 @@ steps: | |||||||
| 
 | 
 | ||||||
|  ```yml |  ```yml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v4 | - uses: actions/checkout@v3 | ||||||
| - uses: actions/setup-go@v3 | - uses: actions/setup-go@v3 | ||||||
|   with: |   with: | ||||||
|     go-version: '18' |     go-version: '18' | ||||||
| @ -53,7 +53,7 @@ steps: | |||||||
| 
 | 
 | ||||||
|  ```yml |  ```yml | ||||||
| steps: | steps: | ||||||
| - uses: actions/checkout@v4 | - uses: actions/checkout@v3 | ||||||
| - uses: actions/setup-go@v3 | - uses: actions/setup-go@v3 | ||||||
|   with: |   with: | ||||||
|     go-version: '18' |     go-version: '18' | ||||||
|  | |||||||
							
								
								
									
										8991
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8991
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										39
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								package.json
									
									
									
									
									
								
							| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "setup-go", |   "name": "setup-go", | ||||||
|   "version": "5.0.0", |   "version": "4.0.0", | ||||||
|   "private": true, |   "private": true, | ||||||
|   "description": "setup go action", |   "description": "setup go action", | ||||||
|   "main": "lib/setup-go.js", |   "main": "lib/setup-go.js", | ||||||
| @ -25,31 +25,30 @@ | |||||||
|   "author": "GitHub", |   "author": "GitHub", | ||||||
|   "license": "MIT", |   "license": "MIT", | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "@actions/cache": "^4.0.0", |     "@actions/cache": "^3.2.1", | ||||||
|     "@actions/core": "^1.11.1", |     "@actions/core": "^1.10.0", | ||||||
|     "@actions/exec": "^1.1.1", |     "@actions/exec": "^1.1.0", | ||||||
|     "@actions/glob": "^0.4.0", |     "@actions/glob": "^0.2.0", | ||||||
|     "@actions/http-client": "^2.2.1", |     "@actions/http-client": "^2.0.1", | ||||||
|     "@actions/io": "^1.0.2", |     "@actions/io": "^1.0.2", | ||||||
|     "@actions/tool-cache": "^2.0.1", |     "@actions/tool-cache": "^1.5.5", | ||||||
|     "semver": "^7.6.3" |     "semver": "^6.1.1" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "@types/jest": "^29.5.12", |     "@types/jest": "^27.0.2", | ||||||
|     "@types/node": "^20.11.28", |     "@types/node": "^16.11.25", | ||||||
|     "@types/semver": "^7.5.8", |     "@types/semver": "^6.0.0", | ||||||
|     "@typescript-eslint/eslint-plugin": "^5.54.0", |     "@typescript-eslint/eslint-plugin": "^5.54.0", | ||||||
|     "@typescript-eslint/parser": "^5.54.0", |     "@typescript-eslint/parser": "^5.54.0", | ||||||
|     "@vercel/ncc": "^0.38.1", |     "@vercel/ncc": "^0.33.4", | ||||||
|     "eslint": "^8.57.0", |     "eslint": "^8.35.0", | ||||||
|     "eslint-config-prettier": "^10.0.1", |     "eslint-config-prettier": "^8.6.0", | ||||||
|     "eslint-plugin-jest": "^27.9.0", |     "eslint-plugin-jest": "^27.2.1", | ||||||
|     "eslint-plugin-node": "^11.1.0", |     "jest": "^27.2.5", | ||||||
|     "jest": "^29.7.0", |     "jest-circus": "^27.2.5", | ||||||
|     "jest-circus": "^29.7.0", |  | ||||||
|     "nock": "^10.0.6", |     "nock": "^10.0.6", | ||||||
|     "prettier": "^2.8.4", |     "prettier": "^2.8.4", | ||||||
|     "ts-jest": "^29.1.2", |     "ts-jest": "^27.0.5", | ||||||
|     "typescript": "^5.4.2" |     "typescript": "^4.3.3" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -15,7 +15,6 @@ export const restoreCache = async ( | |||||||
| ) => { | ) => { | ||||||
|   const packageManagerInfo = await getPackageManagerInfo(packageManager); |   const packageManagerInfo = await getPackageManagerInfo(packageManager); | ||||||
|   const platform = process.env.RUNNER_OS; |   const platform = process.env.RUNNER_OS; | ||||||
|   const arch = process.arch; |  | ||||||
| 
 | 
 | ||||||
|   const cachePaths = await getCacheDirectoryPath(packageManagerInfo); |   const cachePaths = await getCacheDirectoryPath(packageManagerInfo); | ||||||
| 
 | 
 | ||||||
| @ -30,9 +29,7 @@ export const restoreCache = async ( | |||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   const linuxVersion = |   const primaryKey = `setup-go-${platform}-go-${versionSpec}-${fileHash}`; | ||||||
|     process.env.RUNNER_OS === 'Linux' ? `${process.env.ImageOS}-` : ''; |  | ||||||
|   const primaryKey = `setup-go-${platform}-${arch}-${linuxVersion}go-${versionSpec}-${fileHash}`; |  | ||||||
|   core.debug(`primary key is ${primaryKey}`); |   core.debug(`primary key is ${primaryKey}`); | ||||||
| 
 | 
 | ||||||
|   core.saveState(State.CachePrimaryKey, primaryKey); |   core.saveState(State.CachePrimaryKey, primaryKey); | ||||||
|  | |||||||
| @ -12,19 +12,9 @@ process.on('uncaughtException', e => { | |||||||
|   core.info(`${warningPrefix}${e.message}`); |   core.info(`${warningPrefix}${e.message}`); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
| // Added early exit to resolve issue with slow post action step:
 | export async function run() { | ||||||
| // - https://github.com/actions/setup-node/issues/878
 |  | ||||||
| // https://github.com/actions/cache/pull/1217
 |  | ||||||
| export async function run(earlyExit?: boolean) { |  | ||||||
|   try { |   try { | ||||||
|     const cacheInput = core.getBooleanInput('cache'); |  | ||||||
|     if (cacheInput) { |  | ||||||
|     await cachePackages(); |     await cachePackages(); | ||||||
| 
 |  | ||||||
|       if (earlyExit) { |  | ||||||
|         process.exit(0); |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } catch (error) { |   } catch (error) { | ||||||
|     let message = 'Unknown error!'; |     let message = 'Unknown error!'; | ||||||
|     if (error instanceof Error) { |     if (error instanceof Error) { | ||||||
| @ -38,6 +28,11 @@ export async function run(earlyExit?: boolean) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| const cachePackages = async () => { | const cachePackages = async () => { | ||||||
|  |   const cacheInput = core.getBooleanInput('cache'); | ||||||
|  |   if (!cacheInput) { | ||||||
|  |     return; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|   const packageManager = 'default'; |   const packageManager = 'default'; | ||||||
| 
 | 
 | ||||||
|   const state = core.getState(State.CacheMatchedKey); |   const state = core.getState(State.CacheMatchedKey); | ||||||
| @ -90,4 +85,4 @@ function logWarning(message: string): void { | |||||||
|   core.info(`${warningPrefix}${message}`); |   core.info(`${warningPrefix}${message}`); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| run(true); | run(); | ||||||
|  | |||||||
| @ -63,13 +63,7 @@ export function isGhes(): boolean { | |||||||
|   const ghUrl = new URL( |   const ghUrl = new URL( | ||||||
|     process.env['GITHUB_SERVER_URL'] || 'https://github.com' |     process.env['GITHUB_SERVER_URL'] || 'https://github.com' | ||||||
|   ); |   ); | ||||||
| 
 |   return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'; | ||||||
|   const hostname = ghUrl.hostname.trimEnd().toUpperCase(); |  | ||||||
|   const isGitHubHost = hostname === 'GITHUB.COM'; |  | ||||||
|   const isGitHubEnterpriseCloudHost = hostname.endsWith('.GHE.COM'); |  | ||||||
|   const isLocalHost = hostname.endsWith('.LOCALHOST'); |  | ||||||
| 
 |  | ||||||
|   return !isGitHubHost && !isGitHubEnterpriseCloudHost && !isLocalHost; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export function isCacheFeatureAvailable(): boolean { | export function isCacheFeatureAvailable(): boolean { | ||||||
|  | |||||||
							
								
								
									
										131
									
								
								src/installer.ts
									
									
									
									
									
								
							
							
						
						
									
										131
									
								
								src/installer.ts
									
									
									
									
									
								
							| @ -8,11 +8,6 @@ import fs from 'fs'; | |||||||
| import os from 'os'; | import os from 'os'; | ||||||
| import {StableReleaseAlias} from './utils'; | import {StableReleaseAlias} from './utils'; | ||||||
| 
 | 
 | ||||||
| const MANIFEST_REPO_OWNER = 'actions'; |  | ||||||
| const MANIFEST_REPO_NAME = 'go-versions'; |  | ||||||
| const MANIFEST_REPO_BRANCH = 'main'; |  | ||||||
| const MANIFEST_URL = `https://raw.githubusercontent.com/${MANIFEST_REPO_OWNER}/${MANIFEST_REPO_NAME}/${MANIFEST_REPO_BRANCH}/versions-manifest.json`; |  | ||||||
| 
 |  | ||||||
| type InstallationType = 'dist' | 'manifest'; | type InstallationType = 'dist' | 'manifest'; | ||||||
| 
 | 
 | ||||||
| export interface IGoVersionFile { | export interface IGoVersionFile { | ||||||
| @ -119,9 +114,9 @@ export async function getGo( | |||||||
|         `Received HTTP status code ${err.httpStatusCode}.  This usually indicates the rate limit has been exceeded` |         `Received HTTP status code ${err.httpStatusCode}.  This usually indicates the rate limit has been exceeded` | ||||||
|       ); |       ); | ||||||
|     } else { |     } else { | ||||||
|       core.info((err as Error).message); |       core.info(err.message); | ||||||
|     } |     } | ||||||
|     core.debug((err as Error).stack ?? ''); |     core.debug(err.stack); | ||||||
|     core.info('Falling back to download directly from Go'); |     core.info('Falling back to download directly from Go'); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -165,79 +160,10 @@ async function resolveVersionFromManifest( | |||||||
|     return info?.resolvedVersion; |     return info?.resolvedVersion; | ||||||
|   } catch (err) { |   } catch (err) { | ||||||
|     core.info('Unable to resolve a version from the manifest...'); |     core.info('Unable to resolve a version from the manifest...'); | ||||||
|     core.debug((err as Error).message); |     core.debug(err.message); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // for github hosted windows runner handle latency of OS drive
 |  | ||||||
| // by avoiding write operations to C:
 |  | ||||||
| async function cacheWindowsDir( |  | ||||||
|   extPath: string, |  | ||||||
|   tool: string, |  | ||||||
|   version: string, |  | ||||||
|   arch: string |  | ||||||
| ): Promise<string | false> { |  | ||||||
|   if (os.platform() !== 'win32') return false; |  | ||||||
| 
 |  | ||||||
|   // make sure the action runs in the hosted environment
 |  | ||||||
|   if ( |  | ||||||
|     process.env['RUNNER_ENVIRONMENT'] !== 'github-hosted' && |  | ||||||
|     process.env['AGENT_ISSELFHOSTED'] === '1' |  | ||||||
|   ) |  | ||||||
|     return false; |  | ||||||
| 
 |  | ||||||
|   const defaultToolCacheRoot = process.env['RUNNER_TOOL_CACHE']; |  | ||||||
|   if (!defaultToolCacheRoot) return false; |  | ||||||
| 
 |  | ||||||
|   if (!fs.existsSync('d:\\') || !fs.existsSync('c:\\')) return false; |  | ||||||
| 
 |  | ||||||
|   const actualToolCacheRoot = defaultToolCacheRoot |  | ||||||
|     .replace('C:', 'D:') |  | ||||||
|     .replace('c:', 'd:'); |  | ||||||
|   // make toolcache root to be on drive d:
 |  | ||||||
|   process.env['RUNNER_TOOL_CACHE'] = actualToolCacheRoot; |  | ||||||
| 
 |  | ||||||
|   const actualToolCacheDir = await tc.cacheDir(extPath, tool, version, arch); |  | ||||||
| 
 |  | ||||||
|   // create a link from c: to d:
 |  | ||||||
|   const defaultToolCacheDir = actualToolCacheDir.replace( |  | ||||||
|     actualToolCacheRoot, |  | ||||||
|     defaultToolCacheRoot |  | ||||||
|   ); |  | ||||||
|   fs.mkdirSync(path.dirname(defaultToolCacheDir), {recursive: true}); |  | ||||||
|   fs.symlinkSync(actualToolCacheDir, defaultToolCacheDir, 'junction'); |  | ||||||
|   core.info(`Created link ${defaultToolCacheDir} => ${actualToolCacheDir}`); |  | ||||||
| 
 |  | ||||||
|   const actualToolCacheCompleteFile = `${actualToolCacheDir}.complete`; |  | ||||||
|   const defaultToolCacheCompleteFile = `${defaultToolCacheDir}.complete`; |  | ||||||
|   fs.symlinkSync( |  | ||||||
|     actualToolCacheCompleteFile, |  | ||||||
|     defaultToolCacheCompleteFile, |  | ||||||
|     'file' |  | ||||||
|   ); |  | ||||||
|   core.info( |  | ||||||
|     `Created link ${defaultToolCacheCompleteFile} => ${actualToolCacheCompleteFile}` |  | ||||||
|   ); |  | ||||||
| 
 |  | ||||||
|   // make outer code to continue using toolcache as if it were installed on c:
 |  | ||||||
|   // restore toolcache root to default drive c:
 |  | ||||||
|   process.env['RUNNER_TOOL_CACHE'] = defaultToolCacheRoot; |  | ||||||
|   return defaultToolCacheDir; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| async function addExecutablesToToolCache( |  | ||||||
|   extPath: string, |  | ||||||
|   info: IGoVersionInfo, |  | ||||||
|   arch: string |  | ||||||
| ): Promise<string> { |  | ||||||
|   const tool = 'go'; |  | ||||||
|   const version = makeSemver(info.resolvedVersion); |  | ||||||
|   return ( |  | ||||||
|     (await cacheWindowsDir(extPath, tool, version, arch)) || |  | ||||||
|     (await tc.cacheDir(extPath, tool, version, arch)) |  | ||||||
|   ); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| async function installGoVersion( | async function installGoVersion( | ||||||
|   info: IGoVersionInfo, |   info: IGoVersionInfo, | ||||||
|   auth: string | undefined, |   auth: string | undefined, | ||||||
| @ -260,10 +186,14 @@ async function installGoVersion( | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   core.info('Adding to the cache ...'); |   core.info('Adding to the cache ...'); | ||||||
|   const toolCacheDir = await addExecutablesToToolCache(extPath, info, arch); |   const cachedDir = await tc.cacheDir( | ||||||
|   core.info(`Successfully cached go to ${toolCacheDir}`); |     extPath, | ||||||
| 
 |     'go', | ||||||
|   return toolCacheDir; |     makeSemver(info.resolvedVersion), | ||||||
|  |     arch | ||||||
|  |   ); | ||||||
|  |   core.info(`Successfully cached go to ${cachedDir}`); | ||||||
|  |   return cachedDir; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export async function extractGoArchive(archivePath: string): Promise<string> { | export async function extractGoArchive(archivePath: string): Promise<string> { | ||||||
| @ -279,43 +209,8 @@ export async function extractGoArchive(archivePath: string): Promise<string> { | |||||||
|   return extPath; |   return extPath; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export async function getManifest( | export async function getManifest(auth: string | undefined) { | ||||||
|   auth: string | undefined |   return tc.getManifestFromRepo('actions', 'go-versions', auth, 'main'); | ||||||
| ): Promise<tc.IToolRelease[]> { |  | ||||||
|   try { |  | ||||||
|     return await getManifestFromRepo(auth); |  | ||||||
|   } catch (err) { |  | ||||||
|     core.debug('Fetching the manifest via the API failed.'); |  | ||||||
|     if (err instanceof Error) { |  | ||||||
|       core.debug(err.message); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
|   return await getManifestFromURL(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function getManifestFromRepo( |  | ||||||
|   auth: string | undefined |  | ||||||
| ): Promise<tc.IToolRelease[]> { |  | ||||||
|   core.debug( |  | ||||||
|     `Getting manifest from ${MANIFEST_REPO_OWNER}/${MANIFEST_REPO_NAME}@${MANIFEST_REPO_BRANCH}` |  | ||||||
|   ); |  | ||||||
|   return tc.getManifestFromRepo( |  | ||||||
|     MANIFEST_REPO_OWNER, |  | ||||||
|     MANIFEST_REPO_NAME, |  | ||||||
|     auth, |  | ||||||
|     MANIFEST_REPO_BRANCH |  | ||||||
|   ); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| async function getManifestFromURL(): Promise<tc.IToolRelease[]> { |  | ||||||
|   core.debug('Falling back to fetching the manifest using raw URL.'); |  | ||||||
| 
 |  | ||||||
|   const http: httpm.HttpClient = new httpm.HttpClient('tool-cache'); |  | ||||||
|   const response = await http.getJson<tc.IToolRelease[]>(MANIFEST_URL); |  | ||||||
|   if (!response.result) { |  | ||||||
|     throw new Error(`Unable to get manifest from ${MANIFEST_URL}`); |  | ||||||
|   } |  | ||||||
|   return response.result; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export async function getInfoFromManifest( | export async function getInfoFromManifest( | ||||||
|  | |||||||
| @ -74,7 +74,7 @@ export async function run() { | |||||||
|           cacheDependencyPath |           cacheDependencyPath | ||||||
|         ); |         ); | ||||||
|       } catch (error) { |       } catch (error) { | ||||||
|         core.warning(`Restore cache failed: ${(error as Error).message}`); |         core.warning(`Restore cache failed: ${error.message}`); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -92,7 +92,7 @@ export async function run() { | |||||||
|     core.info(goEnv); |     core.info(goEnv); | ||||||
|     core.endGroup(); |     core.endGroup(); | ||||||
|   } catch (error) { |   } catch (error) { | ||||||
|     core.setFailed((error as Error).message); |     core.setFailed(error.message); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user