Bob the Builder #590
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Bob the Builder | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
workflow_dispatch: | |
jobs: | |
build: | |
name: Build Infix ${{ matrix.target }} | |
runs-on: [ self-hosted, latest ] | |
strategy: | |
matrix: | |
target: [aarch64, x86_64] | |
fail-fast: false | |
steps: | |
- name: Cleanup Build Folder | |
run: | | |
ls -la ./ | |
rm -rf ./* || true | |
rm -rf ./.??* || true | |
ls -la ./ | |
- uses: actions/checkout@v4 | |
with: | |
clean: true | |
submodules: recursive | |
- name: Set Build Variables | |
id: vars | |
run: | | |
target=${{ matrix.target }} | |
echo "dir=infix-$target" >> $GITHUB_OUTPUT | |
echo "tgz=infix-$target.tar.gz" >> $GITHUB_OUTPUT | |
- name: Restore Cache of dl/ | |
uses: actions/cache@v4 | |
with: | |
path: dl/ | |
key: dl-${{ hashFiles('.git/modules/buildroot/HEAD', 'configs/*', 'package/*/*.hash') }} | |
restore-keys: | | |
dl- | |
- name: Restore Cache of .ccache/ | |
uses: actions/cache@v4 | |
with: | |
path: .ccache/ | |
key: ccache-${{ matrix.target }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }} | |
restore-keys: | | |
ccache-${{ matrix.target }}- | |
ccache- | |
- name: Configure ${{ matrix.target }} | |
run: | | |
make ${{ matrix.target }}_defconfig | |
- name: Unit Test ${{ matrix.target }} | |
run: | | |
make test-unit | |
- name: Build ${{ matrix.target }} | |
run: | | |
echo "Building ${{ matrix.target }}_defconfig ..." | |
make | |
- name: Check SBOM from Build | |
run: | | |
make legal-info | |
- name: Prepare ${{ matrix.target }} Artifact | |
run: | | |
cd output/ | |
mv images ${{ steps.vars.outputs.dir }} | |
ln -s ${{ steps.vars.outputs.dir }} images | |
tar chfz ${{ steps.vars.outputs.tgz }} ${{ steps.vars.outputs.dir }} | |
- uses: actions/upload-artifact@v4 | |
with: | |
path: output/${{ steps.vars.outputs.tgz }} | |
name: artifact-${{ matrix.target }} | |
test: | |
name: Regression Test of Infix x86_64 | |
needs: build | |
runs-on: [ self-hosted, regression ] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
clean: true | |
submodules: recursive | |
- name: Configure x86_64 | |
run: | | |
make x86_64_defconfig | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: "artifact-*" | |
merge-multiple: true | |
- name: Restore x86-64 output/ | |
run: | | |
ls -l | |
mkdir -p output | |
mv infix-x86_64.tar.gz output/ | |
cd output/ | |
tar xf infix-x86_64.tar.gz | |
ln -s infix-x86_64 images | |
- name: Regression Test | |
run: | | |
make test | |
- name: Publish Test Result | |
# Ensure this runs even if Regression Test fails | |
if: always() | |
run: cat test/.log/last/result-gh.md >> $GITHUB_STEP_SUMMARY | |
release: | |
if: ${{github.repository_owner == 'kernelkit' && github.ref_name == 'main'}} | |
name: Upload Latest Build | |
needs: test | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: "artifact-*" | |
merge-multiple: true | |
- name: Create checksums ... | |
run: | | |
for file in *.tar.gz; do | |
sha256sum $file > $file.sha256 | |
done | |
- uses: ncipollo/release-action@v1 | |
with: | |
allowUpdates: true | |
omitName: true | |
omitBody: true | |
omitBodyDuringUpdate: true | |
prerelease: true | |
tag: "latest" | |
token: ${{ secrets.GITHUB_TOKEN }} | |
artifacts: "*.tar.gz*" | |
- name: Summary | |
run: | | |
cat <<EOF >> $GITHUB_STEP_SUMMARY | |
# Latest Build Complete! :rocket: | |
For the public download links of these build artifacts, please see: | |
<https://github.com/kernelkit/infix/releases/tag/latest> | |
EOF |