mirror of
https://github.com/graalvm/setup-graalvm.git
synced 2025-01-19 03:43:02 +08:00
c871f91ee0
This commit adds support for the new GraalVM for JDK17/JDK20 release, including the new Oracle GraalVM distribution. For this, users only need to specify the 'java-version' option and the new 'distribution' option. The 'version' option is now marked as optional and kept for compatibility with older GraalVM releases and Mandrel.
327 lines
11 KiB
YAML
327 lines
11 KiB
YAML
name: 'build-test'
|
|
|
|
on:
|
|
push:
|
|
paths-ignore:
|
|
- '**.md'
|
|
pull_request:
|
|
paths-ignore:
|
|
- '**.md'
|
|
workflow_dispatch:
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
build: # make sure build/ci work properly
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- run: |
|
|
npm install
|
|
- run: |
|
|
npm run all
|
|
test:
|
|
name: GraalVM
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
java-version: ['17', '20', 'dev']
|
|
distribution: ['graalvm', 'graalvm-community']
|
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Run setup-graalvm action
|
|
uses: ./
|
|
with:
|
|
java-version: ${{ matrix.java-version }}
|
|
distribution: ${{ matrix.distribution }}
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Check environment
|
|
run: |
|
|
echo "GRAALVM_HOME: $GRAALVM_HOME"
|
|
if [[ "${{ matrix.java-version }}" == "dev" ]]; then
|
|
[[ "$GRAALVM_HOME" == *"$RUNNER_TEMP"* ]] || exit 12
|
|
else
|
|
[[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 23
|
|
fi
|
|
echo "JAVA_HOME: $JAVA_HOME"
|
|
java --version
|
|
java --version | grep "GraalVM" || exit 34
|
|
native-image --version
|
|
if: runner.os != 'Windows'
|
|
- name: Check Windows environment
|
|
run: |
|
|
echo "GRAALVM_HOME: $env:GRAALVM_HOME"
|
|
echo "JAVA_HOME: $env:JAVA_HOME"
|
|
java --version
|
|
native-image --version
|
|
test-ce: # make sure the action works on a clean machine without building
|
|
needs: test
|
|
name: CE ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
version: ['latest', 'dev']
|
|
java-version: ['17', '20']
|
|
components: ['native-image']
|
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
|
exclude:
|
|
- version: 'latest'
|
|
java-version: '20'
|
|
- version: 'dev'
|
|
java-version: '19'
|
|
include:
|
|
- version: '22.2.0' # for update notifications
|
|
java-version: '17'
|
|
components: 'native-image'
|
|
os: ubuntu-20.04
|
|
- version: '22.3.1'
|
|
java-version: '11' # for JDK11 notification
|
|
components: 'native-image'
|
|
os: macos-11
|
|
- version: '22.3.1'
|
|
java-version: '17'
|
|
components: 'native-image'
|
|
os: windows-2022
|
|
- version: 'dev'
|
|
java-version: 'dev'
|
|
components: 'native-image'
|
|
os: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Run setup-graalvm action
|
|
uses: ./
|
|
with:
|
|
version: ${{ matrix.version }}
|
|
java-version: ${{ matrix.java-version }}
|
|
components: ${{ matrix.components }}
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Check environment
|
|
run: |
|
|
echo "GRAALVM_HOME: $GRAALVM_HOME"
|
|
if [[ "${{ matrix.version }}" == "dev" ]]; then
|
|
[[ "$GRAALVM_HOME" == *"$RUNNER_TEMP"* ]] || exit 12
|
|
else
|
|
[[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 23
|
|
fi
|
|
echo "JAVA_HOME: $JAVA_HOME"
|
|
java --version
|
|
java --version | grep "GraalVM" || exit 34
|
|
native-image --version
|
|
gu list
|
|
if: runner.os != 'Windows'
|
|
- name: Check Windows environment
|
|
run: |
|
|
echo "GRAALVM_HOME: $env:GRAALVM_HOME"
|
|
echo "JAVA_HOME: $env:JAVA_HOME"
|
|
java --version
|
|
native-image --version
|
|
gu.cmd remove native-image
|
|
if: runner.os == 'Windows'
|
|
test-ee:
|
|
needs: test
|
|
name: EE ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }}
|
|
if: github.event_name != 'pull_request'
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
version: ['latest']
|
|
java-version: ['19']
|
|
components: ['native-image']
|
|
os: [macos-latest, windows-latest, ubuntu-latest]
|
|
include:
|
|
- version: '22.3.0'
|
|
java-version: '11'
|
|
components: 'native-image'
|
|
os: ubuntu-latest
|
|
- version: '22.3.0'
|
|
java-version: '17'
|
|
components: 'native-image'
|
|
os: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Run setup-graalvm action
|
|
uses: ./
|
|
with:
|
|
version: ${{ matrix.version }}
|
|
gds-token: ${{ secrets.GDS_TOKEN }}
|
|
java-version: ${{ matrix.java-version }}
|
|
components: ${{ matrix.components }}
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Check environment
|
|
run: |
|
|
echo "GRAALVM_HOME: $GRAALVM_HOME"
|
|
[[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 12
|
|
echo "JAVA_HOME: $JAVA_HOME"
|
|
java --version
|
|
java --version | grep "GraalVM EE" || exit 23
|
|
native-image --version
|
|
gu list
|
|
if: runner.os != 'Windows'
|
|
- name: Check Windows environment
|
|
run: |
|
|
echo "GRAALVM_HOME: $env:GRAALVM_HOME"
|
|
echo "JAVA_HOME: $env:JAVA_HOME"
|
|
java --version
|
|
native-image --version
|
|
gu.cmd remove native-image
|
|
if: runner.os == 'Windows'
|
|
test-mandrel:
|
|
needs: test
|
|
name: ${{ matrix.version }} + JDK${{ matrix.java-version }} on ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
version: ['mandrel-22.2.0.0-Final', 'mandrel-latest']
|
|
java-version: ['17']
|
|
os: [windows-latest, ubuntu-latest]
|
|
exclude: # temporarily disable Mandrel latest builds on Windows due to unavailability
|
|
- version: 'mandrel-latest'
|
|
java-version: '17'
|
|
os: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Run setup-graalvm action
|
|
uses: ./
|
|
with:
|
|
version: ${{ matrix.version }}
|
|
java-version: ${{ matrix.java-version }}
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Check environment
|
|
run: |
|
|
echo "GRAALVM_HOME: $GRAALVM_HOME"
|
|
[[ "$GRAALVM_HOME" == *"$RUNNER_TOOL_CACHE"* ]] || exit 12
|
|
echo "JAVA_HOME: $JAVA_HOME"
|
|
java --version
|
|
native-image --version
|
|
if: runner.os != 'Windows'
|
|
- name: Check Windows environment
|
|
run: |
|
|
echo "GRAALVM_HOME: $env:GRAALVM_HOME"
|
|
echo "JAVA_HOME: $env:JAVA_HOME"
|
|
java --version
|
|
native-image --version
|
|
if: runner.os == 'Windows'
|
|
test-native-image-windows:
|
|
name: native-image on windows-latest
|
|
runs-on: windows-latest
|
|
permissions:
|
|
contents: read
|
|
pull-requests: write # for `native-image-pr-reports` option
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Run setup-graalvm action
|
|
uses: ./
|
|
with:
|
|
java-version: 'dev'
|
|
distribution: 'graalvm-community'
|
|
native-image-job-reports: 'true'
|
|
native-image-pr-reports: 'true'
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Build HelloWorld executable with GraalVM Native Image on Windows
|
|
run: |
|
|
echo 'public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }' > HelloWorld.java
|
|
javac HelloWorld.java
|
|
native-image HelloWorld
|
|
./helloworld
|
|
test-native-image-windows-msvc:
|
|
name: native-image on windows-2022
|
|
runs-on: windows-2022
|
|
permissions:
|
|
contents: read
|
|
pull-requests: write # for `native-image-pr-reports` option
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Run setup-graalvm action
|
|
uses: ./
|
|
with:
|
|
java-version: '17'
|
|
distribution: 'graalvm'
|
|
native-image-job-reports: 'true'
|
|
native-image-pr-reports: 'true'
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Build HelloWorld executable with GraalVM Native Image on Windows
|
|
run: |
|
|
echo 'public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }' > HelloWorld.java
|
|
javac HelloWorld.java
|
|
native-image HelloWorld
|
|
./helloworld
|
|
test-native-image-musl:
|
|
name: native-image-musl on ubuntu-latest
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
pull-requests: write # for `native-image-pr-reports` option
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Run setup-graalvm action
|
|
uses: ./
|
|
with:
|
|
java-version: 'dev'
|
|
distribution: 'graalvm-community'
|
|
native-image-musl: 'true'
|
|
native-image-job-reports: 'true'
|
|
native-image-pr-reports: 'true'
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Build static HelloWorld executable with GraalVM Native Image and musl
|
|
run: |
|
|
echo 'public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }' > HelloWorld.java
|
|
javac HelloWorld.java
|
|
native-image --static --libc=musl HelloWorld
|
|
./helloworld
|
|
test-extensive:
|
|
name: extensive tests on ubuntu-latest
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
pull-requests: write # for `native-image-pr-reports` option
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Run setup-graalvm action
|
|
uses: ./
|
|
with:
|
|
java-version: '17'
|
|
distribution: 'graalvm'
|
|
components: 'espresso,llvm-toolchain,native-image,nodejs,python,ruby,wasm'
|
|
set-java-home: 'false'
|
|
native-image-job-reports: 'true'
|
|
native-image-pr-reports: 'true'
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
- name: Check environment
|
|
run: |
|
|
echo "GRAALVM_HOME: $GRAALVM_HOME"
|
|
echo "JAVA_HOME: $JAVA_HOME"
|
|
[[ "$GRAALVM_HOME" != "$JAVA_HOME" ]] || exit 12
|
|
[[ $(which java) == *"graalvm"* ]] || exit 23
|
|
java --version
|
|
java -truffle --version
|
|
gu --version
|
|
gu list
|
|
[[ $(which lli) == *"graalvm"* ]] || exit 34
|
|
lli --version
|
|
native-image --version
|
|
[[ $(which node) == *"graalvm"* ]] || exit 45
|
|
node --version
|
|
graalpy --version
|
|
truffleruby --version
|
|
wasm --version
|
|
- name: Build HelloWorld.java with GraalVM Native Image
|
|
run: |
|
|
echo 'public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }' > HelloWorld.java
|
|
javac HelloWorld.java
|
|
native-image -g HelloWorld
|
|
./helloworld
|
|
- name: Build Ruby-FFI with TruffleRuby
|
|
run: |
|
|
[[ $(which bundle) == *"graalvm"* ]] || exit 57
|
|
git clone --depth 1 https://github.com/ffi/ffi.git
|
|
pushd ffi > /dev/null
|
|
# https://github.com/ffi/ffi/blob/447845cb3030194c79700c86fb388a12e6f81386/.github/workflows/ci.yml#L58-L62
|
|
bundle install
|
|
bundle exec rake libffi
|
|
bundle exec rake compile
|
|
bundle exec rake test
|
|
popd > /dev/null
|
|
- name: Remove components
|
|
run: gu remove espresso llvm-toolchain nodejs python ruby wasm
|