Skip to content

GraalVM Gate

GraalVM Gate #3

Workflow file for this run

name: GraalVM Gate
on:
push:
branches-ignore:
- 'github/**'
paths-ignore:
- '.devcontainer/**'
- '.github/workflows/quarkus.yml'
- '**.md'
pull_request:
paths-ignore:
- '.devcontainer/**'
- '.github/workflows/quarkus.yml'
- '**.md'
# Enable manual dispatch of the workflow
# see https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow
workflow_dispatch:
# The following aims to reduce CI CPU cycles by:
# 1. Cancelling any previous builds of this PR when pushing new changes to it
# 2. Cancelling any previous builds of a branch when pushing new changes to it in a fork
# 3. Cancelling any pending builds, but not active ones, when pushing to a branch in the main
# repository. This prevents us from constantly cancelling CI runs, while being able to skip
# intermediate builds. E.g., if we perform two pushes the first one will start a CI job and
# the second one will add another one to the queue; if we perform a third push while the
# first CI job is still running the previously queued CI job (for the second push) will be
# cancelled and a new CI job will be queued for the latest (third) push.
concurrency:
group: "workflow = ${{ github.workflow }}, ref = ${{ github.event.ref }}, pr = ${{ github.event.pull_request.id }}"
cancel-in-progress: ${{ github.event_name == 'pull_request' || github.repository != 'oracle/graal' }}
env:
LANG: en_US.UTF-8
MX_GIT_CACHE: refcache
MX_PYTHON: python3.8
JAVA_HOME: ${{ github.workspace }}/jdk
JDT: builtin
MX_PATH: ${{ github.workspace }}/mx
jobs:
build-graalvm:
name: ${{ matrix.env.JDK }} ${{ matrix.env.GATE }} ${{ matrix.env.PRIMARY }} ${{ matrix.env.WITHOUT_VCS }}
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
include:
- env:
JDK: "labsjdk-ce-17"
GATE: "style,fullbuild"
PRIMARY: "substratevm"
- env:
JDK: "labsjdk-ce-17"
GATE: "build,test"
PRIMARY: "compiler"
- env:
JDK: "labsjdk-ce-17"
GATE: "build,test,helloworld"
PRIMARY: "substratevm"
- env:
JDK: "labsjdk-ce-17"
GATE: "build,test,helloworld_debug"
PRIMARY: "substratevm"
- env:
JDK: "labsjdk-ce-17"
GATE: "build,bootstraplite"
PRIMARY: "compiler"
- env:
JDK: "labsjdk-ce-17"
GATE: "style,fullbuild,sulongBasic"
PRIMARY: "sulong"
- env:
JDK: "labsjdk-ce-17"
GATE: "build,sulong"
PRIMARY: "vm"
DYNAMIC_IMPORTS: "/sulong,/substratevm"
DISABLE_POLYGLOT: true
DISABLE_LIBPOLYGLOT: true
- env:
JDK: "labsjdk-ce-17"
GATE: "build,debuginfotest"
PRIMARY: "substratevm"
- env:
JDK: "labsjdk-ce-11"
GATE: "build,debuginfotest"
PRIMARY: "substratevm"
- env:
JDK: "labsjdk-ce-11"
GATE: "hellomodule"
PRIMARY: "substratevm"
- env:
JDK: "labsjdk-ce-11"
GATE: "style,fullbuild"
PRIMARY: "compiler"
- env:
JDK: "labsjdk-ce-11"
GATE: "build,test"
PRIMARY: "compiler"
- env:
JDK: "labsjdk-ce-11"
GATE: "build,bootstraplite"
PRIMARY: "compiler"
- env:
JDK: "labsjdk-ce-11"
GATE: "build"
PRIMARY: "vm"
DYNAMIC_IMPORTS: "/tools,/substratevm,/sulong"
NATIVE_IMAGES: "polyglot"
WITHOUT_VCS: true
- env:
JDK: "labsjdk-ce-17"
GATE: "style,fullbuild"
PRIMARY: "espresso"
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 1
- uses: actions/checkout@v2
with:
repository: graalvm/mx.git
fetch-depth: 1
ref: master
path: ${{ env.MX_PATH }}
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.8'
- uses: actions/cache@v1
with:
path: ~/.mx
key: ${{ runner.os }}-mx-${{ hashFiles('**/suite.py') }}
restore-keys: ${{ runner.os }}-mx-
- name: Get JDK
env: ${{ matrix.env }}
run: |
mkdir jdk-dl
${MX_PATH}/mx --java-home= fetch-jdk --jdk-id ${JDK} --to jdk-dl --alias ${JAVA_HOME}
- name: Update dependency cache
if: ${{ contains(matrix.env.GATE, 'debug') || contains(matrix.env.GATE, 'style') }}
run: sudo apt update
- name: Debug dependencies
if: ${{ contains(matrix.env.GATE, 'debug') }}
run: sudo apt install gdb
- name: Style dependencies
if: ${{ contains(matrix.env.GATE, 'style') }}
run: |
sudo apt install python3-pip python-setuptools
cat common.json |
jq -r '.deps.common.packages | to_entries[] | select(.key | startswith("pip:")) | (.key | split(":")[1]) + .value' |
xargs sudo pip install
${MX_PYTHON} -m pip install jsonschema==4.6.1
- name: Build GraalVM and run gate
env: ${{ matrix.env }}
run: |
if [[ ${GATE} == *style* ]]
then
export ECLIPSE_TAR=eclipse.tar.gz
ECLIPSE_ORG_VERSION=$(cat common.json | jq -r '.downloads.eclipse.eclipse_org.version')
ECLIPSE_ORG_TIMESTAMP=$(cat common.json | jq -r '.downloads.eclipse.eclipse_org.timestamp')
wget --no-verbose https://archive.eclipse.org/eclipse/downloads/drops4/R-${ECLIPSE_ORG_VERSION}-${ECLIPSE_ORG_TIMESTAMP}/eclipse-SDK-${ECLIPSE_ORG_VERSION}-linux-gtk-x86_64.tar.gz -O $ECLIPSE_TAR
tar -xzf ${ECLIPSE_TAR}
export ECLIPSE_EXE=${PWD}/eclipse/eclipse
# the style gate needs the full commit history for checking copyright years
git fetch --unshallow
fi
echo ${JAVA_HOME}
${JAVA_HOME}/bin/java -version
if [[ ${WITHOUT_VCS} ]]
then
rm -rf .git
fi
exit_code=0
${MX_PATH}/mx --primary-suite-path ${PRIMARY} --J @"-Xmx2g" --java-home=${JAVA_HOME} gate --strict-mode --tags ${GATE} || exit_code=$?
if [[ -n "${GHA_EXPECTED_FAILURE}" ]]
then
if [[ ${exit_code} -eq 0 ]]
then
echo "Gate passed but was marked as expected failure."
exit 25
fi
else
exit ${exit_code}
fi