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