Skip to content

Commit f422695

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

File tree

1 file changed

+139
-0
lines changed

1 file changed

+139
-0
lines changed
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
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+
steps:
67+
- name: Checkout oracle/graal
68+
uses: actions/checkout@v4
69+
with:
70+
fetch-depth: 1
71+
- name: Build GraalVM JDK
72+
uses: ./.github/actions/build-graalvm
73+
with:
74+
java-version: ${{ env.MINIMUM_METADATA_JAVA_VERSION }}
75+
- name: Tar GraalVM JDK
76+
shell: bash
77+
run: tar -czvhf graalvm.tgz -C $(dirname ${GRAALVM_HOME}) $(basename ${GRAALVM_HOME})
78+
- name: Persist GraalVM JDK build
79+
uses: actions/upload-artifact@v4
80+
with:
81+
name: graalvm
82+
path: graalvm.tgz
83+
- name: Checkout oracle/graalvm-reachability-metadata
84+
uses: actions/checkout@v4
85+
with:
86+
repository: oracle/graalvm-reachability-metadata
87+
fetch-depth: 1
88+
path: ${{ env.REACHABILITY_METADATA_PATH }}
89+
- name: "Populate matrix"
90+
id: set-matrix
91+
run: |
92+
cd ${{ env.REACHABILITY_METADATA_PATH }}
93+
./gradlew generateMatrixMatchingCoordinates -Pcoordinates=all
94+
95+
test-all-metadata:
96+
name: ${{ matrix.coordinates }}
97+
runs-on: ubuntu-latest
98+
env:
99+
GRAALVM_HOME: ${{ github.workspace }}/graalvm # identical to the one in ./.github/actions/build-graalvm
100+
timeout-minutes: 20
101+
needs: build-graalvm-and-populate-matrix
102+
strategy:
103+
fail-fast: false
104+
matrix:
105+
coordinates: ${{fromJson(needs.build-graalvm-and-populate-matrix.outputs.matrix.coordinates)}}
106+
steps:
107+
- name: Download GraalVM JDK build
108+
uses: actions/download-artifact@v4
109+
with:
110+
name: graalvm
111+
path: .
112+
- name: Extract GraalVM JDK build
113+
run: tar -xzvf graalvm.tgz -C $(dirname ${GRAALVM_HOME})
114+
- name: "Setup JAVA_HOME"
115+
uses: actions/setup-java@v4
116+
with:
117+
distribution: 'oracle'
118+
java-version: ${{ env.MINIMUM_METADATA_JAVA_VERSION }}
119+
- name: "Checkout oracle/graalvm-reachability-metadata"
120+
uses: actions/checkout@v4
121+
with:
122+
repository: oracle/graalvm-reachability-metadata
123+
fetch-depth: 1
124+
- name: "Pull allowed docker images"
125+
run: |
126+
./gradlew pullAllowedDockerImages --coordinates=${{ matrix.coordinates }}
127+
- name: "Disable docker"
128+
run: |
129+
sudo apt-get install openbsd-inetd
130+
sudo bash -c "cat ./.github/workflows/discard-port.conf >> /etc/inetd.conf"
131+
sudo systemctl start inetd
132+
sudo mkdir /etc/systemd/system/docker.service.d
133+
sudo bash -c "cat ./.github/workflows/dockerd.service > /etc/systemd/system/docker.service.d/http-proxy.conf"
134+
sudo systemctl daemon-reload
135+
sudo systemctl restart docker
136+
- name: "Run '${{ matrix.coordinates }}' tests"
137+
run: |
138+
./gradlew test -Pcoordinates=${{ matrix.coordinates }}
139+

0 commit comments

Comments
 (0)