Bob the Builder #510
Workflow file for this run
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: | |
- 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: 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 |