Skip to content

Commit f35f0a0

Browse files
committed
hack: complete CI workflow redesign
Work in Progress.
1 parent 6d53d92 commit f35f0a0

File tree

3 files changed

+125
-126
lines changed

3 files changed

+125
-126
lines changed

.github/workflows/build.yml

Lines changed: 19 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
1-
name: Bob the Builder
1+
name: Build Infix
22

33
on:
4-
pull_request:
5-
types: [opened, synchronize, reopened, labeled]
6-
push:
7-
branches:
8-
- main
94
workflow_dispatch:
105
inputs:
116
minimal:
@@ -18,13 +13,18 @@ on:
1813
required: false
1914
default: true
2015
type: boolean
16+
17+
workflow_call:
18+
#TODO: Rename
19+
inputs:
20+
target:
21+
required: true
22+
type: string
2123
jobs:
2224
build:
23-
name: Build Infix ${{ matrix.target }}
25+
name: Build Infix ${{ inputs.target }}
2426
runs-on: [ self-hosted, latest ]
2527
strategy:
26-
matrix:
27-
target: [aarch64, x86_64]
2828
fail-fast: false
2929
outputs:
3030
build_id: ${{ steps.vars.outputs.INFIX_BUILD_ID }}
@@ -70,7 +70,7 @@ jobs:
7070
flavor=""
7171
fi
7272
fi
73-
target=${{ matrix.target }}
73+
target=${{ inputs.target }}
7474
echo "dir=infix-$target" >> $GITHUB_OUTPUT
7575
echo "tgz=infix-$target.tar.gz" >> $GITHUB_OUTPUT
7676
echo "flv=$flavor" >> $GITHUB_OUTPUT
@@ -88,16 +88,16 @@ jobs:
8888
uses: actions/cache@v4
8989
with:
9090
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') }}
9292
restore-keys: |
93-
ccache-${{ matrix.target }}-
93+
ccache-${{ inputs.target }}-
9494
ccache-
9595
96-
- name: Configure ${{ matrix.target }}${{ steps.vars.outputs.flv }}
96+
- name: Configure ${{ inputs.target }}${{ steps.vars.outputs.flv }}
9797
run: |
98-
make ${{ matrix.target }}${{ steps.vars.outputs.flv }}_defconfig
98+
make ${{ inputs.target }}${{ steps.vars.outputs.flv }}_defconfig
9999
100-
- name: Unit Test ${{ matrix.target }}
100+
- name: Unit Test ${{ inputs.target }}
101101
run: |
102102
make test-unit
103103
@@ -115,9 +115,9 @@ jobs:
115115
fi
116116
echo "MAKE=$MAKE" >> $GITHUB_OUTPUT
117117
118-
- name: Build ${{ matrix.target }}${{ steps.vars.outputs.flv }}
118+
- name: Build ${{ inputs.target }}${{ steps.vars.outputs.flv }}
119119
run: |
120-
echo "Building ${{ matrix.target }}${{ steps.vars.outputs.flv }}_defconfig ..."
120+
echo "Building ${{ inputs.target }}${{ steps.vars.outputs.flv }}_defconfig ..."
121121
eval "${{ steps.parallel.outputs.MAKE }}"
122122
123123
- name: Check SBOM from Build
@@ -139,7 +139,7 @@ jobs:
139139
printf "Size of output/images/: "
140140
ls -l output/images/
141141
142-
- name: Prepare ${{ matrix.target }} Artifact
142+
- name: Prepare ${{ inputs.target }} Artifact
143143
run: |
144144
cd output/
145145
mv images ${{ steps.vars.outputs.dir }}
@@ -149,111 +149,4 @@ jobs:
149149
- uses: actions/upload-artifact@v4
150150
with:
151151
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 }}

.github/workflows/test.yml

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: Test Infix
2+
3+
on:
4+
workflow_dispatch:
5+
workflow_call:
6+
#TODO: Rename
7+
inputs:
8+
target:
9+
required: true
10+
type: string
11+
12+
jobs:
13+
test:
14+
name: Regression Test of Infix x86_64
15+
runs-on: [ self-hosted, regression ]
16+
steps:
17+
- uses: actions/checkout@v4
18+
with:
19+
clean: true
20+
submodules: recursive
21+
22+
- name: Set Build Variables
23+
id: vars
24+
run: |
25+
if [ -n "${{ needs.build.outputs.build_id }}" ]; then
26+
echo "INFIX_BUILD_ID=${{ needs.build.outputs.build_id }}" \
27+
>>$GITHUB_ENV
28+
fi
29+
30+
if [ "$GITHUB_REF_NAME" != "main" ]; then
31+
flavor="_minimal"
32+
else
33+
flavor=""
34+
fi
35+
echo "flv=$flavor" >> $GITHUB_OUTPUT
36+
37+
- name: Configure x86_64${{ steps.vars.outputs.flv }}
38+
run: |
39+
make x86_64${{ steps.vars.outputs.flv }}_defconfig
40+
41+
- uses: actions/download-artifact@v4
42+
with:
43+
pattern: "artifact-*"
44+
merge-multiple: true
45+
46+
- name: Restore x86-64${{ steps.vars.outputs.flv }} output/
47+
run: |
48+
ls -l
49+
mkdir -p output
50+
mv infix-x86_64.tar.gz output/
51+
cd output/
52+
tar xf infix-x86_64.tar.gz
53+
ln -s infix-x86_64 images
54+
55+
- name: Regression Test x86_64${{ steps.vars.outputs.flv }}
56+
run: |
57+
make test
58+
59+
- name: Publish Test Result for x86_64${{ steps.vars.outputs.flv }}
60+
# Ensure this runs even if Regression Test fails
61+
if: always()
62+
run: cat test/.log/last/result-gh.md >> $GITHUB_STEP_SUMMARY
63+
64+
- name: Generate Test Report for x86_64${{ steps.vars.outputs.flv }}
65+
# Ensure this runs even if Regression Test fails
66+
if: always()
67+
run: |
68+
asciidoctor-pdf \
69+
--theme test/9pm/report/theme.yml \
70+
-a pdf-fontsdir=test/9pm/report/fonts \
71+
test/.log/last/report.adoc \
72+
-o test/.log/last/report.pdf
73+
74+
- name: Upload Test Report as Artifact
75+
uses: actions/upload-artifact@v4
76+
with:
77+
name: test-report
78+
path: test/.log/last/report.pdf
79+

.github/workflows/trigger.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
name: Self Trigger
2+
3+
on:
4+
pull_request:
5+
types: [opened, synchronize, reopened, labeled]
6+
push:
7+
branches:
8+
- main
9+
- ci-workflow-redesign
10+
workflow_dispatch:
11+
12+
jobs:
13+
build-x86:
14+
uses: ./.github/workflows/build.yml
15+
with:
16+
target: x86
17+
18+
build-aarch:
19+
uses: ./.github/workflows/build.yml
20+
with:
21+
target: aarch
22+
23+
test-x86:
24+
needs: build-x86
25+
uses: ./.github/workflows/test.yml
26+
with:
27+
target: x86

0 commit comments

Comments
 (0)