From fe812b3448727a4ae33b94bd4a7eb3a4f93f591f Mon Sep 17 00:00:00 2001 From: Fabio Niephaus Date: Sat, 16 Mar 2024 14:59:00 +0100 Subject: [PATCH 1/3] Add weekly workflow for reachability metadata. --- .github/actions/build-graalvm/action.yml | 12 +- .github/workflows/reachability-metadata.yml | 143 ++++++++++++++++++++ 2 files changed, 153 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/reachability-metadata.yml diff --git a/.github/actions/build-graalvm/action.yml b/.github/actions/build-graalvm/action.yml index 20513d4db79e..29f231f7cbb7 100644 --- a/.github/actions/build-graalvm/action.yml +++ b/.github/actions/build-graalvm/action.yml @@ -2,6 +2,14 @@ name: Build GraalVM JDK description: 'Build GraalVM JDK and set up environment for testing' inputs: + native-images: + description: 'Internal GraalVM native images to build' + required: false + default: 'native-image' + components: + description: 'Internal GraalVM components to build' + required: false + default: 'Native Image' java-version: description: 'Java version to use' required: false @@ -47,8 +55,8 @@ runs: shell: bash run: | cd substratevm - ${MX_PATH}/mx --java-home=${LABSJDK_HOME} --native=native-image --components="Native Image" build - ln -s $(${MX_PATH}/mx --java-home=${LABSJDK_HOME} --native=native-image --components="Native Image" graalvm-home) ${GRAALVM_HOME} + ${MX_PATH}/mx --java-home=${LABSJDK_HOME} --native-images="${{ inputs.native-images }}" --components="${{ inputs.components }}" build + ln -s $(${MX_PATH}/mx --java-home=${LABSJDK_HOME} --native-images="${{ inputs.native-images }}" --components="${{ inputs.components }}" graalvm-home) ${GRAALVM_HOME} ${GRAALVM_HOME}/bin/native-image --version - name: Set up JAVA_HOME if: ${{ inputs.java-version }} != '' diff --git a/.github/workflows/reachability-metadata.yml b/.github/workflows/reachability-metadata.yml new file mode 100644 index 000000000000..7e6c6502b786 --- /dev/null +++ b/.github/workflows/reachability-metadata.yml @@ -0,0 +1,143 @@ +# +# Copyright (c) 2024, 2024, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# The Universal Permissive License (UPL), Version 1.0 +# +# Subject to the condition set forth below, permission is hereby granted to any +# person obtaining a copy of this software, associated documentation and/or +# data (collectively the "Software"), free of charge and under any and all +# copyright rights in the Software, and any and all patent rights owned or +# freely licensable by each licensor hereunder covering either (i) the +# unmodified Software as contributed to or provided by such licensor, or (ii) +# the Larger Works (as defined below), to deal in both +# +# (a) the Software, and +# +# (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if +# one is included with the Software each a "Larger Work" to which the Software +# is contributed by such licensors), +# +# without restriction, including without limitation the rights to copy, create +# derivative works of, display, perform, and distribute the Software and make, +# use, sell, offer for sale, import, export, have made, and have sold the +# Software and the Larger Work(s), and to sublicense the foregoing rights on +# either these or other terms. +# +# This license is subject to the following condition: +# +# The above copyright notice and either this complete permission notice or at a +# minimum a reference to the UPL must be included in all copies or substantial +# portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# +name: Weekly Reachability Metadata Tests + +on: + push: + paths: + - '.github/workflows/reachability-metadata.yml' + pull_request: + paths: + - '.github/workflows/reachability-metadata.yml' + schedule: + - cron: '0 1 * * 1' + workflow_dispatch: + +env: + REACHABILITY_METADATA_PATH: ${{ github.workspace }}/graalvm-reachability-metadata + MINIMUM_METADATA_JAVA_VERSION: 17 + +permissions: + contents: read # to fetch code (actions/checkout) + +jobs: + build-graalvm-and-populate-matrix: + name: Build GraalVM and populate matrix + runs-on: ubuntu-20.04 + if: (github.event_name == 'schedule' && github.repository == 'oracle/graal') || (github.event_name != 'schedule') + outputs: + matrix: ${{ steps.set-matrix.outputs.matrix }} + steps: + - name: Checkout oracle/graal + uses: actions/checkout@v4 + with: + fetch-depth: 1 + - name: Build GraalVM JDK + uses: ./.github/actions/build-graalvm + with: + native-images: 'native-image,native-image-configure,lib:native-image-agent' + components: 'Native Image,Native Image Configure Tool' + java-version: ${{ env.MINIMUM_METADATA_JAVA_VERSION }} + - name: Tar GraalVM JDK + shell: bash + run: tar -czvhf graalvm.tgz -C $(dirname ${GRAALVM_HOME}) $(basename ${GRAALVM_HOME}) + - name: Persist GraalVM JDK build + uses: actions/upload-artifact@v4 + with: + name: graalvm + path: graalvm.tgz + - name: Checkout oracle/graalvm-reachability-metadata + uses: actions/checkout@v4 + with: + repository: oracle/graalvm-reachability-metadata + fetch-depth: 1 + path: ${{ env.REACHABILITY_METADATA_PATH }} + - name: "Populate matrix" + id: set-matrix + run: | + cd ${{ env.REACHABILITY_METADATA_PATH }} + ./gradlew generateMatrixMatchingCoordinates -Pcoordinates=all + + test-all-metadata: + name: ${{ matrix.coordinates }} + runs-on: ubuntu-latest + env: + GRAALVM_HOME: ${{ github.workspace }}/graalvm # identical to the one in ./.github/actions/build-graalvm + timeout-minutes: 20 + needs: build-graalvm-and-populate-matrix + strategy: + fail-fast: false + matrix: + coordinates: ${{fromJson(needs.build-graalvm-and-populate-matrix.outputs.matrix).coordinates}} + steps: + - name: "Checkout oracle/graalvm-reachability-metadata" + uses: actions/checkout@v4 + with: + repository: oracle/graalvm-reachability-metadata + fetch-depth: 1 + - name: Download GraalVM JDK build + uses: actions/download-artifact@v4 + with: + name: graalvm + path: . + - name: Extract GraalVM JDK build + run: tar -xzvf graalvm.tgz -C $(dirname ${GRAALVM_HOME}) + - name: "Setup JAVA_HOME" + uses: actions/setup-java@v4 + with: + distribution: 'oracle' + java-version: ${{ env.MINIMUM_METADATA_JAVA_VERSION }} + - name: "Pull allowed docker images" + run: | + ./gradlew pullAllowedDockerImages --coordinates=${{ matrix.coordinates }} + - name: "Disable docker" + run: | + sudo apt-get install openbsd-inetd + sudo bash -c "cat ./.github/workflows/discard-port.conf >> /etc/inetd.conf" + sudo systemctl start inetd + sudo mkdir /etc/systemd/system/docker.service.d + sudo bash -c "cat ./.github/workflows/dockerd.service > /etc/systemd/system/docker.service.d/http-proxy.conf" + sudo systemctl daemon-reload + sudo systemctl restart docker + - name: "Run '${{ matrix.coordinates }}' tests" + run: | + ./gradlew test -Pcoordinates=${{ matrix.coordinates }} + \ No newline at end of file From 2cd5034ed9b9184464d3bdc1e869d458af552d0a Mon Sep 17 00:00:00 2001 From: Fabio Niephaus Date: Mon, 18 Mar 2024 09:36:32 +0100 Subject: [PATCH 2/3] Align names in Quarkus workflow. --- .github/workflows/quarkus.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/quarkus.yml b/.github/workflows/quarkus.yml index caac30d4ba92..daa0ce3f0259 100644 --- a/.github/workflows/quarkus.yml +++ b/.github/workflows/quarkus.yml @@ -93,10 +93,10 @@ jobs: key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- - - name: Tar GraalVM + - name: Tar GraalVM JDK shell: bash run: tar -czvhf graalvm.tgz -C $(dirname ${GRAALVM_HOME}) $(basename ${GRAALVM_HOME}) - - name: Persist GraalVM build + - name: Persist GraalVM JDK build uses: actions/upload-artifact@v4 with: name: graalvm @@ -133,13 +133,13 @@ jobs: fail-fast: false matrix: ${{ fromJson(needs.build-quarkus-and-graalvm.outputs.matrix) }} steps: - - name: Download GraalVM build + - name: Download GraalVM JDK build if: startsWith(matrix.os-name, 'ubuntu') uses: actions/download-artifact@v4 with: name: graalvm path: . - - name: Extract GraalVM build + - name: Extract GraalVM JDK build if: startsWith(matrix.os-name, 'ubuntu') shell: bash run: tar -xzvf graalvm.tgz -C $(dirname ${GRAALVM_HOME}) From aaa21a7d6ca5b76fd778e088171a44aa37f46fbb Mon Sep 17 00:00:00 2001 From: Fabio Niephaus Date: Mon, 18 Mar 2024 09:36:23 +0100 Subject: [PATCH 3/3] Drop `fetch-depth: 1` because it is the default. --- .github/actions/build-graalvm/action.yml | 1 - .github/workflows/cdt-inspect.yml | 3 --- .github/workflows/main.yml | 1 - .github/workflows/micronaut.yml | 3 --- .github/workflows/quarkus.yml | 2 -- .github/workflows/reachability-metadata.yml | 4 ---- .github/workflows/spring.yml | 3 --- 7 files changed, 17 deletions(-) diff --git a/.github/actions/build-graalvm/action.yml b/.github/actions/build-graalvm/action.yml index 29f231f7cbb7..fafc7633c5ae 100644 --- a/.github/actions/build-graalvm/action.yml +++ b/.github/actions/build-graalvm/action.yml @@ -33,7 +33,6 @@ runs: uses: actions/checkout@v4 with: repository: graalvm/mx - fetch-depth: 1 ref: ${{ env.MX_VERSION }} path: ${{ env.MX_PATH }} - name: Set up Python diff --git a/.github/workflows/cdt-inspect.yml b/.github/workflows/cdt-inspect.yml index 363f01a60f5a..9ea51c7c49de 100644 --- a/.github/workflows/cdt-inspect.yml +++ b/.github/workflows/cdt-inspect.yml @@ -62,13 +62,11 @@ jobs: - name: Checkout oracle/graal uses: actions/checkout@v4 with: - fetch-depth: 1 path: ${{ github.workspace }}/graal - name: Checkout oracle/graaljs uses: actions/checkout@v4 with: repository: oracle/graaljs - fetch-depth: 1 sparse-checkout: | graal-js path: ${{ github.workspace }}/js @@ -76,7 +74,6 @@ jobs: uses: actions/checkout@v4 with: repository: graalvm/mx.git - fetch-depth: 1 ref: master path: ${{ env.MX_PATH }} - name: Set up Python diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 429b50b4f8bf..96bb20490dfe 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -172,7 +172,6 @@ jobs: 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 diff --git a/.github/workflows/micronaut.yml b/.github/workflows/micronaut.yml index 88caa196134b..4077f457eb3a 100644 --- a/.github/workflows/micronaut.yml +++ b/.github/workflows/micronaut.yml @@ -68,8 +68,6 @@ jobs: steps: - name: Checkout oracle/graal uses: actions/checkout@v4 - with: - fetch-depth: 1 - name: Build GraalVM JDK uses: ./.github/actions/build-graalvm with: @@ -84,7 +82,6 @@ jobs: uses: actions/checkout@v4 with: repository: micronaut-projects/micronaut-core - fetch-depth: 1 path: ${{ env.MICRONAUT_CORE_PATH }} - name: Run nativeTest in micronaut-core run: | diff --git a/.github/workflows/quarkus.yml b/.github/workflows/quarkus.yml index daa0ce3f0259..289551edb574 100644 --- a/.github/workflows/quarkus.yml +++ b/.github/workflows/quarkus.yml @@ -74,8 +74,6 @@ jobs: steps: - name: Checkout oracle/graal uses: actions/checkout@v4 - with: - fetch-depth: 1 - name: Build GraalVM JDK uses: ./.github/actions/build-graalvm with: diff --git a/.github/workflows/reachability-metadata.yml b/.github/workflows/reachability-metadata.yml index 7e6c6502b786..b19d621f5103 100644 --- a/.github/workflows/reachability-metadata.yml +++ b/.github/workflows/reachability-metadata.yml @@ -68,8 +68,6 @@ jobs: steps: - name: Checkout oracle/graal uses: actions/checkout@v4 - with: - fetch-depth: 1 - name: Build GraalVM JDK uses: ./.github/actions/build-graalvm with: @@ -88,7 +86,6 @@ jobs: uses: actions/checkout@v4 with: repository: oracle/graalvm-reachability-metadata - fetch-depth: 1 path: ${{ env.REACHABILITY_METADATA_PATH }} - name: "Populate matrix" id: set-matrix @@ -112,7 +109,6 @@ jobs: uses: actions/checkout@v4 with: repository: oracle/graalvm-reachability-metadata - fetch-depth: 1 - name: Download GraalVM JDK build uses: actions/download-artifact@v4 with: diff --git a/.github/workflows/spring.yml b/.github/workflows/spring.yml index 7c6040922801..3d2c0a6efa58 100644 --- a/.github/workflows/spring.yml +++ b/.github/workflows/spring.yml @@ -66,8 +66,6 @@ jobs: steps: - name: Checkout oracle/graal uses: actions/checkout@v4 - with: - fetch-depth: 1 - name: Build GraalVM JDK uses: ./.github/actions/build-graalvm with: @@ -76,7 +74,6 @@ jobs: uses: actions/checkout@v4 with: repository: spring-projects/spring-petclinic - fetch-depth: 1 path: ${{ env.SPRING_PETCLINIC_PATH }} - name: Run nativeTest in spring-petclinic run: |