mirror of
https://github.com/actions/setup-java.git
synced 2025-04-01 16:53:40 +08:00
Merge 77c7e7f1ab280841bb87155f8f87670f2f6f73de into 3b6c050358614dd082e53cdbc55580431fc4e437
This commit is contained in:
commit
97d91652eb
7
.github/workflows/e2e-versions.yml
vendored
7
.github/workflows/e2e-versions.yml
vendored
@ -481,14 +481,14 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
setup-java-version-from-file-major-minor-patch-with-dist:
|
setup-java-version-from-file-major-minor-patch-with-dist:
|
||||||
name: ${{ matrix.distribution }} version from file 'openjdk64-17.0.10' - ${{ matrix.os }}
|
name: ${{ matrix.distribution }} version from file '${{ matrix.java-version-file }}' - ${{ 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]
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
||||||
distribution: ['adopt', 'zulu', 'liberica']
|
distribution: ['adopt', 'zulu', 'liberica']
|
||||||
java-version-file: ['.java-version', '.tool-versions']
|
java-version-file: ['.java-version', '.tool-versions', '.sdkmanrc']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@ -498,6 +498,9 @@ jobs:
|
|||||||
- name: Create .tool-versions file
|
- name: Create .tool-versions file
|
||||||
shell: bash
|
shell: bash
|
||||||
run: echo "java openjdk64-17.0.10" > .tool-versions
|
run: echo "java openjdk64-17.0.10" > .tool-versions
|
||||||
|
- name: Create .sdkmanrc file
|
||||||
|
shell: bash
|
||||||
|
run: echo "java=17.0.10-tem" > .sdkmanrc
|
||||||
- name: setup-java
|
- name: setup-java
|
||||||
uses: ./
|
uses: ./
|
||||||
id: setup-java
|
id: setup-java
|
||||||
|
135
__tests__/data/sdkman-java-versions.csv
Normal file
135
__tests__/data/sdkman-java-versions.csv
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
6.0.119-zulu, 6.0.119
|
||||||
|
7.0.352-zulu, 7.0.352
|
||||||
|
8.0.282-trava, 8.0.282
|
||||||
|
8.0.432-albba, 8.0.432
|
||||||
|
8.0.432-amzn, 8.0.432
|
||||||
|
8.0.432-kona, 8.0.432
|
||||||
|
8.0.432-librca, 8.0.432
|
||||||
|
8.0.432-sem, 8.0.432
|
||||||
|
8.0.432-tem, 8.0.432
|
||||||
|
8.0.432-zulu, 8.0.432
|
||||||
|
8.0.432.fx-librca, 8.0.432
|
||||||
|
8.0.432.fx-zulu, 8.0.432
|
||||||
|
8.0.442-amzn, 8.0.442
|
||||||
|
8.0.442-librca, 8.0.442
|
||||||
|
8.0.442-tem, 8.0.442
|
||||||
|
8.0.442-zulu, 8.0.442
|
||||||
|
8.0.442.fx-librca, 8.0.442
|
||||||
|
8.0.442.fx-zulu, 8.0.442
|
||||||
|
11.0.14.1-jbr, 11.0.14
|
||||||
|
11.0.15-trava, 11.0.15
|
||||||
|
11.0.25-albba, 11.0.25
|
||||||
|
11.0.25-amzn, 11.0.25
|
||||||
|
11.0.25-kona, 11.0.25
|
||||||
|
11.0.25-librca, 11.0.25
|
||||||
|
11.0.25-ms, 11.0.25
|
||||||
|
11.0.25-sapmchn, 11.0.25
|
||||||
|
11.0.25-sem, 11.0.25
|
||||||
|
11.0.25-tem, 11.0.25
|
||||||
|
11.0.25-zulu, 11.0.25
|
||||||
|
11.0.25.fx-librca, 11.0.25
|
||||||
|
11.0.25.fx-zulu, 11.0.25
|
||||||
|
11.0.26-amzn, 11.0.26
|
||||||
|
11.0.26-librca, 11.0.26
|
||||||
|
11.0.26-ms, 11.0.26
|
||||||
|
11.0.26-sapmchn, 11.0.26
|
||||||
|
11.0.26-zulu, 11.0.26
|
||||||
|
11.0.26.fx-librca, 11.0.26
|
||||||
|
11.0.26.fx-zulu, 11.0.26
|
||||||
|
17.0.12-graal, 17.0.12
|
||||||
|
17.0.12-jbr, 17.0.12
|
||||||
|
17.0.12-oracle, 17.0.12
|
||||||
|
17.0.13-albba, 17.0.13
|
||||||
|
17.0.13-amzn, 17.0.13
|
||||||
|
17.0.13-kona, 17.0.13
|
||||||
|
17.0.13-librca, 17.0.13
|
||||||
|
17.0.13-ms, 17.0.13
|
||||||
|
17.0.13-sapmchn, 17.0.13
|
||||||
|
17.0.13-sem, 17.0.13
|
||||||
|
17.0.13-tem, 17.0.13
|
||||||
|
17.0.13-zulu, 17.0.13
|
||||||
|
17.0.13.crac-librca, 17.0.13
|
||||||
|
17.0.13.crac-zulu, 17.0.13
|
||||||
|
17.0.13.fx-librca, 17.0.13
|
||||||
|
17.0.13.fx-zulu, 17.0.13
|
||||||
|
17.0.14-amzn, 17.0.14
|
||||||
|
17.0.14-librca, 17.0.14
|
||||||
|
17.0.14-ms, 17.0.14
|
||||||
|
17.0.14-sapmchn, 17.0.14
|
||||||
|
17.0.14-zulu, 17.0.14
|
||||||
|
17.0.14.fx-librca, 17.0.14
|
||||||
|
17.0.14.fx-zulu, 17.0.14
|
||||||
|
17.0.9-graalce, 17.0.9
|
||||||
|
21.0.2-graalce, 21.0.2
|
||||||
|
21.0.2-open, 21.0.2
|
||||||
|
21.0.5-amzn, 21.0.5
|
||||||
|
21.0.5-graal, 21.0.5
|
||||||
|
21.0.5-jbr, 21.0.5
|
||||||
|
21.0.5-kona, 21.0.5
|
||||||
|
21.0.5-librca, 21.0.5
|
||||||
|
21.0.5-ms, 21.0.5
|
||||||
|
21.0.5-oracle, 21.0.5
|
||||||
|
21.0.5-sapmchn, 21.0.5
|
||||||
|
21.0.5-sem, 21.0.5
|
||||||
|
21.0.5-tem, 21.0.5
|
||||||
|
21.0.5-zulu, 21.0.5
|
||||||
|
21.0.5.crac-librca, 21.0.5
|
||||||
|
21.0.5.crac-zulu, 21.0.5
|
||||||
|
21.0.5.fx-librca, 21.0.5
|
||||||
|
21.0.5.fx-zulu, 21.0.5
|
||||||
|
21.0.6-amzn, 21.0.6
|
||||||
|
21.0.6-graal, 21.0.6
|
||||||
|
21.0.6-librca, 21.0.6
|
||||||
|
21.0.6-ms, 21.0.6
|
||||||
|
21.0.6-oracle, 21.0.6
|
||||||
|
21.0.6-sapmchn, 21.0.6
|
||||||
|
21.0.6-tem, 21.0.6
|
||||||
|
21.0.6-zulu, 21.0.6
|
||||||
|
21.0.6.fx-librca, 21.0.6
|
||||||
|
21.0.6.fx-zulu, 21.0.6
|
||||||
|
22.0.2-oracle, 22.0.2
|
||||||
|
22.1.0.1.r11-gln, 22.1.0
|
||||||
|
22.1.0.1.r17-gln, 22.1.0
|
||||||
|
22.3.5.r11-nik, 22.3.5
|
||||||
|
22.3.5.r17-mandrel, 22.3.5
|
||||||
|
22.3.5.r17-nik, 22.3.5
|
||||||
|
23-open, 23
|
||||||
|
23.0.1-amzn, 23.0.1
|
||||||
|
23.0.1-graal, 23.0.1
|
||||||
|
23.0.1-graalce, 23.0.1
|
||||||
|
23.0.1-librca, 23.0.1
|
||||||
|
23.0.1-open, 23.0.1
|
||||||
|
23.0.1-oracle, 23.0.1
|
||||||
|
23.0.1-sapmchn, 23.0.1
|
||||||
|
23.0.1-tem, 23.0.1
|
||||||
|
23.0.1-zulu, 23.0.1
|
||||||
|
23.0.1.crac-zulu, 23.0.1
|
||||||
|
23.0.1.fx-librca, 23.0.1
|
||||||
|
23.0.1.fx-zulu, 23.0.1
|
||||||
|
23.0.2-amzn, 23.0.2
|
||||||
|
23.0.2-graal, 23.0.2
|
||||||
|
23.0.2-graalce, 23.0.2
|
||||||
|
23.0.2-librca, 23.0.2
|
||||||
|
23.0.2-oracle, 23.0.2
|
||||||
|
23.0.2-sapmchn, 23.0.2
|
||||||
|
23.0.2-tem, 23.0.2
|
||||||
|
23.0.2-zulu, 23.0.2
|
||||||
|
23.0.2.fx-librca, 23.0.2
|
||||||
|
23.0.2.fx-zulu, 23.0.2
|
||||||
|
23.0.6.fx-nik, 23.0.6
|
||||||
|
23.0.6.r17-mandrel, 23.0.6
|
||||||
|
23.0.6.r17-nik, 23.0.6
|
||||||
|
23.1.5.fx-nik, 23.1.5
|
||||||
|
23.1.5.r21-mandrel, 23.1.5
|
||||||
|
23.1.5.r21-nik, 23.1.5
|
||||||
|
24.0.2.r22-mandrel, 24.0.2
|
||||||
|
24.ea.27-graal, 24.0.0
|
||||||
|
24.ea.28-graal, 24.0.0
|
||||||
|
24.ea.31-open, 24.0.0
|
||||||
|
24.ea.32-open, 24.0.0
|
||||||
|
24.1.1.r23-mandrel, 24.1.1
|
||||||
|
24.1.1.r23-nik, 24.1.1
|
||||||
|
25.ea.4-graal, 25.0.0
|
||||||
|
25.ea.5-graal, 25.0.0
|
||||||
|
25.ea.5-open, 25.0.0
|
||||||
|
25.ea.6-open, 25.0.0
|
|
@ -1,7 +1,10 @@
|
|||||||
import * as cache from '@actions/cache';
|
import * as cache from '@actions/cache';
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
|
import * as fs from 'fs';
|
||||||
|
import * as path from 'path';
|
||||||
import {
|
import {
|
||||||
convertVersionToSemver,
|
convertVersionToSemver,
|
||||||
|
getVersionFromFileContent,
|
||||||
isVersionSatisfies,
|
isVersionSatisfies,
|
||||||
isCacheFeatureAvailable,
|
isCacheFeatureAvailable,
|
||||||
isGhes
|
isGhes
|
||||||
@ -82,6 +85,43 @@ describe('convertVersionToSemver', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('getVersionFromFileContent', () => {
|
||||||
|
describe('.sdkmanrc', () => {
|
||||||
|
it.each([
|
||||||
|
['java=11.0.20.1-tem', '11.0.20'],
|
||||||
|
['java = 11.0.20.1-tem', '11.0.20'],
|
||||||
|
['java=11.0.20.1-tem # a comment in sdkmanrc', '11.0.20'],
|
||||||
|
['java=11.0.20.1-tem\n#java=21.0.20.1-tem\n', '11.0.20'], // choose first match
|
||||||
|
['java=11.0.20.1-tem\njava=21.0.20.1-tem\n', '11.0.20'], // choose first match
|
||||||
|
['#java=11.0.20.1-tem\njava=21.0.20.1-tem\n', '21.0.20'] // first one is 'commented' in .sdkmanrc
|
||||||
|
])('parsing %s should return %s', (content: string, expected: string) => {
|
||||||
|
const actual = getVersionFromFileContent(content, 'openjdk', '.sdkmanrc');
|
||||||
|
expect(actual).toBe(expected);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('known versions', () => {
|
||||||
|
const csv = fs.readFileSync(
|
||||||
|
path.join(__dirname, 'data/sdkman-java-versions.csv'),
|
||||||
|
'utf8'
|
||||||
|
);
|
||||||
|
const versions = csv.split('\n').map(r => r.split(', '));
|
||||||
|
|
||||||
|
it.each(versions)(
|
||||||
|
'parsing %s should return %s',
|
||||||
|
(sdkmanJavaVersion: string, expected: string) => {
|
||||||
|
const asContent = `java=${sdkmanJavaVersion}`;
|
||||||
|
const actual = getVersionFromFileContent(
|
||||||
|
asContent,
|
||||||
|
'openjdk',
|
||||||
|
'.sdkmanrc'
|
||||||
|
);
|
||||||
|
expect(actual).toBe(expected);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('isGhes', () => {
|
describe('isGhes', () => {
|
||||||
const pristineEnv = process.env;
|
const pristineEnv = process.env;
|
||||||
|
|
||||||
|
3
dist/cleanup/index.js
vendored
3
dist/cleanup/index.js
vendored
@ -94231,6 +94231,9 @@ function getVersionFromFileContent(content, distributionName, versionFile) {
|
|||||||
javaVersionRegExp =
|
javaVersionRegExp =
|
||||||
/^(java\s+)(?:\S*-)?v?(?<version>(\d+)(\.\d+)?(\.\d+)?(\+\d+)?(-ea(\.\d+)?)?)$/m;
|
/^(java\s+)(?:\S*-)?v?(?<version>(\d+)(\.\d+)?(\.\d+)?(\+\d+)?(-ea(\.\d+)?)?)$/m;
|
||||||
}
|
}
|
||||||
|
else if (versionFileName == '.sdkmanrc') {
|
||||||
|
javaVersionRegExp = /^java\s*=\s*(?<version>[^-]+)/m;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
javaVersionRegExp = /(?<version>(?<=(^|\s|-))(\d+\S*))(\s|$)/;
|
javaVersionRegExp = /(?<version>(?<=(^|\s|-))(\d+\S*))(\s|$)/;
|
||||||
}
|
}
|
||||||
|
3
dist/setup/index.js
vendored
3
dist/setup/index.js
vendored
@ -132236,6 +132236,9 @@ function getVersionFromFileContent(content, distributionName, versionFile) {
|
|||||||
javaVersionRegExp =
|
javaVersionRegExp =
|
||||||
/^(java\s+)(?:\S*-)?v?(?<version>(\d+)(\.\d+)?(\.\d+)?(\+\d+)?(-ea(\.\d+)?)?)$/m;
|
/^(java\s+)(?:\S*-)?v?(?<version>(\d+)(\.\d+)?(\.\d+)?(\+\d+)?(-ea(\.\d+)?)?)$/m;
|
||||||
}
|
}
|
||||||
|
else if (versionFileName == '.sdkmanrc') {
|
||||||
|
javaVersionRegExp = /^java\s*=\s*(?<version>[^-]+)/m;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
javaVersionRegExp = /(?<version>(?<=(^|\s|-))(\d+\S*))(\s|$)/;
|
javaVersionRegExp = /(?<version>(?<=(^|\s|-))(\d+\S*))(\s|$)/;
|
||||||
}
|
}
|
||||||
|
@ -601,14 +601,19 @@ steps:
|
|||||||
## Java version file
|
## Java version file
|
||||||
If the `java-version-file` input is specified, the action will extract the version from the file and install it.
|
If the `java-version-file` input is specified, the action will extract the version from the file and install it.
|
||||||
|
|
||||||
Supported files are .java-version and .tool-versions.
|
Supported files are `.java-version`, `.tool-versions` and `.sdkmanrc`.
|
||||||
In .java-version file, only the version should be specified (e.g., 17.0.7).
|
In `.java-version` file, only the version should be specified (e.g., 17.0.7).
|
||||||
In .tool-versions file, java version should be preceded by the java keyword (e.g., java 17.0.7).
|
In `.tool-versions` file, java version should be preceded by the java keyword (e.g., java 17.0.7).
|
||||||
The `.java-version` file recognizes all variants of the version description according to [jenv](https://github.com/jenv/jenv). Similarly, the `.tool-versions` file supports version specifications in accordance with [asdf](https://github.com/asdf-vm/asdf) standards, adhering to Semantic Versioning ([semver](https://semver.org/)).
|
In `.sdkmanrc` file, java version should be preceded by the `java=` prefix (e.g., java=17.0.7-tem) and include the distribution.
|
||||||
|
The `.java-version` file recognizes all variants of the version description according to [jenv](https://github.com/jenv/jenv).
|
||||||
|
Similarly, the `.tool-versions` file supports version specifications in accordance with [asdf](https://github.com/asdf-vm/asdf)
|
||||||
|
standards, adhering to Semantic Versioning ([semver](https://semver.org/)).
|
||||||
|
The `.sdkmanrc` file supports version specifications in accordance with [file format](https://sdkman.io/usage#env-command),
|
||||||
|
see [Sdkman! documentation](https://sdkman.io/jdks) for more information.
|
||||||
|
|
||||||
If both java-version and java-version-file inputs are provided, the java-version input will be used.
|
If both java-version and java-version-file inputs are provided, the java-version input will be used.
|
||||||
|
|
||||||
Valid entry options:
|
Valid entry options (does not apply to `.sdkmanrc`):
|
||||||
```
|
```
|
||||||
major versions: 8, 11, 16, 17, 21
|
major versions: 8, 11, 16, 17, 21
|
||||||
more specific versions: 8.0.282+8, 8.0.232, 11.0, 11.0.4, 17.0
|
more specific versions: 8.0.282+8, 8.0.232, 11.0, 11.0.4, 17.0
|
||||||
|
@ -68,7 +68,7 @@ Pull requests are the easiest way to contribute changes to git repos at GitHub.
|
|||||||
Adding or changing tests is an integral part of making a change to the code.
|
Adding or changing tests is an integral part of making a change to the code.
|
||||||
Unit tests are in the `__tests__` folder, and end-to-end tests are in the `workflows` folder, particularly take a look at the files with `e2e` prefix, for instance, [e2e-cache.yml](https://github.com/actions/setup-java/blob/main/.github/workflows/e2e-cache.yml).
|
Unit tests are in the `__tests__` folder, and end-to-end tests are in the `workflows` folder, particularly take a look at the files with `e2e` prefix, for instance, [e2e-cache.yml](https://github.com/actions/setup-java/blob/main/.github/workflows/e2e-cache.yml).
|
||||||
|
|
||||||
- The contributor can add various types of tests (like unit tests or end-to-end tests), which, in his opinion, will be necessary and sufficient for testing new or changed functionality
|
- The contributor can add various types of tests (like unit tests or end-to-end tests), which, in their opinion, will be necessary and sufficient for testing new or changed functionality
|
||||||
- Tests should cover a successful execution, as well as some edge cases and possible errors
|
- Tests should cover a successful execution, as well as some edge cases and possible errors
|
||||||
- As already mentioned, pull requests without tests will be considered more carefully by maintainers. If you are sure that in this situation the tests are not needed or cannot be implemented with a commensurate effort - please add this clarification message to your pull request
|
- As already mentioned, pull requests without tests will be considered more carefully by maintainers. If you are sure that in this situation the tests are not needed or cannot be implemented with a commensurate effort - please add this clarification message to your pull request
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ Unit tests are in the `__tests__` folder, and end-to-end tests are in the `workf
|
|||||||
|
|
||||||
- CI will start automatically with some checks. Wait until the end of the execution and make sure that all checks passed successfully. If some checks fail, you can open them one by one, try to find the reason for failing and make changes to your code to resolve the problem
|
- CI will start automatically with some checks. Wait until the end of the execution and make sure that all checks passed successfully. If some checks fail, you can open them one by one, try to find the reason for failing and make changes to your code to resolve the problem
|
||||||
- Maintainers will review your pull request
|
- Maintainers will review your pull request
|
||||||
- If a maintainer requests changes, first of all, try to think about his request critically and only after that implement and request another review
|
- If a maintainer requests changes, first of all, try to think about their request critically and only after that implement and request another review
|
||||||
- If your PR gets accepted, it will soon be merged into the main branch. But your contribution will take effect only after the release of a new version of the action and updating the major tag
|
- If your PR gets accepted, it will soon be merged into the main branch. But your contribution will take effect only after the release of a new version of the action and updating the major tag
|
||||||
> Sometimes maintainers reject pull requests and that's ok! Usually, along with rejection, we supply the reason for it. Nonetheless, we still really appreciate you taking the time to do it, and we don't take that lightly :heart:
|
> Sometimes maintainers reject pull requests and that's ok! Usually, along with rejection, we supply the reason for it. Nonetheless, we still really appreciate you taking the time to do it, and we don't take that lightly :heart:
|
||||||
|
|
||||||
|
@ -134,6 +134,8 @@ export function getVersionFromFileContent(
|
|||||||
if (versionFileName == '.tool-versions') {
|
if (versionFileName == '.tool-versions') {
|
||||||
javaVersionRegExp =
|
javaVersionRegExp =
|
||||||
/^(java\s+)(?:\S*-)?v?(?<version>(\d+)(\.\d+)?(\.\d+)?(\+\d+)?(-ea(\.\d+)?)?)$/m;
|
/^(java\s+)(?:\S*-)?v?(?<version>(\d+)(\.\d+)?(\.\d+)?(\+\d+)?(-ea(\.\d+)?)?)$/m;
|
||||||
|
} else if (versionFileName == '.sdkmanrc') {
|
||||||
|
javaVersionRegExp = /^java\s*=\s*(?<version>[^-]+)/m;
|
||||||
} else {
|
} else {
|
||||||
javaVersionRegExp = /(?<version>(?<=(^|\s|-))(\d+\S*))(\s|$)/;
|
javaVersionRegExp = /(?<version>(?<=(^|\s|-))(\d+\S*))(\s|$)/;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user