1- name : Bob the Builder
1+ name : Build Infix
22
33on :
4- pull_request :
5- types : [opened, synchronize, reopened, labeled]
6- push :
7- branches :
8- - main
94 workflow_dispatch :
105 inputs :
116 minimal :
1813 required : false
1914 default : true
2015 type : boolean
16+
17+ workflow_call :
18+ inputs :
19+ target :
20+ required : true
21+ type : string
2122jobs :
2223 build :
23- name : Build Infix ${{ matrix .target }}
24+ name : Build Infix ${{ inputs .target }}
2425 runs-on : [ self-hosted, latest ]
2526 strategy :
26- matrix :
27- target : [aarch64, x86_64]
2827 fail-fast : false
2928 outputs :
3029 build_id : ${{ steps.vars.outputs.INFIX_BUILD_ID }}
7069 flavor=""
7170 fi
7271 fi
73- target=${{ matrix .target }}
72+ target=${{ inputs .target }}
7473 echo "dir=infix-$target" >> $GITHUB_OUTPUT
7574 echo "tgz=infix-$target.tar.gz" >> $GITHUB_OUTPUT
7675 echo "flv=$flavor" >> $GITHUB_OUTPUT
@@ -88,16 +87,16 @@ jobs:
8887 uses : actions/cache@v4
8988 with :
9089 path : .ccache/
91- key : ccache-${{ matrix .target }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
90+ key : ccache-${{ inputs .target }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }}
9291 restore-keys : |
93- ccache-${{ matrix .target }}-
92+ ccache-${{ inputs .target }}-
9493 ccache-
9594
96- - name : Configure ${{ matrix .target }}${{ steps.vars.outputs.flv }}
95+ - name : Configure ${{ inputs .target }}${{ steps.vars.outputs.flv }}
9796 run : |
98- make ${{ matrix .target }}${{ steps.vars.outputs.flv }}_defconfig
97+ make ${{ inputs .target }}${{ steps.vars.outputs.flv }}_defconfig
9998
100- - name : Unit Test ${{ matrix .target }}
99+ - name : Unit Test ${{ inputs .target }}
101100 run : |
102101 make test-unit
103102
@@ -115,9 +114,9 @@ jobs:
115114 fi
116115 echo "MAKE=$MAKE" >> $GITHUB_OUTPUT
117116
118- - name : Build ${{ matrix .target }}${{ steps.vars.outputs.flv }}
117+ - name : Build ${{ inputs .target }}${{ steps.vars.outputs.flv }}
119118 run : |
120- echo "Building ${{ matrix .target }}${{ steps.vars.outputs.flv }}_defconfig ..."
119+ echo "Building ${{ inputs .target }}${{ steps.vars.outputs.flv }}_defconfig ..."
121120 eval "${{ steps.parallel.outputs.MAKE }}"
122121
123122 - name : Check SBOM from Build
@@ -139,7 +138,7 @@ jobs:
139138 printf "Size of output/images/: "
140139 ls -l output/images/
141140
142- - name : Prepare ${{ matrix .target }} Artifact
141+ - name : Prepare ${{ inputs .target }} Artifact
143142 run : |
144143 cd output/
145144 mv images ${{ steps.vars.outputs.dir }}
@@ -149,111 +148,4 @@ jobs:
149148 - uses : actions/upload-artifact@v4
150149 with :
151150 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
151+ name : artifact-${{ inputs.target }}
0 commit comments