Skip to content

Commit 7c88894

Browse files
maxim-lobanovgdamskonradpabjan
authored
actions/setup-java@v2 - Support different distributions (#132)
* Implement support for custom vendors in setup-java * minor improvements * minor refactoring * Add unit tests and e2e tests * Update documentation for setup-java@v2 release * minor improvements * regenerate dist * fix comments * resolve comments * resolve comments * fix tests * Update README.md Co-authored-by: George Adams <george.adams@microsoft.com> * Apply suggestions from code review Co-authored-by: Konrad Pabjan <konradpabjan@github.com> * fix minor nitpicks * handle 4th digit * pull latest main * Update README.md * rename adoptium to adopt * rename adoptium to adopt * rename adoptium to adopt * Update README.md * make java-version and distribution required for action * update readme * fix tests * fix e2e tests Co-authored-by: George Adams <george.adams@microsoft.com> Co-authored-by: Konrad Pabjan <konradpabjan@github.com>
1 parent e73e96a commit 7c88894

44 files changed

Lines changed: 47715 additions & 29577 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/build.yml‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Build Action
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- releases/*
8+
- v2-preview
9+
paths-ignore:
10+
- '**.md'
11+
pull_request:
12+
paths-ignore:
13+
- '**.md'
14+
15+
jobs:
16+
build:
17+
runs-on: ${{ matrix.os }}
18+
strategy:
19+
fail-fast: false
20+
matrix:
21+
os: [ubuntu-latest, windows-latest, macos-latest]
22+
steps:
23+
- uses: actions/checkout@v2
24+
- name: Setup Node.JS 12
25+
uses: actions/setup-node@v2
26+
with:
27+
node-version: 12.x
28+
- run: npm ci
29+
- run: npm run build
30+
- run: npm run format-check
31+
- run: npm test
32+
- name: Verify no unstaged changes
33+
if: runner.os != 'windows'
34+
run: bash __tests__/verify-no-unstaged-changes.sh
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
name: Validate local file
2+
on:
3+
push:
4+
branches:
5+
- main
6+
- releases/*
7+
- v2-preview
8+
paths-ignore:
9+
- '**.md'
10+
pull_request:
11+
paths-ignore:
12+
- '**.md'
13+
14+
jobs:
15+
setup-java-local-file-adopt:
16+
name: Validate installation from local file Adopt
17+
runs-on: ${{ matrix.os }}
18+
strategy:
19+
fail-fast: false
20+
matrix:
21+
os: [macos-latest, windows-latest, ubuntu-latest]
22+
steps:
23+
- name: Checkout
24+
uses: actions/checkout@v2
25+
- name: Download Adopt OpenJDK file
26+
run: |
27+
if ($IsLinux) {
28+
$downloadUrl = "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.10%2B9/OpenJDK11U-jdk_x64_linux_hotspot_11.0.10_9.tar.gz"
29+
$localFilename = "java_package.tar.gz"
30+
} elseif ($IsMacOS) {
31+
$downloadUrl = "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.10%2B9/OpenJDK11U-jdk_x64_mac_hotspot_11.0.10_9.tar.gz"
32+
$localFilename = "java_package.tar.gz"
33+
} elseif ($IsWindows) {
34+
$downloadUrl = "https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.10%2B9/OpenJDK11U-jdk_x64_windows_hotspot_11.0.10_9.zip"
35+
$localFilename = "java_package.zip"
36+
}
37+
echo "LocalFilename=$localFilename" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
38+
(New-Object System.Net.WebClient).DownloadFile($downloadUrl, "$env:RUNNER_TEMP/$localFilename")
39+
shell: pwsh
40+
- name: setup-java
41+
uses: ./
42+
id: setup-java
43+
with:
44+
distribution: 'jdkfile'
45+
jdkFile: ${{ runner.temp }}/${{ env.LocalFilename }}
46+
java-version: '11.0.0-ea'
47+
architecture: x64
48+
- name: Verify Java version
49+
run: bash __tests__/verify-java.sh "11.0.10" "${{ steps.setup-java.outputs.path }}"
50+
shell: bash
51+
52+
setup-java-local-file-zulu:
53+
name: Validate installation from local file Zulu
54+
runs-on: ${{ matrix.os }}
55+
strategy:
56+
fail-fast: false
57+
matrix:
58+
os: [macos-latest, windows-latest, ubuntu-latest]
59+
steps:
60+
- name: Checkout
61+
uses: actions/checkout@v2
62+
- name: Download Zulu OpenJDK file
63+
run: |
64+
if ($IsLinux) {
65+
$downloadUrl = "https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-linux_x64.tar.gz"
66+
$localFilename = "java_package.tar.gz"
67+
} elseif ($IsMacOS) {
68+
$downloadUrl = "https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-macosx_x64.tar.gz"
69+
$localFilename = "java_package.tar.gz"
70+
} elseif ($IsWindows) {
71+
$downloadUrl = "https://cdn.azul.com/zulu/bin/zulu11.45.27-ca-jdk11.0.10-win_x64.zip"
72+
$localFilename = "java_package.zip"
73+
}
74+
echo "LocalFilename=$localFilename" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
75+
(New-Object System.Net.WebClient).DownloadFile($downloadUrl, "$env:RUNNER_TEMP/$localFilename")
76+
shell: pwsh
77+
- name: setup-java
78+
uses: ./
79+
id: setup-java
80+
with:
81+
distribution: 'jdkfile'
82+
jdkFile: ${{ runner.temp }}/${{ env.LocalFilename }}
83+
java-version: '11.0.0-ea'
84+
architecture: x64
85+
- name: Verify Java version
86+
run: bash __tests__/verify-java.sh "11.0" "${{ steps.setup-java.outputs.path }}"
87+
shell: bash
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
name: Validate publishing functionality
2+
on:
3+
push:
4+
branches:
5+
- main
6+
- releases/*
7+
- v2-preview
8+
paths-ignore:
9+
- '**.md'
10+
pull_request:
11+
paths-ignore:
12+
- '**.md'
13+
14+
jobs:
15+
setup-java-publishing:
16+
name: Validate settings.xml
17+
runs-on: ${{ matrix.os }}
18+
strategy:
19+
fail-fast: false
20+
matrix:
21+
os: [macos-latest, windows-latest, ubuntu-latest]
22+
steps:
23+
- name: Checkout
24+
uses: actions/checkout@v2
25+
- name: setup-java
26+
uses: ./
27+
id: setup-java
28+
with:
29+
distribution: 'adopt'
30+
java-version: '11'
31+
server-id: maven
32+
server-username: MAVEN_USERNAME
33+
server-password: MAVEN_CENTRAL_TOKEN
34+
gpg-passphrase: MAVEN_GPG_PASSPHRASE
35+
- name: Validate settings.xml
36+
run: |
37+
$homePath = $env:USERPROFILE
38+
if (-not $homePath) {
39+
$homePath = $env:HOME
40+
}
41+
$xmlPath = Join-Path $homePath ".m2" "settings.xml"
42+
43+
Get-Content $xmlPath | ForEach-Object { Write-Host $_ }
44+
45+
[xml]$xml = Get-Content $xmlPath
46+
$servers = $xml.settings.servers.server
47+
if (($servers[0].id -ne 'maven') -or ($servers[0].username -ne '${env.MAVEN_USERNAME}') -or ($servers[0].password -ne '${env.MAVEN_CENTRAL_TOKEN}')) {
48+
throw "Generated XML file is incorrect"
49+
}
50+
51+
if (($servers[1].id -ne 'gpg.passphrase') -or ($servers[1].passphrase -ne '${env.MAVEN_GPG_PASSPHRASE}')) {
52+
throw "Generated XML file is incorrect"
53+
}
54+
shell: pwsh
55+
56+
test-publishing-custom-location:
57+
name: Validate settings.xml in custom location
58+
runs-on: ${{ matrix.os }}
59+
strategy:
60+
fail-fast: false
61+
matrix:
62+
os: [macos-latest, windows-latest, ubuntu-latest]
63+
steps:
64+
- name: Checkout
65+
uses: actions/checkout@v2
66+
- name: setup-java
67+
uses: ./
68+
id: setup-java
69+
with:
70+
distribution: 'adopt'
71+
java-version: '11'
72+
server-id: maven
73+
server-username: MAVEN_USERNAME
74+
server-password: MAVEN_CENTRAL_TOKEN
75+
gpg-passphrase: MAVEN_GPG_PASSPHRASE
76+
settings-path: ${{ runner.temp }}
77+
- name: Validate settings.xml location
78+
run: |
79+
$path = Join-Path $env:RUNNER_TEMP "settings.xml"
80+
if (-not (Test-Path $path)) {
81+
throw "settings.xml file is not found in expected location"
82+
}
83+
shell: pwsh

‎.github/workflows/e2e-versions.yml‎

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
name: Validate Java e2e
2+
on:
3+
push:
4+
branches:
5+
- main
6+
- releases/*
7+
- v2-preview
8+
paths-ignore:
9+
- '**.md'
10+
pull_request:
11+
paths-ignore:
12+
- '**.md'
13+
14+
jobs:
15+
setup-java-major-versions:
16+
name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }}
17+
runs-on: ${{ matrix.os }}
18+
strategy:
19+
fail-fast: false
20+
matrix:
21+
os: [macos-latest, windows-latest, ubuntu-latest]
22+
distribution: ['adopt', 'zulu']
23+
version: ['8', '11', '15']
24+
steps:
25+
- name: Checkout
26+
uses: actions/checkout@v2
27+
- name: setup-java
28+
uses: ./
29+
id: setup-java
30+
with:
31+
java-version: ${{ matrix.version }}
32+
distribution: ${{ matrix.distribution }}
33+
- name: Verify Java
34+
run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}"
35+
shell: bash
36+
37+
setup-java-major-minor-versions:
38+
name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }}
39+
needs: setup-java-major-versions
40+
runs-on: ${{ matrix.os }}
41+
strategy:
42+
fail-fast: false
43+
matrix:
44+
os: [macos-latest, windows-latest, ubuntu-latest]
45+
distribution: ['adopt', 'zulu']
46+
version:
47+
- '11.0'
48+
- '8.0.282'
49+
- '11.0.2+7'
50+
include:
51+
- distribution: 'adopt'
52+
version: '12.0.2+10.1'
53+
os: macos-latest
54+
- distribution: 'adopt'
55+
version: '12.0.2+10.1'
56+
os: windows-latest
57+
- distribution: 'adopt'
58+
version: '12.0.2+10.1'
59+
os: ubuntu-latest
60+
steps:
61+
- name: Checkout
62+
uses: actions/checkout@v2
63+
- name: setup-java
64+
uses: ./
65+
id: setup-java
66+
with:
67+
java-version: ${{ matrix.version }}
68+
distribution: ${{ matrix.distribution }}
69+
- name: Verify Java
70+
run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}"
71+
shell: bash
72+
73+
setup-java-ea-versions-zulu:
74+
name: zulu ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }}
75+
needs: setup-java-major-minor-versions
76+
runs-on: ${{ matrix.os }}
77+
strategy:
78+
fail-fast: false
79+
matrix:
80+
os: [macos-latest, windows-latest, ubuntu-latest]
81+
version: ['17-ea', '15.0.0-ea.14']
82+
steps:
83+
- name: Checkout
84+
uses: actions/checkout@v2
85+
- name: setup-java
86+
uses: ./
87+
id: setup-java
88+
with:
89+
java-version: ${{ matrix.version }}
90+
distribution: zulu
91+
92+
setup-java-ea-versions-adopt:
93+
name: adopt ${{ matrix.version }} (jdk-x64) - ${{ matrix.os }}
94+
needs: setup-java-major-minor-versions
95+
runs-on: ${{ matrix.os }}
96+
strategy:
97+
fail-fast: false
98+
matrix:
99+
os: [macos-latest, windows-latest, ubuntu-latest]
100+
version: ['17-ea', '15.0.0-ea.14.1.202003160455']
101+
steps:
102+
- name: Checkout
103+
uses: actions/checkout@v2
104+
- name: setup-java
105+
uses: ./
106+
id: setup-java
107+
with:
108+
java-version: ${{ matrix.version }}
109+
distribution: adopt
110+
111+
setup-java-custom-package-type:
112+
name: ${{ matrix.distribution }} ${{ matrix.version }} (${{ matrix.java-package }}-x64) - ${{ matrix.os }}
113+
needs: setup-java-major-minor-versions
114+
runs-on: ${{ matrix.os }}
115+
strategy:
116+
fail-fast: false
117+
matrix:
118+
os: [macos-latest, windows-latest, ubuntu-latest]
119+
distribution: ['adopt', 'zulu']
120+
java-package: ['jre']
121+
version:
122+
- '15.0'
123+
include:
124+
- distribution: 'zulu'
125+
java-package: jre+fx
126+
version: '8'
127+
os: ubuntu-latest
128+
- distribution: 'zulu'
129+
java-package: jdk+fx
130+
version: '8.0.242'
131+
os: ubuntu-latest
132+
steps:
133+
- name: Checkout
134+
uses: actions/checkout@v2
135+
- name: setup-java
136+
uses: ./
137+
id: setup-java
138+
with:
139+
java-version: ${{ matrix.version }}
140+
java-package: ${{ matrix.java-package }}
141+
distribution: ${{ matrix.distribution }}
142+
- name: Verify Java
143+
run: bash __tests__/verify-java.sh "${{ matrix.version }}" "${{ steps.setup-java.outputs.path }}"
144+
shell: bash
145+
146+
setup-java-custom-architecture:
147+
name: ${{ matrix.distribution }} ${{ matrix.version }} (jdk-x86) - ${{ matrix.os }}
148+
needs: setup-java-major-minor-versions
149+
runs-on: ${{ matrix.os }}
150+
strategy:
151+
fail-fast: false
152+
matrix:
153+
# Only Zulu provides x86 arch for now and only for windows / ubuntu
154+
os: [windows-latest, ubuntu-latest]
155+
distribution: ['zulu']
156+
version: ['11']
157+
steps:
158+
- name: Checkout
159+
uses: actions/checkout@v2
160+
- name: setup-java
161+
uses: ./
162+
id: setup-java
163+
with:
164+
distribution: ${{ matrix.distribution }}
165+
java-version: ${{ matrix.version }}
166+
architecture: x86

0 commit comments

Comments
 (0)