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 Native Image Layer Building Tests
42
+
43
+ on :
44
+ schedule :
45
+ - cron : " 0 0 * * 1" # Once a week at midnight on Monday
46
+ push :
47
+ paths :
48
+ - ' .github/workflows/reachability-metadata.yml'
49
+ pull_request :
50
+ paths :
51
+ - ' .github/workflows/reachability-metadata.yml'
52
+
53
+ env :
54
+ LIBRARY_METADATA_PATH : ${{github.workspace}}/vm/tests/gh_workflows/NILayerTests
55
+ JAVA_VERSION : 21
56
+ PYTHON_VERSION : 3.12.3
57
+
58
+ jobs :
59
+ build-graalvm-and-populate-matrix :
60
+ name : Build GraalVM and populate matrix
61
+ runs-on : ubuntu-latest
62
+ if : (github.repository=='oracle/graal')
63
+ outputs :
64
+ matrix : ${{ steps.set-matrix.outputs.matrix }}
65
+ steps :
66
+ - name : Checkout oracle/graal
67
+ uses : actions/checkout@v4
68
+ - name : Build GraalVM JDK
69
+ uses : ./.github/actions/build-graalvm
70
+ with :
71
+ native-images : ' native-image,native-image-configure,lib:native-image-agent'
72
+ components : ' Native Image,Native Image Configure Tool'
73
+ java-version : ${{ env.JAVA_VERSION }}
74
+ - name : Tar GraalVM JDK
75
+ shell : bash
76
+ run : tar -czvhf graalvm.tgz -C $(dirname ${GRAALVM_HOME}) $(basename ${GRAALVM_HOME})
77
+ - name : Persist GraalVM JDK build
78
+ uses : actions/upload-artifact@v4
79
+ with :
80
+ name : graalvm
81
+ path : graalvm.tgz
82
+ - name : Setup python
83
+ uses : actions/setup-python@v5
84
+ with :
85
+ python-version : ' ${{env.PYTHON_VERSION}}'
86
+ - name : Populate matrix
87
+ id : set-matrix
88
+ run : python3 -c 'import vm.tests.gh_workflows.NILayerTests.build_layer; vm.tests.gh_workflows.NILayerTests.build_layer.generate_matrix("${{env.LIBRARY_METADATA_PATH}}");'
89
+
90
+ test-native-image-layer-build :
91
+ name : ${{matrix.coordinates}}
92
+ runs-on : ubuntu-latest
93
+ env :
94
+ GRAALVM_HOME : ${{ github.workspace }}/graalvm
95
+ timeout-minutes : 20
96
+ needs : build-graalvm-and-populate-matrix
97
+ strategy :
98
+ fail-fast : false
99
+ matrix :
100
+ coordinates : ${{ fromJson(needs. build-graalvm-and-populate-matrix.outputs.matrix).coordinates}}
101
+ steps :
102
+ - name : Checkout oracle/graal
103
+ uses : actions/checkout@v4
104
+ - name : Download GraalVM JDK build
105
+ uses : actions/download-artifact@v4
106
+ with :
107
+ name : graalvm
108
+ path : .
109
+ - name : Extract GraalVM JDK build
110
+ run : tar -xzvf graalvm.tgz -C $(dirname ${GRAALVM_HOME})
111
+ - name : " Setup JAVA_HOME"
112
+ uses : actions/setup-java@v4
113
+ with :
114
+ distribution : ' oracle'
115
+ java-version : ${{ env.JAVA_VERSION }}
116
+ - name : Setup python
117
+ uses : actions/setup-python@v5
118
+ with :
119
+ python-version : ' ${{env.PYTHON_VERSION}}'
120
+ - name : Build layer
121
+ run : |
122
+ python3 -c 'import vm.tests.gh_workflows.NILayerTests.build_layer; vm.tests.gh_workflows.NILayerTests.build_layer.build_layer("${{matrix.coordinates}}".split("|")[0], "${{env.GRAALVM_HOME}}/bin/native-image");'
123
+ python3 -c 'import vm.tests.gh_workflows.NILayerTests.build_layer; vm.tests.gh_workflows.NILayerTests.build_layer.build_layer("${{matrix.coordinates}}".split("|")[1], "${{env.GRAALVM_HOME}}/bin/native-image");'
0 commit comments