Skip to content

Merge pull request #34 from zakkak/2024-12-17-backport-10320 #86

Merge pull request #34 from zakkak/2024-12-17-backport-10320

Merge pull request #34 from zakkak/2024-12-17-backport-10320 #86

Workflow file for this run

name: GraalVM Gate
on:
push:
branches:
- 'master'
- 'release/**'
paths-ignore:
- '.devcontainer/**'
- '.github/workflows/quarkus.yml'
- '**.md'
- '**.jsonnet'
- '**.libjsonnet'
pull_request:
paths-ignore:
- '.devcontainer/**'
- '.github/workflows/quarkus.yml'
- '**.md'
- '**.jsonnet'
- '**.libjsonnet'
# 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:
JAVA_HOME: ${{ github.workspace }}/jdk
JDT: builtin
LANG: en_US.UTF-8
MX_GIT_CACHE: refcache
MX_PATH: ${{ github.workspace }}/mx
MX_PYTHON: python3.8
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
build-graalvm:
name: /${{ matrix.env.PRIMARY }} ${{ matrix.env.GATE_TAGS }} JDK${{ matrix.env.JDK_VERSION }}
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
include:
# /compiler
- env:
JDK_VERSION: "21"
GATE_TAGS: "style,fullbuild,test"
PRIMARY: "compiler"
- env:
JDK_VERSION: "21"
GATE_TAGS: "build,bootstraplite"
PRIMARY: "compiler"
# /espresso
- env:
JDK_VERSION: "21"
GATE_TAGS: "style,fullbuild"
PRIMARY: "espresso"
# /substratevm
- env:
JDK_VERSION: "21"
GATE_TAGS: "style,fullbuild"
PRIMARY: "substratevm"
- env:
JDK_VERSION: "21"
GATE_TAGS: "build,helloworld,native_unittests"
PRIMARY: "substratevm"
PIP_PACKAGES: "jsonschema==4.6.1"
- env:
JDK_VERSION: "21"
GATE_TAGS: "build,debuginfotest"
PRIMARY: "substratevm"
- env:
JDK_VERSION: "21"
GATE_TAGS: "hellomodule"
PRIMARY: "substratevm"
# /sulong
- env:
JDK_VERSION: "21"
GATE_TAGS: "style,fullbuild,sulongBasic"
PRIMARY: "sulong"
# /truffle
- env:
JDK_VERSION: "21"
GATE_TAGS: "" # Truffle does not use tags
PRIMARY: "truffle"
# /vm
- env:
JDK_VERSION: "21"
GATE_TAGS: "build,sulong"
GATE_OPTS: "--no-warning-as-error"
PRIMARY: "vm"
DYNAMIC_IMPORTS: "/sulong,/substratevm"
NATIVE_IMAGES: "graalvm-native-binutil,graalvm-native-clang,graalvm-native-clang-cl,graalvm-native-clang++,graalvm-native-ld,lib:llvmvm"
DISABLE_POLYGLOT: true
DISABLE_LIBPOLYGLOT: true
- env:
JDK_VERSION: "21"
GATE_TAGS: "build"
GATE_OPTS: "--no-warning-as-error"
PRIMARY: "vm"
DYNAMIC_IMPORTS: "/tools,/substratevm,/sulong"
NATIVE_IMAGES: "lib:jvmcicompiler,native-image,lib:native-image-agent,lib:native-image-diagnostics-agent,polyglot"
WITHOUT_VCS: true
env:
MX_RUNS_DEBUG: ${{ contains(matrix.env.GATE_TAGS, 'debug') || matrix.env.GATE_TAGS == '' }}
MX_RUNS_STYLE: ${{ contains(matrix.env.GATE_TAGS, 'style') || matrix.env.GATE_TAGS == '' }}
steps:
- name: Checkout oracle/graal
uses: actions/checkout@v4
with:
ref: ${{ github.ref }} # Lock ref to current branch to avoid fetching others
fetch-depth: "${{ env.MX_RUNS_STYLE && '0' || '1' }}" # The style gate needs the full commit history for checking copyright years
- name: Determine mx version
run: echo "MX_VERSION=$(jq -r '.mx_version' common.json)" >> ${GITHUB_ENV}
- name: Checkout graalvm/mx
uses: actions/checkout@v4
with:
repository: graalvm/mx.git
ref: ${{ env.MX_VERSION }}
fetch-depth: 1
path: ${{ env.MX_PATH }}
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.8'
- name: Update mx cache
uses: actions/cache@v4
with:
path: ~/.mx
key: ${{ runner.os }}-mx-${{ hashFiles('**/suite.py') }}
restore-keys: ${{ runner.os }}-mx-
- name: Get OpenJDK with static libs
env: ${{ matrix.env }}
run: |
curl -sL https://api.adoptium.net/v3/binary/latest/${JDK_VERSION}/ea/linux/x64/jdk/hotspot/normal/eclipse -o jdk.tar.gz
curl -sL https://api.adoptium.net/v3/binary/latest/${JDK_VERSION}/ea/linux/x64/staticlibs/hotspot/normal/eclipse -o jdk-static-libs.tar.gz
mkdir -p ${JAVA_HOME}
tar xf jdk.tar.gz -C ${JAVA_HOME} --strip-components=1
tar xf jdk-static-libs.tar.gz -C ${JAVA_HOME} --strip-components=1
echo ${JAVA_HOME}
${JAVA_HOME}/bin/java --version
- name: Update dependency cache
if: ${{ env.MX_RUNS_DEBUG == 'true' || env.MX_RUNS_STYLE == 'true' }}
run: sudo apt update
- name: Install debug dependencies
if: ${{ env.MX_RUNS_DEBUG == 'true' }}
run: sudo apt install gdb
- name: Install style dependencies
if: ${{ env.MX_RUNS_STYLE == 'true' }}
run: |
sudo apt install python3-pip python-setuptools
sudo pip install ninja_syntax$(jq -r '.pip.ninja_syntax' common.json)
sudo pip install lazy-object-proxy$(jq -r '.pip["lazy-object-proxy"]' common.json)
sudo pip install pylint$(jq -r '.pip.pylint' common.json)
- name: Install additional pip packages
if: ${{ matrix.env.PIP_PACKAGES != '' }}
run: ${MX_PYTHON} -m pip install ${{ matrix.env.PIP_PACKAGES }}
- name: Download Eclipse
if: ${{ env.MX_RUNS_STYLE == 'true' }}
run: |
ECLIPSE_TAR=eclipse.tar.gz
ECLIPSE_ORG_VERSION=$(jq -r '.eclipse.short_version' common.json)
ECLIPSE_ORG_TIMESTAMP=$(jq -r '.eclipse.timestamp' common.json)
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}
echo "ECLIPSE_EXE=${PWD}/eclipse/eclipse" >> $GITHUB_ENV
- name: Remove .git directory
if: ${{ matrix.env.WITHOUT_VCS }}
run: rm -rf .git
- name: Build GraalVM and run gate with tags
env: ${{ matrix.env }}
run: ${MX_PATH}/mx --primary-suite-path ${PRIMARY} --java-home=${JAVA_HOME} gate --strict-mode ${{ matrix.env.GATE_OPTS }} --tags ${GATE_TAGS}
if: ${{ matrix.env.GATE_TAGS != '' }}
- name: Build GraalVM and run gate without tags
env: ${{ matrix.env }}
run: ${MX_PATH}/mx --primary-suite-path ${PRIMARY} --java-home=${JAVA_HOME} gate --strict-mode ${{ matrix.env.GATE_OPTS }}
if: ${{ matrix.env.GATE_TAGS == '' }}