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