Skip to content

Commit 3c95588

Browse files
committed
Add weekly workflow for reachability metadata.
1 parent 66c5f66 commit 3c95588

File tree

1 file changed

+141
-0
lines changed

1 file changed

+141
-0
lines changed
Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
#
2+
# Copyright (c) 2024, 2024, Oracle and/or its affiliates. All rights reserved.
3+
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
#
5+
# The Universal Permissive License (UPL), Version 1.0
6+
#
7+
# Subject to the condition set forth below, permission is hereby granted to any
8+
# person obtaining a copy of this software, associated documentation and/or
9+
# data (collectively the "Software"), free of charge and under any and all
10+
# copyright rights in the Software, and any and all patent rights owned or
11+
# freely licensable by each licensor hereunder covering either (i) the
12+
# unmodified Software as contributed to or provided by such licensor, or (ii)
13+
# the Larger Works (as defined below), to deal in both
14+
#
15+
# (a) the Software, and
16+
#
17+
# (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if
18+
# one is included with the Software each a "Larger Work" to which the Software
19+
# is contributed by such licensors),
20+
#
21+
# without restriction, including without limitation the rights to copy, create
22+
# derivative works of, display, perform, and distribute the Software and make,
23+
# use, sell, offer for sale, import, export, have made, and have sold the
24+
# Software and the Larger Work(s), and to sublicense the foregoing rights on
25+
# either these or other terms.
26+
#
27+
# This license is subject to the following condition:
28+
#
29+
# The above copyright notice and either this complete permission notice or at a
30+
# minimum a reference to the UPL must be included in all copies or substantial
31+
# portions of the Software.
32+
#
33+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
34+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
35+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
36+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
37+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
38+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
39+
# SOFTWARE.
40+
#
41+
name: Weekly Reachability Metadata Tests
42+
43+
on:
44+
push:
45+
paths:
46+
- '.github/workflows/reachability-metadata.yml'
47+
pull_request:
48+
paths:
49+
- '.github/workflows/reachability-metadata.yml'
50+
schedule:
51+
- cron: '0 1 * * 1'
52+
workflow_dispatch:
53+
54+
env:
55+
REACHABILITY_METADATA_PATH: ${{ github.workspace }}/graalvm-reachability-metadata
56+
MINIMUM_METADATA_JAVA_VERSION: 17
57+
58+
permissions:
59+
contents: read # to fetch code (actions/checkout)
60+
61+
jobs:
62+
build-graalvm-and-populate-matrix:
63+
name: Build GraalVM and populate matrix
64+
runs-on: ubuntu-20.04
65+
if: (github.event_name == 'schedule' && github.repository == 'oracle/graal') || (github.event_name != 'schedule')
66+
outputs:
67+
matrix: ${{ steps.set-matrix.outputs.matrix }}
68+
steps:
69+
- name: Checkout oracle/graal
70+
uses: actions/checkout@v4
71+
with:
72+
fetch-depth: 1
73+
- name: Build GraalVM JDK
74+
uses: ./.github/actions/build-graalvm
75+
with:
76+
java-version: ${{ env.MINIMUM_METADATA_JAVA_VERSION }}
77+
- name: Tar GraalVM JDK
78+
shell: bash
79+
run: tar -czvhf graalvm.tgz -C $(dirname ${GRAALVM_HOME}) $(basename ${GRAALVM_HOME})
80+
- name: Persist GraalVM JDK build
81+
uses: actions/upload-artifact@v4
82+
with:
83+
name: graalvm
84+
path: graalvm.tgz
85+
- name: Checkout oracle/graalvm-reachability-metadata
86+
uses: actions/checkout@v4
87+
with:
88+
repository: oracle/graalvm-reachability-metadata
89+
fetch-depth: 1
90+
path: ${{ env.REACHABILITY_METADATA_PATH }}
91+
- name: "Populate matrix"
92+
id: set-matrix
93+
run: |
94+
cd ${{ env.REACHABILITY_METADATA_PATH }}
95+
./gradlew generateMatrixMatchingCoordinates -Pcoordinates=all
96+
97+
test-all-metadata:
98+
name: ${{ matrix.coordinates }}
99+
runs-on: ubuntu-latest
100+
env:
101+
GRAALVM_HOME: ${{ github.workspace }}/graalvm # identical to the one in ./.github/actions/build-graalvm
102+
timeout-minutes: 20
103+
needs: build-graalvm-and-populate-matrix
104+
strategy:
105+
fail-fast: false
106+
matrix:
107+
coordinates: ${{fromJson(needs.build-graalvm-and-populate-matrix.outputs.matrix).coordinates}}
108+
steps:
109+
- name: Download GraalVM JDK build
110+
uses: actions/download-artifact@v4
111+
with:
112+
name: graalvm
113+
path: .
114+
- name: Extract GraalVM JDK build
115+
run: tar -xzvf graalvm.tgz -C $(dirname ${GRAALVM_HOME})
116+
- name: "Setup JAVA_HOME"
117+
uses: actions/setup-java@v4
118+
with:
119+
distribution: 'oracle'
120+
java-version: ${{ env.MINIMUM_METADATA_JAVA_VERSION }}
121+
- name: "Checkout oracle/graalvm-reachability-metadata"
122+
uses: actions/checkout@v4
123+
with:
124+
repository: oracle/graalvm-reachability-metadata
125+
fetch-depth: 1
126+
- name: "Pull allowed docker images"
127+
run: |
128+
./gradlew pullAllowedDockerImages --coordinates=${{ matrix.coordinates }}
129+
- name: "Disable docker"
130+
run: |
131+
sudo apt-get install openbsd-inetd
132+
sudo bash -c "cat ./.github/workflows/discard-port.conf >> /etc/inetd.conf"
133+
sudo systemctl start inetd
134+
sudo mkdir /etc/systemd/system/docker.service.d
135+
sudo bash -c "cat ./.github/workflows/dockerd.service > /etc/systemd/system/docker.service.d/http-proxy.conf"
136+
sudo systemctl daemon-reload
137+
sudo systemctl restart docker
138+
- name: "Run '${{ matrix.coordinates }}' tests"
139+
run: |
140+
./gradlew test -Pcoordinates=${{ matrix.coordinates }}
141+

0 commit comments

Comments
 (0)