1
- name : Bob the Builder
1
+ name : Build Infix
2
2
3
3
on :
4
- pull_request :
5
- types : [opened, synchronize, reopened, labeled]
6
- push :
7
- branches :
8
- - main
9
4
workflow_dispatch :
10
5
inputs :
11
6
minimal :
18
13
required : false
19
14
default : true
20
15
type : boolean
16
+
17
+ workflow_call :
18
+ # TODO: Rename
19
+ inputs :
20
+ target :
21
+ required : true
22
+ type : string
21
23
jobs :
22
24
build :
23
- name : Build Infix ${{ matrix .target }}
25
+ name : Build Infix ${{ inputs .target }}
24
26
runs-on : [ self-hosted, latest ]
25
27
strategy :
26
- matrix :
27
- target : [aarch64, x86_64]
28
28
fail-fast : false
29
29
outputs :
30
30
build_id : ${{ steps.vars.outputs.INFIX_BUILD_ID }}
70
70
flavor=""
71
71
fi
72
72
fi
73
- target=${{ matrix .target }}
73
+ target=${{ inputs .target }}
74
74
echo "dir=infix-$target" >> $GITHUB_OUTPUT
75
75
echo "tgz=infix-$target.tar.gz" >> $GITHUB_OUTPUT
76
76
echo "flv=$flavor" >> $GITHUB_OUTPUT
@@ -88,16 +88,16 @@ jobs:
88
88
uses : actions/cache@v4
89
89
with :
90
90
path : .ccache/
91
- key : ccache-${{ matrix .target }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
91
+ key : ccache-${{ inputs .target }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
92
92
restore-keys : |
93
- ccache-${{ matrix .target }}-
93
+ ccache-${{ inputs .target }}-
94
94
ccache-
95
95
96
- - name : Configure ${{ matrix .target }}${{ steps.vars.outputs.flv }}
96
+ - name : Configure ${{ inputs .target }}${{ steps.vars.outputs.flv }}
97
97
run : |
98
- make ${{ matrix .target }}${{ steps.vars.outputs.flv }}_defconfig
98
+ make ${{ inputs .target }}${{ steps.vars.outputs.flv }}_defconfig
99
99
100
- - name : Unit Test ${{ matrix .target }}
100
+ - name : Unit Test ${{ inputs .target }}
101
101
run : |
102
102
make test-unit
103
103
@@ -115,9 +115,9 @@ jobs:
115
115
fi
116
116
echo "MAKE=$MAKE" >> $GITHUB_OUTPUT
117
117
118
- - name : Build ${{ matrix .target }}${{ steps.vars.outputs.flv }}
118
+ - name : Build ${{ inputs .target }}${{ steps.vars.outputs.flv }}
119
119
run : |
120
- echo "Building ${{ matrix .target }}${{ steps.vars.outputs.flv }}_defconfig ..."
120
+ echo "Building ${{ inputs .target }}${{ steps.vars.outputs.flv }}_defconfig ..."
121
121
eval "${{ steps.parallel.outputs.MAKE }}"
122
122
123
123
- name : Check SBOM from Build
@@ -139,7 +139,7 @@ jobs:
139
139
printf "Size of output/images/: "
140
140
ls -l output/images/
141
141
142
- - name : Prepare ${{ matrix .target }} Artifact
142
+ - name : Prepare ${{ inputs .target }} Artifact
143
143
run : |
144
144
cd output/
145
145
mv images ${{ steps.vars.outputs.dir }}
@@ -149,111 +149,4 @@ jobs:
149
149
- uses : actions/upload-artifact@v4
150
150
with :
151
151
path : output/${{ steps.vars.outputs.tgz }}
152
- name : artifact-${{ matrix.target }}
153
-
154
- test :
155
- name : Regression Test of Infix x86_64
156
- needs : build
157
- runs-on : [ self-hosted, regression ]
158
- steps :
159
- - uses : actions/checkout@v4
160
- with :
161
- clean : true
162
- submodules : recursive
163
-
164
- - name : Set Build Variables
165
- id : vars
166
- run : |
167
- if [ -n "${{ needs.build.outputs.build_id }}" ]; then
168
- echo "INFIX_BUILD_ID=${{ needs.build.outputs.build_id }}" \
169
- >>$GITHUB_ENV
170
- fi
171
-
172
- if [ "$GITHUB_REF_NAME" != "main" ]; then
173
- flavor="_minimal"
174
- else
175
- flavor=""
176
- fi
177
- echo "flv=$flavor" >> $GITHUB_OUTPUT
178
-
179
- - name : Configure x86_64${{ steps.vars.outputs.flv }}
180
- run : |
181
- make x86_64${{ steps.vars.outputs.flv }}_defconfig
182
-
183
- - uses : actions/download-artifact@v4
184
- with :
185
- pattern : " artifact-*"
186
- merge-multiple : true
187
-
188
- - name : Restore x86-64${{ steps.vars.outputs.flv }} output/
189
- run : |
190
- ls -l
191
- mkdir -p output
192
- mv infix-x86_64.tar.gz output/
193
- cd output/
194
- tar xf infix-x86_64.tar.gz
195
- ln -s infix-x86_64 images
196
-
197
- - name : Regression Test x86_64${{ steps.vars.outputs.flv }}
198
- run : |
199
- make test
200
-
201
- - name : Publish Test Result for x86_64${{ steps.vars.outputs.flv }}
202
- # Ensure this runs even if Regression Test fails
203
- if : always()
204
- run : cat test/.log/last/result-gh.md >> $GITHUB_STEP_SUMMARY
205
-
206
- - name : Generate Test Report for x86_64${{ steps.vars.outputs.flv }}
207
- # Ensure this runs even if Regression Test fails
208
- if : always()
209
- run : |
210
- asciidoctor-pdf \
211
- --theme test/9pm/report/theme.yml \
212
- -a pdf-fontsdir=test/9pm/report/fonts \
213
- test/.log/last/report.adoc \
214
- -o test/.log/last/report.pdf
215
-
216
- - name : Upload Test Report as Artifact
217
- uses : actions/upload-artifact@v4
218
- with :
219
- name : test-report
220
- path : test/.log/last/report.pdf
221
-
222
- release :
223
- if : ${{github.repository_owner == 'kernelkit' && github.ref_name == 'main'}}
224
- name : Upload Latest Build
225
- needs : test
226
- runs-on : ubuntu-latest
227
- permissions :
228
- contents : write
229
- steps :
230
- - uses : actions/download-artifact@v4
231
- with :
232
- pattern : " artifact-*"
233
- merge-multiple : true
234
-
235
- - name : Create checksums ...
236
- run : |
237
- for file in *.tar.gz; do
238
- sha256sum $file > $file.sha256
239
- done
240
-
241
- - uses : ncipollo/release-action@v1
242
- with :
243
- allowUpdates : true
244
- omitName : true
245
- omitBody : true
246
- omitBodyDuringUpdate : true
247
- prerelease : true
248
- tag : " latest"
249
- token : ${{ secrets.GITHUB_TOKEN }}
250
- artifacts : " *.tar.gz*"
251
-
252
- - name : Summary
253
- run : |
254
- cat <<EOF >> $GITHUB_STEP_SUMMARY
255
- # Latest Build Complete! :rocket:
256
-
257
- For the public download links of these build artifacts, please see:
258
- <https://github.com/kernelkit/infix/releases/tag/latest>
259
- EOF
152
+ name : artifact-${{ inputs.target }}
0 commit comments