Merge remote-tracking branch 'git@github.com-actions/setup-java.git/main' into include-buildSrc-in-cache-key
This commit is contained in:
		
							
								
								
									
										8
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @ -19,11 +19,11 @@ jobs: | ||||
|       matrix: | ||||
|         os: [ubuntu-latest, windows-latest, macos-latest] | ||||
|     steps: | ||||
|       - uses: actions/checkout@v2 | ||||
|       - name: Setup Node.JS 12 | ||||
|         uses: actions/setup-node@v2 | ||||
|       - uses: actions/checkout@v3 | ||||
|       - name: Setup Node.JS 16 | ||||
|         uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: 12.x | ||||
|           node-version: 16.x | ||||
|           cache: npm | ||||
|       - run: npm ci | ||||
|       - run: npm run build | ||||
|  | ||||
							
								
								
									
										11
									
								
								.github/workflows/check-dist.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								.github/workflows/check-dist.yml
									
									
									
									
										vendored
									
									
								
							| @ -21,12 +21,13 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|       - uses: actions/checkout@v2 | ||||
|       - uses: actions/checkout@v3 | ||||
|  | ||||
|       - name: Set Node.js 12.x | ||||
|         uses: actions/setup-node@v1 | ||||
|       - name: Set Node.js 16.x | ||||
|         uses: actions/setup-node@v3 | ||||
|         with: | ||||
|           node-version: 12.x | ||||
|           node-version: 16.x | ||||
|           cache: npm | ||||
|  | ||||
|       - name: Install dependencies | ||||
|         run: npm ci | ||||
| @ -44,7 +45,7 @@ jobs: | ||||
|         id: diff | ||||
|  | ||||
|       # If index.js was different than expected, upload the expected version as an artifact | ||||
|       - uses: actions/upload-artifact@v2 | ||||
|       - uses: actions/upload-artifact@v3 | ||||
|         if: ${{ failure() && steps.diff.conclusion == 'failure' }} | ||||
|         with: | ||||
|           name: dist | ||||
|  | ||||
							
								
								
									
										104
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										104
									
								
								.github/workflows/e2e-cache.yml
									
									
									
									
										vendored
									
									
								
							| @ -23,7 +23,7 @@ jobs: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: Run setup-java with the cache for gradle | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
| @ -49,7 +49,7 @@ jobs: | ||||
|     needs: gradle-save | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: Run setup-java with the cache for gradle | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
| @ -72,7 +72,7 @@ jobs: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: Run setup-java with the cache for maven | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
| @ -96,7 +96,7 @@ jobs: | ||||
|     needs: maven-save | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: Run setup-java with the cache for maven | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
| @ -111,3 +111,99 @@ jobs: | ||||
|             exit 1 | ||||
|           fi | ||||
|           ls ~/.m2/repository | ||||
|   sbt-save: | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     defaults: | ||||
|       run: | ||||
|         shell: bash | ||||
|         working-directory: __tests__/cache/sbt | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: Run setup-java with the cache for sbt | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
|         with: | ||||
|           distribution: 'adopt' | ||||
|           java-version: '11' | ||||
|           cache: sbt | ||||
|       - name: Create files to cache | ||||
|         run: sbt update | ||||
|  | ||||
|       - name: Check files to cache on macos-latest | ||||
|         if: matrix.os == 'macos-latest' | ||||
|         run: | | ||||
|           if [ ! -d ~/Library/Caches/Coursier ]; then | ||||
|             echo "::error::The ~/Library/Caches/Coursier directory does not exist unexpectedly" | ||||
|             exit 1 | ||||
|           fi | ||||
|  | ||||
|       - name: Check files to cache on windows-latest | ||||
|         if: matrix.os == 'windows-latest' | ||||
|         run: | | ||||
|           if [ ! -d ~/AppData/Local/Coursier/Cache ]; then | ||||
|             echo "::error::The ~/AppData/Local/Coursier/Cache directory does not exist unexpectedly" | ||||
|             exit 1 | ||||
|           fi | ||||
|  | ||||
|        | ||||
|       - name: Check files to cache on ubuntu-latest | ||||
|         if: matrix.os == 'ubuntu-latest' | ||||
|         run: | | ||||
|           if [ ! -d ~/.cache/coursier ]; then | ||||
|             echo "::error::The ~/.cache/coursier directory does not exist unexpectedly" | ||||
|             exit 1 | ||||
|           fi | ||||
|  | ||||
|   sbt-restore: | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     defaults: | ||||
|       run: | ||||
|         shell: bash | ||||
|         working-directory: __tests__/cache/sbt | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|     needs: sbt-save | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: Run setup-java with the cache for sbt | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
|         with: | ||||
|           distribution: 'adopt' | ||||
|           java-version: '11' | ||||
|           cache: sbt | ||||
|  | ||||
|       - name: Confirm that ~/Library/Caches/Coursier directory has been made | ||||
|         if: matrix.os == 'macos-latest' | ||||
|         run: | | ||||
|           if [ ! -d ~/Library/Caches/Coursier ]; then | ||||
|             echo "::error::The ~/Library/Caches/Coursier directory does not exist unexpectedly" | ||||
|             exit 1 | ||||
|           fi | ||||
|           ls ~/Library/Caches/Coursier | ||||
|  | ||||
|       - name: Confirm that ~/AppData/Local/Coursier/Cache directory has been made | ||||
|         if: matrix.os == 'windows-latest' | ||||
|         run: | | ||||
|           if [ ! -d ~/AppData/Local/Coursier/Cache ]; then | ||||
|             echo "::error::The ~/AppData/Local/Coursier/Cache directory does not exist unexpectedly" | ||||
|             exit 1 | ||||
|           fi | ||||
|           ls ~/AppData/Local/Coursier/Cache | ||||
|  | ||||
|       - name: Confirm that ~/.cache/coursier directory has been made | ||||
|         if: matrix.os == 'ubuntu-latest' | ||||
|         run: | | ||||
|           if [ ! -d ~/.cache/coursier ]; then | ||||
|             echo "::error::The ~/.cache/coursier directory does not exist unexpectedly" | ||||
|             exit 1 | ||||
|           fi | ||||
|           ls ~/.cache/coursier | ||||
|  | ||||
							
								
								
									
										6
									
								
								.github/workflows/e2e-local-file.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/e2e-local-file.yml
									
									
									
									
										vendored
									
									
								
							| @ -20,7 +20,7 @@ jobs: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: Download Adopt OpenJDK file | ||||
|         run: | | ||||
|           if ($IsLinux) { | ||||
| @ -57,7 +57,7 @@ jobs: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: Download Zulu OpenJDK file | ||||
|         run: | | ||||
|           if ($IsLinux) { | ||||
| @ -94,7 +94,7 @@ jobs: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: Download Eclipse Temurin file | ||||
|         run: | | ||||
|           if ($IsLinux) { | ||||
|  | ||||
							
								
								
									
										8
									
								
								.github/workflows/e2e-publishing.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								.github/workflows/e2e-publishing.yml
									
									
									
									
										vendored
									
									
								
							| @ -24,7 +24,7 @@ jobs: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: setup-java | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
| @ -59,7 +59,7 @@ jobs: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: Create fake settings.xml | ||||
|         run: | | ||||
|           $xmlDirectory = Join-Path $HOME ".m2" | ||||
| @ -95,7 +95,7 @@ jobs: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: Create fake settings.xml | ||||
|         run: | | ||||
|           $xmlDirectory = Join-Path $HOME ".m2" | ||||
| @ -132,7 +132,7 @@ jobs: | ||||
|         os: [macos-latest, windows-latest, ubuntu-latest] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: setup-java | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
|  | ||||
							
								
								
									
										14
									
								
								.github/workflows/e2e-versions.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.github/workflows/e2e-versions.yml
									
									
									
									
										vendored
									
									
								
							| @ -27,7 +27,7 @@ jobs: | ||||
|           version: 8 | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: setup-java | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
| @ -53,7 +53,7 @@ jobs: | ||||
|         - '16.0.2+7' | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: setup-java | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
| @ -75,7 +75,7 @@ jobs: | ||||
|         distribution: ['temurin', 'zulu', 'liberica'] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: setup-java | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
| @ -98,7 +98,7 @@ jobs: | ||||
|         version: ['17-ea', '15.0.0-ea.14'] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: setup-java | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
| @ -120,7 +120,7 @@ jobs: | ||||
|         version: ['17-ea'] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: setup-java | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
| @ -165,7 +165,7 @@ jobs: | ||||
|             java-package: 'jre' | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: setup-java | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
| @ -191,7 +191,7 @@ jobs: | ||||
|         version: ['11'] | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         uses: actions/checkout@v3 | ||||
|       - name: setup-java | ||||
|         uses: ./ | ||||
|         id: setup-java | ||||
|  | ||||
							
								
								
									
										4
									
								
								.github/workflows/licensed.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/licensed.yml
									
									
									
									
										vendored
									
									
								
							| @ -14,12 +14,12 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     name: Check licenses | ||||
|     steps: | ||||
|       - uses: actions/checkout@v2 | ||||
|       - uses: actions/checkout@v3 | ||||
|       - run: npm ci | ||||
|       - name: Install licensed | ||||
|         run: | | ||||
|           cd $RUNNER_TEMP | ||||
|           curl -Lfs -o licensed.tar.gz https://github.com/github/licensed/releases/download/3.3.1/licensed-3.3.1-linux-x64.tar.gz | ||||
|           curl -Lfs -o licensed.tar.gz https://github.com/github/licensed/releases/download/3.4.4/licensed-3.4.4-linux-x64.tar.gz | ||||
|           sudo tar -xzf licensed.tar.gz | ||||
|           sudo mv licensed /usr/local/bin/licensed | ||||
|       - run: licensed status | ||||
|  | ||||
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@actions/cache.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								.licenses/npm/@azure/core-asynciterator-polyfill.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@azure/core-asynciterator-polyfill.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/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/@opentelemetry/api.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/@opentelemetry/api.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											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/node-fetch.dep.yml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.licenses/npm/node-fetch.dep.yml
									
									
									
										generated
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										76
									
								
								CODE_OF_CONDUCT.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								CODE_OF_CONDUCT.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,76 @@ | ||||
| # Contributor Covenant Code of Conduct | ||||
|  | ||||
| ## Our Pledge | ||||
|  | ||||
| In the interest of fostering an open and welcoming environment, we as | ||||
| contributors and maintainers pledge to make participation in our project and | ||||
| our community a harassment-free experience for everyone, regardless of age, body | ||||
| size, disability, ethnicity, sex characteristics, gender identity and expression, | ||||
| level of experience, education, socio-economic status, nationality, personal | ||||
| appearance, race, religion, or sexual identity and orientation. | ||||
|  | ||||
| ## Our Standards | ||||
|  | ||||
| Examples of behavior that contributes to creating a positive environment | ||||
| include: | ||||
|  | ||||
| * Using welcoming and inclusive language | ||||
| * Being respectful of differing viewpoints and experiences | ||||
| * Gracefully accepting constructive criticism | ||||
| * Focusing on what is best for the community | ||||
| * Showing empathy towards other community members | ||||
|  | ||||
| Examples of unacceptable behavior by participants include: | ||||
|  | ||||
| * The use of sexualized language or imagery and unwelcome sexual attention or | ||||
|   advances | ||||
| * Trolling, insulting/derogatory comments, and personal or political attacks | ||||
| * Public or private harassment | ||||
| * Publishing others' private information, such as a physical or electronic | ||||
|   address, without explicit permission | ||||
| * Other conduct which could reasonably be considered inappropriate in a | ||||
|   professional setting | ||||
|  | ||||
| ## Our Responsibilities | ||||
|  | ||||
| Project maintainers are responsible for clarifying the standards of acceptable | ||||
| behavior and are expected to take appropriate and fair corrective action in | ||||
| response to any instances of unacceptable behavior. | ||||
|  | ||||
| Project maintainers have the right and responsibility to remove, edit, or | ||||
| reject comments, commits, code, wiki edits, issues, and other contributions | ||||
| that are not aligned to this Code of Conduct, or to ban temporarily or | ||||
| permanently any contributor for other behaviors that they deem inappropriate, | ||||
| threatening, offensive, or harmful. | ||||
|  | ||||
| ## Scope | ||||
|  | ||||
| This Code of Conduct applies within all project spaces, and it also applies when | ||||
| an individual is representing the project or its community in public spaces. | ||||
| Examples of representing a project or community include using an official | ||||
| project e-mail address, posting via an official social media account, or acting | ||||
| as an appointed representative at an online or offline event. Representation of | ||||
| a project may be further defined and clarified by project maintainers. | ||||
|  | ||||
| ## Enforcement | ||||
|  | ||||
| Instances of abusive, harassing, or otherwise unacceptable behavior may be | ||||
| reported by contacting the project team at opensource+actions/setup-java@github.com. All | ||||
| complaints will be reviewed and investigated and will result in a response that | ||||
| is deemed necessary and appropriate to the circumstances. The project team is | ||||
| obligated to maintain confidentiality with regard to the reporter of an incident. | ||||
| Further details of specific enforcement policies may be posted separately. | ||||
|  | ||||
| Project maintainers who do not follow or enforce the Code of Conduct in good | ||||
| faith may face temporary or permanent repercussions as determined by other | ||||
| members of the project's leadership. | ||||
|  | ||||
| ## Attribution | ||||
|  | ||||
| This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, | ||||
| available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html | ||||
|  | ||||
| [homepage]: https://www.contributor-covenant.org | ||||
|  | ||||
| For answers to common questions about this code of conduct, see | ||||
| https://www.contributor-covenant.org/faq | ||||
							
								
								
									
										40
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								README.md
									
									
									
									
									
								
							| @ -25,8 +25,8 @@ Inputs `java-version` and `distribution` are mandatory. See [Supported distribut | ||||
| **Eclipse Temurin** | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-java@v2 | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/setup-java@v3 | ||||
|   with: | ||||
|     distribution: 'temurin' # See 'Supported distributions' for available options | ||||
|     java-version: '17' | ||||
| @ -36,8 +36,8 @@ steps: | ||||
| **Zulu OpenJDK** | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-java@v2 | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/setup-java@v3 | ||||
|   with: | ||||
|     distribution: 'zulu' # See 'Supported distributions' for available options | ||||
|     java-version: '11' | ||||
| @ -69,14 +69,17 @@ Currently, the following distributions are supported: | ||||
| The action has a built-in functionality for caching and restoring dependencies. It uses [actions/cache](https://github.com/actions/cache) under hood for caching dependencies but requires less configuration settings. Supported package managers are gradle and maven. The format of the used cache key is `setup-java-${{ platform }}-${{ packageManager }}-${{ fileHash }}`, where the hash is based on the following files: | ||||
| - gradle: `**/*.gradle*`, `**/gradle-wrapper.properties`, `buildSrc/**/*.kt` | ||||
| - maven: `**/pom.xml` | ||||
| - sbt:  `**/build.sbt` | ||||
|  | ||||
| The workflow output `cache-hit` is set to indicate if an exact match was found for the key [as actions/cache does](https://github.com/actions/cache/tree/main#outputs). | ||||
|  | ||||
| The cache input is optional, and caching is turned off by default. | ||||
|  | ||||
| #### Caching gradle dependencies | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-java@v2 | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/setup-java@v3 | ||||
|   with: | ||||
|     distribution: 'temurin' | ||||
|     java-version: '11' | ||||
| @ -87,8 +90,8 @@ steps: | ||||
| #### Caching maven dependencies | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-java@v2 | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/setup-java@v3 | ||||
|   with: | ||||
|     distribution: 'temurin' | ||||
|     java-version: '11' | ||||
| @ -97,6 +100,19 @@ steps: | ||||
|   run: mvn -B package --file pom.xml | ||||
| ``` | ||||
|  | ||||
| #### Caching sbt dependencies | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/setup-java@v3 | ||||
|   with: | ||||
|     distribution: 'temurin' | ||||
|     java-version: '11' | ||||
|     cache: 'sbt' | ||||
| - name: Build with SBT | ||||
|   run: sbt package | ||||
| ``` | ||||
|  | ||||
| ### Check latest | ||||
| In the basic examples above, the `check-latest` flag defaults to `false`. When set to `false`, the action tries to first resolve a version of Java from the local tool cache on the runner. If unable to find a specific version in the cache, the action will download a version of Java. Use the default or set `check-latest` to `false` if you prefer a faster more consistent setup experience that prioritizes trying to use the cached versions at the expense of newer versions sometimes being available for download. | ||||
|  | ||||
| @ -107,8 +123,8 @@ For Java distributions that are not cached on Hosted images, `check-latest` alwa | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-java@v2 | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/setup-java@v3 | ||||
|   with: | ||||
|     distribution: 'adopt' | ||||
|     java-version: '11' | ||||
| @ -126,9 +142,9 @@ jobs: | ||||
|         java: [ '8', '11', '13', '15' ] | ||||
|     name: Java ${{ matrix.Java }} sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v2 | ||||
|       - uses: actions/checkout@v3 | ||||
|       - name: Setup java | ||||
|         uses: actions/setup-java@v2 | ||||
|         uses: actions/setup-java@v3 | ||||
|         with: | ||||
|           distribution: '<distribution>' | ||||
|           java-version: ${{ matrix.java }} | ||||
|  | ||||
| @ -127,6 +127,23 @@ describe('dependency cache', () => { | ||||
|       expect(spyWarning).not.toBeCalled(); | ||||
|       expect(spyInfo).toBeCalledWith('gradle cache is not found'); | ||||
|     }); | ||||
|     describe('for sbt', () => { | ||||
|       it('throws error if no build.sbt found', async () => { | ||||
|         await expect(restore('sbt')).rejects.toThrowError( | ||||
|           `No file in ${projectRoot( | ||||
|             workspace | ||||
|           )} matched to [**/*.sbt,**/project/build.properties,**/project/**.{scala,sbt}], make sure you have checked out the target repository` | ||||
|         ); | ||||
|       }); | ||||
|       it('downloads cache', async () => { | ||||
|         createFile(join(workspace, 'build.sbt')); | ||||
|  | ||||
|         await restore('sbt'); | ||||
|         expect(spyCacheRestore).toBeCalled(); | ||||
|         expect(spyWarning).not.toBeCalled(); | ||||
|         expect(spyInfo).toBeCalledWith('sbt cache is not found'); | ||||
|       }); | ||||
|     }); | ||||
|   }); | ||||
|   describe('save', () => { | ||||
|     let spyCacheSave: jest.SpyInstance< | ||||
| @ -213,6 +230,30 @@ describe('dependency cache', () => { | ||||
|         expect(spyInfo).toBeCalledWith(expect.stringMatching(/^Cache saved with the key:.*/)); | ||||
|       }); | ||||
|     }); | ||||
|     describe('for sbt', () => { | ||||
|       it('uploads cache even if no build.sbt found', async () => { | ||||
|         createStateForMissingBuildFile(); | ||||
|         await save('sbt'); | ||||
|         expect(spyCacheSave).toBeCalled(); | ||||
|         expect(spyWarning).not.toBeCalled(); | ||||
|       }); | ||||
|       it('does not upload cache if no restore run before', async () => { | ||||
|         createFile(join(workspace, 'build.sbt')); | ||||
|  | ||||
|         await save('sbt'); | ||||
|         expect(spyCacheSave).not.toBeCalled(); | ||||
|         expect(spyWarning).toBeCalledWith('Error retrieving key from state.'); | ||||
|       }); | ||||
|       it('uploads cache', async () => { | ||||
|         createFile(join(workspace, 'build.sbt')); | ||||
|         createStateForSuccessfulRestore(); | ||||
|  | ||||
|         await save('sbt'); | ||||
|         expect(spyCacheSave).toBeCalled(); | ||||
|         expect(spyWarning).not.toBeCalled(); | ||||
|         expect(spyInfo).toBeCalledWith(expect.stringMatching(/^Cache saved with the key:.*/)); | ||||
|       }); | ||||
|     }); | ||||
|   }); | ||||
| }); | ||||
|  | ||||
|  | ||||
							
								
								
									
										1
									
								
								__tests__/cache/sbt/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								__tests__/cache/sbt/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| target/ | ||||
							
								
								
									
										3
									
								
								__tests__/cache/sbt/build.sbt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								__tests__/cache/sbt/build.sbt
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | ||||
| ThisBuild / scalaVersion := "2.12.15" | ||||
|  | ||||
| libraryDependencies += "org.scala-lang.modules" %% "scala-parser-combinators" % "1.1.2" | ||||
							
								
								
									
										1
									
								
								__tests__/cache/sbt/project/build.properties
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								__tests__/cache/sbt/project/build.properties
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | ||||
| sbt.version=1.6.2 | ||||
| @ -139,6 +139,7 @@ describe('findPackageForDownload', () => { | ||||
|       packageType: 'jdk', | ||||
|       checkLatest: false | ||||
|     }); | ||||
|     distribution['getAvailableVersions'] = async () => manifestData; | ||||
|     await expect( | ||||
|       distribution['findPackageForDownload'](distribution['version']) | ||||
|     ).rejects.toThrowError(/Could not find satisfied version for semver */); | ||||
|  | ||||
| @ -1,4 +1,9 @@ | ||||
| import { isVersionSatisfies } from '../src/util'; | ||||
| import * as cache from '@actions/cache'; | ||||
| import * as core from '@actions/core'; | ||||
| import { isVersionSatisfies, isCacheFeatureAvailable } from '../src/util'; | ||||
|  | ||||
| jest.mock('@actions/cache'); | ||||
| jest.mock('@actions/core'); | ||||
|  | ||||
| describe('isVersionSatisfies', () => { | ||||
|   it.each([ | ||||
| @ -20,3 +25,38 @@ describe('isVersionSatisfies', () => { | ||||
|     expect(actual).toBe(expected); | ||||
|   }); | ||||
| }); | ||||
|  | ||||
| describe('isCacheFeatureAvailable', () => { | ||||
|   it('isCacheFeatureAvailable disabled on GHES', () => { | ||||
|     jest.spyOn(cache, 'isFeatureAvailable').mockImplementation(() => false); | ||||
|     try { | ||||
|       process.env['GITHUB_SERVER_URL'] = 'http://example.com'; | ||||
|       isCacheFeatureAvailable(); | ||||
|     } catch (error) { | ||||
|       expect(error).toHaveProperty( | ||||
|         'message', | ||||
|         'Caching is only supported on GHES version >= 3.5. If you are on a version >= 3.5, please check with your GHES admin if the Actions cache service is enabled or not.' | ||||
|       ); | ||||
|     } finally { | ||||
|       delete process.env['GITHUB_SERVER_URL']; | ||||
|     } | ||||
|   }); | ||||
|  | ||||
|   it('isCacheFeatureAvailable disabled on dotcom', () => { | ||||
|     jest.spyOn(cache, 'isFeatureAvailable').mockImplementation(() => false); | ||||
|     const infoMock = jest.spyOn(core, 'warning'); | ||||
|     const message = 'The runner was not able to contact the cache service. Caching will be skipped'; | ||||
|     try { | ||||
|       process.env['GITHUB_SERVER_URL'] = 'http://github.com'; | ||||
|       expect(isCacheFeatureAvailable()).toBe(false); | ||||
|       expect(infoMock).toHaveBeenCalledWith(message); | ||||
|     } finally { | ||||
|       delete process.env['GITHUB_SERVER_URL']; | ||||
|     } | ||||
|   }); | ||||
|  | ||||
|   it('isCacheFeatureAvailable is enabled', () => { | ||||
|     jest.spyOn(cache, 'isFeatureAvailable').mockImplementation(() => true); | ||||
|     expect(isCacheFeatureAvailable()).toBe(true); | ||||
|   }); | ||||
| }); | ||||
|  | ||||
| @ -67,6 +67,6 @@ outputs: | ||||
|   path: | ||||
|     description: 'Path to where the java environment has been installed (same as $JAVA_HOME)' | ||||
| runs: | ||||
|   using: 'node12' | ||||
|   using: 'node16' | ||||
|   main: 'dist/setup/index.js' | ||||
|   post: 'dist/cleanup/index.js' | ||||
|  | ||||
							
								
								
									
										184
									
								
								dist/cleanup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										184
									
								
								dist/cleanup/index.js
									
									
									
									
										vendored
									
									
								
							| @ -3730,10 +3730,7 @@ const options_1 = __webpack_require__(538); | ||||
| const requestUtils_1 = __webpack_require__(899); | ||||
| const versionSalt = '1.0'; | ||||
| function getCacheApiUrl(resource) { | ||||
|     // Ideally we just use ACTIONS_CACHE_URL
 | ||||
|     const baseUrl = (process.env['ACTIONS_CACHE_URL'] || | ||||
|         process.env['ACTIONS_RUNTIME_URL'] || | ||||
|         '').replace('pipelines', 'artifactcache'); | ||||
|     const baseUrl = process.env['ACTIONS_CACHE_URL'] || ''; | ||||
|     if (!baseUrl) { | ||||
|         throw new Error('Cache Service Url not found, unable to restore cache.'); | ||||
|     } | ||||
| @ -5932,7 +5929,35 @@ module.exports = { | ||||
| /* 193 */, | ||||
| /* 194 */, | ||||
| /* 195 */, | ||||
| /* 196 */, | ||||
| /* 196 */ | ||||
| /***/ (function(__unusedmodule, exports) { | ||||
| 
 | ||||
| "use strict"; | ||||
| 
 | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| exports.STATE_GPG_PRIVATE_KEY_FINGERPRINT = exports.INPUT_JOB_STATUS = exports.INPUT_CACHE = exports.INPUT_DEFAULT_GPG_PASSPHRASE = exports.INPUT_DEFAULT_GPG_PRIVATE_KEY = exports.INPUT_GPG_PASSPHRASE = exports.INPUT_GPG_PRIVATE_KEY = exports.INPUT_OVERWRITE_SETTINGS = exports.INPUT_SETTINGS_PATH = exports.INPUT_SERVER_PASSWORD = exports.INPUT_SERVER_USERNAME = exports.INPUT_SERVER_ID = exports.INPUT_CHECK_LATEST = exports.INPUT_JDK_FILE = exports.INPUT_DISTRIBUTION = exports.INPUT_JAVA_PACKAGE = exports.INPUT_ARCHITECTURE = exports.INPUT_JAVA_VERSION = exports.MACOS_JAVA_CONTENT_POSTFIX = void 0; | ||||
| exports.MACOS_JAVA_CONTENT_POSTFIX = 'Contents/Home'; | ||||
| exports.INPUT_JAVA_VERSION = 'java-version'; | ||||
| exports.INPUT_ARCHITECTURE = 'architecture'; | ||||
| exports.INPUT_JAVA_PACKAGE = 'java-package'; | ||||
| exports.INPUT_DISTRIBUTION = 'distribution'; | ||||
| exports.INPUT_JDK_FILE = 'jdkFile'; | ||||
| exports.INPUT_CHECK_LATEST = 'check-latest'; | ||||
| exports.INPUT_SERVER_ID = 'server-id'; | ||||
| exports.INPUT_SERVER_USERNAME = 'server-username'; | ||||
| exports.INPUT_SERVER_PASSWORD = 'server-password'; | ||||
| exports.INPUT_SETTINGS_PATH = 'settings-path'; | ||||
| exports.INPUT_OVERWRITE_SETTINGS = 'overwrite-settings'; | ||||
| exports.INPUT_GPG_PRIVATE_KEY = 'gpg-private-key'; | ||||
| exports.INPUT_GPG_PASSPHRASE = 'gpg-passphrase'; | ||||
| exports.INPUT_DEFAULT_GPG_PRIVATE_KEY = undefined; | ||||
| exports.INPUT_DEFAULT_GPG_PASSPHRASE = 'GPG_PASSPHRASE'; | ||||
| exports.INPUT_CACHE = 'cache'; | ||||
| exports.INPUT_JOB_STATUS = 'job-status'; | ||||
| exports.STATE_GPG_PRIVATE_KEY_FINGERPRINT = 'gpg-private-key-fingerprint'; | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
| /* 197 */ | ||||
| /***/ (function(__unusedmodule, exports, __webpack_require__) { | ||||
| 
 | ||||
| @ -6092,7 +6117,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| exports.run = void 0; | ||||
| const core = __importStar(__webpack_require__(470)); | ||||
| const gpg = __importStar(__webpack_require__(884)); | ||||
| const constants = __importStar(__webpack_require__(694)); | ||||
| const constants = __importStar(__webpack_require__(196)); | ||||
| const util_1 = __webpack_require__(322); | ||||
| const cache_1 = __webpack_require__(913); | ||||
| function removePrivateKeyFromKeychain() { | ||||
| @ -6889,7 +6914,8 @@ function downloadCacheStorageSDK(archiveLocation, archivePath, options) { | ||||
|             //
 | ||||
|             // If the file exceeds the buffer maximum length (~1 GB on 32-bit systems and ~2 GB
 | ||||
|             // on 64-bit systems), split the download into multiple segments
 | ||||
|             const maxSegmentSize = buffer.constants.MAX_LENGTH; | ||||
|             // ~2 GB = 2147483647, beyond this, we start getting out of range error. So, capping it accordingly.
 | ||||
|             const maxSegmentSize = Math.min(2147483647, buffer.constants.MAX_LENGTH); | ||||
|             const downloadProgress = new DownloadProgress(contentLength); | ||||
|             const fd = fs.openSync(archivePath, 'w'); | ||||
|             try { | ||||
| @ -9110,14 +9136,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) { | ||||
|     return (mod && mod.__esModule) ? mod : { "default": mod }; | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| exports.isJobStatusSuccess = exports.getToolcachePath = exports.isVersionSatisfies = exports.getDownloadArchiveExtension = exports.extractJdkFile = exports.getVersionFromToolcachePath = exports.getBooleanInput = exports.getTempDir = void 0; | ||||
| exports.isCacheFeatureAvailable = exports.isGhes = exports.isJobStatusSuccess = exports.getToolcachePath = exports.isVersionSatisfies = exports.getDownloadArchiveExtension = exports.extractJdkFile = exports.getVersionFromToolcachePath = exports.getBooleanInput = exports.getTempDir = void 0; | ||||
| const os_1 = __importDefault(__webpack_require__(87)); | ||||
| const path_1 = __importDefault(__webpack_require__(622)); | ||||
| const fs = __importStar(__webpack_require__(747)); | ||||
| const semver = __importStar(__webpack_require__(876)); | ||||
| const cache = __importStar(__webpack_require__(692)); | ||||
| const core = __importStar(__webpack_require__(470)); | ||||
| const tc = __importStar(__webpack_require__(533)); | ||||
| const constants_1 = __webpack_require__(694); | ||||
| const constants_1 = __webpack_require__(196); | ||||
| function getTempDir() { | ||||
|     let tempDirectory = process.env['RUNNER_TEMP'] || os_1.default.tmpdir(); | ||||
|     return tempDirectory; | ||||
| @ -9187,6 +9214,24 @@ function isJobStatusSuccess() { | ||||
|     return jobStatus === 'success'; | ||||
| } | ||||
| exports.isJobStatusSuccess = isJobStatusSuccess; | ||||
| function isGhes() { | ||||
|     const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com'); | ||||
|     return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'; | ||||
| } | ||||
| exports.isGhes = isGhes; | ||||
| function isCacheFeatureAvailable() { | ||||
|     if (!cache.isFeatureAvailable()) { | ||||
|         if (isGhes()) { | ||||
|             throw new Error('Caching is only supported on GHES version >= 3.5. If you are on a version >= 3.5, please check with your GHES admin if the Actions cache service is enabled or not.'); | ||||
|         } | ||||
|         else { | ||||
|             core.warning('The runner was not able to contact the cache service. Caching will be skipped'); | ||||
|         } | ||||
|         return false; | ||||
|     } | ||||
|     return true; | ||||
| } | ||||
| exports.isCacheFeatureAvailable = isCacheFeatureAvailable; | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
| @ -41953,7 +41998,7 @@ __exportStar(__webpack_require__(220), exports); | ||||
| __exportStar(__webpack_require__(932), exports); | ||||
| __exportStar(__webpack_require__(975), exports); | ||||
| __exportStar(__webpack_require__(207), exports); | ||||
| __exportStar(__webpack_require__(773), exports); | ||||
| __exportStar(__webpack_require__(694), exports); | ||||
| __exportStar(__webpack_require__(695), exports); | ||||
| var spancontext_utils_1 = __webpack_require__(629); | ||||
| Object.defineProperty(exports, "isSpanContextValid", { enumerable: true, get: function () { return spancontext_utils_1.isSpanContextValid; } }); | ||||
| @ -43501,9 +43546,17 @@ AbortError.prototype = Object.create(Error.prototype); | ||||
| AbortError.prototype.constructor = AbortError; | ||||
| AbortError.prototype.name = 'AbortError'; | ||||
| 
 | ||||
| const URL$1 = Url.URL || whatwgUrl.URL; | ||||
| 
 | ||||
| // fix an issue where "PassThrough", "resolve" aren't a named export for node <10
 | ||||
| const PassThrough$1 = Stream.PassThrough; | ||||
| const resolve_url = Url.resolve; | ||||
| 
 | ||||
| const isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) { | ||||
| 	const orig = new URL$1(original).hostname; | ||||
| 	const dest = new URL$1(destination).hostname; | ||||
| 
 | ||||
| 	return orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest); | ||||
| }; | ||||
| 
 | ||||
| /** | ||||
|  * Fetch function | ||||
| @ -43591,7 +43644,19 @@ function fetch(url, opts) { | ||||
| 				const location = headers.get('Location'); | ||||
| 
 | ||||
| 				// HTTP fetch step 5.3
 | ||||
| 				const locationURL = location === null ? null : resolve_url(request.url, location); | ||||
| 				let locationURL = null; | ||||
| 				try { | ||||
| 					locationURL = location === null ? null : new URL$1(location, request.url).toString(); | ||||
| 				} catch (err) { | ||||
| 					// error here can only be invalid URL in Location: header
 | ||||
| 					// do not throw when options.redirect == manual
 | ||||
| 					// let the user extract the errorneous redirect URL
 | ||||
| 					if (request.redirect !== 'manual') { | ||||
| 						reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect')); | ||||
| 						finalize(); | ||||
| 						return; | ||||
| 					} | ||||
| 				} | ||||
| 
 | ||||
| 				// HTTP fetch step 5.5
 | ||||
| 				switch (request.redirect) { | ||||
| @ -43639,6 +43704,12 @@ function fetch(url, opts) { | ||||
| 							size: request.size | ||||
| 						}; | ||||
| 
 | ||||
| 						if (!isDomainOrSubdomain(request.url, locationURL)) { | ||||
| 							for (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) { | ||||
| 								requestOpts.headers.delete(name); | ||||
| 							} | ||||
| 						} | ||||
| 
 | ||||
| 						// HTTP-redirect fetch step 9
 | ||||
| 						if (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) { | ||||
| 							reject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect')); | ||||
| @ -53480,6 +53551,15 @@ function checkKey(key) { | ||||
|         throw new ValidationError(`Key Validation Error: ${key} cannot contain commas.`); | ||||
|     } | ||||
| } | ||||
| /** | ||||
|  * isFeatureAvailable to check the presence of Actions cache service | ||||
|  * | ||||
|  * @returns boolean return true if Actions cache service feature is available, otherwise false | ||||
|  */ | ||||
| function isFeatureAvailable() { | ||||
|     return !!process.env['ACTIONS_CACHE_URL']; | ||||
| } | ||||
| exports.isFeatureAvailable = isFeatureAvailable; | ||||
| /** | ||||
|  * Restores cache from keys | ||||
|  * | ||||
| @ -53600,28 +53680,23 @@ exports.saveCache = saveCache; | ||||
| 
 | ||||
| "use strict"; | ||||
| 
 | ||||
| /* | ||||
|  * Copyright The OpenTelemetry Authors | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * | ||||
|  *      https://www.apache.org/licenses/LICENSE-2.0
 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| exports.STATE_GPG_PRIVATE_KEY_FINGERPRINT = exports.INPUT_JOB_STATUS = exports.INPUT_CACHE = exports.INPUT_DEFAULT_GPG_PASSPHRASE = exports.INPUT_DEFAULT_GPG_PRIVATE_KEY = exports.INPUT_GPG_PASSPHRASE = exports.INPUT_GPG_PRIVATE_KEY = exports.INPUT_OVERWRITE_SETTINGS = exports.INPUT_SETTINGS_PATH = exports.INPUT_SERVER_PASSWORD = exports.INPUT_SERVER_USERNAME = exports.INPUT_SERVER_ID = exports.INPUT_CHECK_LATEST = exports.INPUT_JDK_FILE = exports.INPUT_DISTRIBUTION = exports.INPUT_JAVA_PACKAGE = exports.INPUT_ARCHITECTURE = exports.INPUT_JAVA_VERSION = exports.MACOS_JAVA_CONTENT_POSTFIX = void 0; | ||||
| exports.MACOS_JAVA_CONTENT_POSTFIX = 'Contents/Home'; | ||||
| exports.INPUT_JAVA_VERSION = 'java-version'; | ||||
| exports.INPUT_ARCHITECTURE = 'architecture'; | ||||
| exports.INPUT_JAVA_PACKAGE = 'java-package'; | ||||
| exports.INPUT_DISTRIBUTION = 'distribution'; | ||||
| exports.INPUT_JDK_FILE = 'jdkFile'; | ||||
| exports.INPUT_CHECK_LATEST = 'check-latest'; | ||||
| exports.INPUT_SERVER_ID = 'server-id'; | ||||
| exports.INPUT_SERVER_USERNAME = 'server-username'; | ||||
| exports.INPUT_SERVER_PASSWORD = 'server-password'; | ||||
| exports.INPUT_SETTINGS_PATH = 'settings-path'; | ||||
| exports.INPUT_OVERWRITE_SETTINGS = 'overwrite-settings'; | ||||
| exports.INPUT_GPG_PRIVATE_KEY = 'gpg-private-key'; | ||||
| exports.INPUT_GPG_PASSPHRASE = 'gpg-passphrase'; | ||||
| exports.INPUT_DEFAULT_GPG_PRIVATE_KEY = undefined; | ||||
| exports.INPUT_DEFAULT_GPG_PASSPHRASE = 'GPG_PASSPHRASE'; | ||||
| exports.INPUT_CACHE = 'cache'; | ||||
| exports.INPUT_JOB_STATUS = 'job-status'; | ||||
| exports.STATE_GPG_PRIVATE_KEY_FINGERPRINT = 'gpg-private-key-fingerprint'; | ||||
| 
 | ||||
| //# sourceMappingURL=tracer_provider.js.map
 | ||||
| 
 | ||||
| /***/ }), | ||||
| /* 695 */ | ||||
| @ -55688,30 +55763,7 @@ module.exports = function(dst, src) { | ||||
| /* 770 */, | ||||
| /* 771 */, | ||||
| /* 772 */, | ||||
| /* 773 */ | ||||
| /***/ (function(__unusedmodule, exports) { | ||||
| 
 | ||||
| "use strict"; | ||||
| 
 | ||||
| /* | ||||
|  * Copyright The OpenTelemetry Authors | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * | ||||
|  *      https://www.apache.org/licenses/LICENSE-2.0
 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  */ | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| //# sourceMappingURL=tracer_provider.js.map
 | ||||
| 
 | ||||
| /***/ }), | ||||
| /* 773 */, | ||||
| /* 774 */, | ||||
| /* 775 */, | ||||
| /* 776 */, | ||||
| @ -61834,8 +61886,24 @@ const supportedPackageManager = [ | ||||
|         path: [path_1.join(os_1.default.homedir(), '.gradle', 'caches'), path_1.join(os_1.default.homedir(), '.gradle', 'wrapper')], | ||||
|         // https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---gradle
 | ||||
|         pattern: ['**/*.gradle*', '**/gradle-wrapper.properties', 'buildSrc/**/*.kt'] | ||||
|     }, | ||||
|     { | ||||
|         id: 'sbt', | ||||
|         path: [ | ||||
|             path_1.join(os_1.default.homedir(), '.ivy2', 'cache'), | ||||
|             path_1.join(os_1.default.homedir(), '.sbt'), | ||||
|             getCoursierCachePath() | ||||
|         ], | ||||
|         pattern: ['**/*.sbt', '**/project/build.properties', '**/project/**.{scala,sbt}'] | ||||
|     } | ||||
| ]; | ||||
| function getCoursierCachePath() { | ||||
|     if (os_1.default.type() === 'Linux') | ||||
|         return path_1.join(os_1.default.homedir(), '.cache', 'coursier'); | ||||
|     if (os_1.default.type() === 'Darwin') | ||||
|         return path_1.join(os_1.default.homedir(), 'Library', 'Caches', 'Coursier'); | ||||
|     return path_1.join(os_1.default.homedir(), 'AppData', 'Local', 'Coursier', 'Cache'); | ||||
| } | ||||
| function findPackageManager(id) { | ||||
|     const packageManager = supportedPackageManager.find(packageManager => packageManager.id === id); | ||||
|     if (packageManager === undefined) { | ||||
| @ -61873,9 +61941,11 @@ function restore(id) { | ||||
|         ]); | ||||
|         if (matchedKey) { | ||||
|             core.saveState(CACHE_MATCHED_KEY, matchedKey); | ||||
|             core.setOutput('cache-hit', matchedKey === primaryKey); | ||||
|             core.info(`Cache restored from key: ${matchedKey}`); | ||||
|         } | ||||
|         else { | ||||
|             core.setOutput('cache-hit', false); | ||||
|             core.info(`${packageManager.id} cache is not found`); | ||||
|         } | ||||
|     }); | ||||
|  | ||||
							
								
								
									
										1350
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1350
									
								
								dist/setup/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -20,8 +20,8 @@ Inputs `java-version` and `distribution` are mandatory and needs to be provided. | ||||
| ### Eclipse Temurin | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-java@v2 | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/setup-java@v3 | ||||
|   with: | ||||
|     distribution: 'temurin' | ||||
|     java-version: '11' | ||||
| @ -33,8 +33,8 @@ steps: | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-java@v2 | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/setup-java@v3 | ||||
|   with: | ||||
|     distribution: 'adopt-hotspot' | ||||
|     java-version: '11' | ||||
| @ -44,8 +44,8 @@ steps: | ||||
| ### Zulu | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-java@v2 | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/setup-java@v3 | ||||
|   with: | ||||
|     distribution: 'zulu' | ||||
|     java-version: '11' | ||||
| @ -56,8 +56,8 @@ steps: | ||||
| ### Liberica | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-java@v2 | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/setup-java@v3 | ||||
|   with: | ||||
|     distribution: 'liberica' | ||||
|     java-version: '11' | ||||
| @ -68,8 +68,8 @@ steps: | ||||
| ### Microsoft | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-java@v2 | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/setup-java@v3 | ||||
|   with: | ||||
|     distribution: 'microsoft' | ||||
|     java-version: '11' | ||||
| @ -79,8 +79,8 @@ steps: | ||||
| ## Installing custom Java package type | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-java@v2 | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/setup-java@v3 | ||||
|   with: | ||||
|     distribution: '<distribution>' | ||||
|     java-version: '11' | ||||
| @ -93,8 +93,8 @@ steps: | ||||
|  | ||||
| ```yaml | ||||
| steps: | ||||
| - uses: actions/checkout@v2 | ||||
| - uses: actions/setup-java@v2 | ||||
| - uses: actions/checkout@v3 | ||||
| - uses: actions/setup-java@v3 | ||||
|   with: | ||||
|     distribution: '<distribution>' | ||||
|     java-version: '11' | ||||
| @ -110,7 +110,7 @@ steps: | ||||
| - run: | | ||||
|     download_url="https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.10%2B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.10_9.tar.gz" | ||||
|     wget -O $RUNNER_TEMP/java_package.tar.gz $download_url | ||||
| - uses: actions/setup-java@v2 | ||||
| - uses: actions/setup-java@v3 | ||||
|   with: | ||||
|     distribution: 'jdkfile' | ||||
|     jdkFile: ${{ runner.temp }}/java_package.tar.gz | ||||
| @ -132,9 +132,9 @@ jobs: | ||||
|         java: [ '8', '11' ] | ||||
|     name: Java ${{ matrix.Java }} (${{ matrix.distribution }}) sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v2 | ||||
|       - uses: actions/checkout@v3 | ||||
|       - name: Setup java | ||||
|         uses: actions/setup-java@v2 | ||||
|         uses: actions/setup-java@v3 | ||||
|         with: | ||||
|           distribution: ${{ matrix.distribution }} | ||||
|           java-version: ${{ matrix.java }} | ||||
| @ -152,9 +152,9 @@ jobs: | ||||
|         os: [ 'ubuntu-latest', 'macos-latest', 'windows-latest' ] | ||||
|     name: Java ${{ matrix.Java }} (${{ matrix.os }}) sample | ||||
|     steps: | ||||
|       - uses: actions/checkout@v2 | ||||
|       - uses: actions/checkout@v3 | ||||
|       - name: Setup java | ||||
|         uses: actions/setup-java@v2 | ||||
|         uses: actions/setup-java@v3 | ||||
|         with: | ||||
|           distribution: 'temurin' | ||||
|           java-version: ${{ matrix.java }} | ||||
| @ -169,9 +169,9 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|     - uses: actions/checkout@v2 | ||||
|     - uses: actions/checkout@v3 | ||||
|     - name: Set up JDK 11 | ||||
|       uses: actions/setup-java@v2 | ||||
|       uses: actions/setup-java@v3 | ||||
|       with: | ||||
|         distribution: '<distribution>' | ||||
|         java-version: '11' | ||||
| @ -185,7 +185,7 @@ jobs: | ||||
|         GITHUB_TOKEN: ${{ github.token }} # GITHUB_TOKEN is the default env for the password | ||||
|  | ||||
|     - name: Set up Apache Maven Central | ||||
|       uses: actions/setup-java@v2 | ||||
|       uses: actions/setup-java@v3 | ||||
|       with: # running setup-java again overwrites the settings.xml | ||||
|         distribution: 'temurin' | ||||
|         java-version: '11' | ||||
| @ -280,9 +280,9 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|     - uses: actions/checkout@v2 | ||||
|     - uses: actions/checkout@v3 | ||||
|     - name: Set up JDK 11 for Shared Runner | ||||
|       uses: actions/setup-java@v2 | ||||
|       uses: actions/setup-java@v3 | ||||
|       with: | ||||
|         distribution: '<distribution>' | ||||
|         java-version: '11' | ||||
| @ -306,10 +306,10 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|  | ||||
|     steps: | ||||
|     - uses: actions/checkout@v2 | ||||
|     - uses: actions/checkout@v3 | ||||
|  | ||||
|     - name: Set up JDK 11 | ||||
|       uses: actions/setup-java@v2 | ||||
|       uses: actions/setup-java@v3 | ||||
|       with: | ||||
|         distribution: '<distribution>' | ||||
|         java-version: '11' | ||||
|  | ||||
							
								
								
									
										6750
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6750
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "setup-java", | ||||
|   "version": "2.0.0", | ||||
|   "version": "3.1.1", | ||||
|   "private": true, | ||||
|   "description": "setup java action", | ||||
|   "main": "dist/setup/index.js", | ||||
| @ -24,7 +24,7 @@ | ||||
|   "author": "GitHub", | ||||
|   "license": "MIT", | ||||
|   "dependencies": { | ||||
|     "@actions/cache": "^1.0.8", | ||||
|     "@actions/cache": "^2.0.2", | ||||
|     "@actions/core": "^1.2.6", | ||||
|     "@actions/exec": "^1.0.4", | ||||
|     "@actions/glob": "^0.2.0", | ||||
| @ -36,7 +36,7 @@ | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@types/jest": "^27.0.2", | ||||
|     "@types/node": "^12.19.13", | ||||
|     "@types/node": "^16.11.25", | ||||
|     "@types/semver": "^7.3.4", | ||||
|     "@zeit/ncc": "^0.20.5", | ||||
|     "jest": "^27.2.5", | ||||
|  | ||||
							
								
								
									
										19
									
								
								src/cache.ts
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								src/cache.ts
									
									
									
									
									
								
							| @ -13,7 +13,7 @@ const CACHE_MATCHED_KEY = 'cache-matched-key'; | ||||
| const CACHE_KEY_PREFIX = 'setup-java'; | ||||
|  | ||||
| interface PackageManager { | ||||
|   id: 'maven' | 'gradle'; | ||||
|   id: 'maven' | 'gradle' | 'sbt'; | ||||
|   /** | ||||
|    * Paths of the file that specify the files to cache. | ||||
|    */ | ||||
| @ -32,9 +32,24 @@ const supportedPackageManager: PackageManager[] = [ | ||||
|     path: [join(os.homedir(), '.gradle', 'caches'), join(os.homedir(), '.gradle', 'wrapper')], | ||||
|     // https://github.com/actions/cache/blob/0638051e9af2c23d10bb70fa9beffcad6cff9ce3/examples.md#java---gradle | ||||
|     pattern: ['**/*.gradle*', '**/gradle-wrapper.properties', 'buildSrc/**/*.kt'] | ||||
|   }, | ||||
|   { | ||||
|     id: 'sbt', | ||||
|     path: [ | ||||
|       join(os.homedir(), '.ivy2', 'cache'), | ||||
|       join(os.homedir(), '.sbt'), | ||||
|       getCoursierCachePath() | ||||
|     ], | ||||
|     pattern: ['**/*.sbt', '**/project/build.properties', '**/project/**.{scala,sbt}'] | ||||
|   } | ||||
| ]; | ||||
|  | ||||
| function getCoursierCachePath(): string { | ||||
|   if (os.type() === 'Linux') return join(os.homedir(), '.cache', 'coursier'); | ||||
|   if (os.type() === 'Darwin') return join(os.homedir(), 'Library', 'Caches', 'Coursier'); | ||||
|   return join(os.homedir(), 'AppData', 'Local', 'Coursier', 'Cache'); | ||||
| } | ||||
|  | ||||
| function findPackageManager(id: string): PackageManager { | ||||
|   const packageManager = supportedPackageManager.find(packageManager => packageManager.id === id); | ||||
|   if (packageManager === undefined) { | ||||
| @ -77,8 +92,10 @@ export async function restore(id: string) { | ||||
|   ]); | ||||
|   if (matchedKey) { | ||||
|     core.saveState(CACHE_MATCHED_KEY, matchedKey); | ||||
|     core.setOutput('cache-hit', matchedKey === primaryKey); | ||||
|     core.info(`Cache restored from key: ${matchedKey}`); | ||||
|   } else { | ||||
|     core.setOutput('cache-hit', false); | ||||
|     core.info(`${packageManager.id} cache is not found`); | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| import * as core from '@actions/core'; | ||||
| import * as auth from './auth'; | ||||
| import { getBooleanInput } from './util'; | ||||
| import { getBooleanInput, isCacheFeatureAvailable } from './util'; | ||||
| import * as constants from './constants'; | ||||
| import { restore } from './cache'; | ||||
| import * as path from 'path'; | ||||
| @ -42,7 +42,7 @@ async function run() { | ||||
|     core.info(`##[add-matcher]${path.join(matchersPath, 'java.json')}`); | ||||
|  | ||||
|     await auth.configureAuthentication(); | ||||
|     if (cache) { | ||||
|     if (cache && isCacheFeatureAvailable()) { | ||||
|       await restore(cache); | ||||
|     } | ||||
|   } catch (error) { | ||||
|  | ||||
							
								
								
									
										22
									
								
								src/util.ts
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								src/util.ts
									
									
									
									
									
								
							| @ -2,6 +2,7 @@ import os from 'os'; | ||||
| import path from 'path'; | ||||
| import * as fs from 'fs'; | ||||
| import * as semver from 'semver'; | ||||
| import * as cache from '@actions/cache'; | ||||
| import * as core from '@actions/core'; | ||||
|  | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| @ -77,3 +78,24 @@ export function isJobStatusSuccess() { | ||||
|  | ||||
|   return jobStatus === 'success'; | ||||
| } | ||||
|  | ||||
| export function isGhes(): boolean { | ||||
|   const ghUrl = new URL(process.env['GITHUB_SERVER_URL'] || 'https://github.com'); | ||||
|   return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'; | ||||
| } | ||||
|  | ||||
| export function isCacheFeatureAvailable(): boolean { | ||||
|   if (!cache.isFeatureAvailable()) { | ||||
|     if (isGhes()) { | ||||
|       throw new Error( | ||||
|         'Caching is only supported on GHES version >= 3.5. If you are on a version >= 3.5, please check with your GHES admin if the Actions cache service is enabled or not.' | ||||
|       ); | ||||
|     } else { | ||||
|       core.warning('The runner was not able to contact the cache service. Caching will be skipped'); | ||||
|     } | ||||
|  | ||||
|     return false; | ||||
|   } | ||||
|  | ||||
|   return true; | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Mario Schünadel
					Mario Schünadel