.github: sudo make me a build directory #309
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: | |
push: | |
branches: | |
- main | |
workflow_dispatch: | |
jobs: | |
build: | |
name: Build ${{ matrix.platform }} ${{ matrix.variant }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
platform: [aarch64, x86_64] | |
variant: [netconf] | |
fail-fast: false | |
steps: | |
- name: Maintenance | |
run: | | |
docker image prune -af | |
docker volume prune -f | |
docker container prune -f | |
- uses: actions/checkout@v4 | |
- name: Set Build Variables | |
id: vars | |
run: | | |
if [ "${{ matrix.variant }}" = "netconf" ]; then | |
target=${{ matrix.platform }} | |
else | |
target=${{ matrix.platform }}-${{ matrix.variant }} | |
fi | |
echo "dir=infix-$target" >> $GITHUB_OUTPUT | |
echo "out=/mnt/$dir" >> $GITHUB_OUTPUT | |
echo "tgz=infix-$target.tar.gz" >> $GITHUB_OUTPUT | |
- name: Restore Cache of dl/ | |
uses: actions/cache@v4 | |
with: | |
path: dl/ | |
key: dl-${{ matrix.variant }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'configs/*', 'package/*/*.hash') }} | |
restore-keys: | | |
dl-${{ matrix.variant }}- | |
dl- | |
- name: Restore Cache of .ccache/ | |
uses: actions/cache@v4 | |
with: | |
path: .ccache/ | |
key: ccache-${{ matrix.platform }}-${{ hashFiles('.git/modules/buildroot/HEAD', 'package/*/*.hash') }} | |
restore-keys: | | |
ccache-${{ matrix.platform }}- | |
ccache- | |
- name: Configure & Build | |
run: | | |
if [ "${{ matrix.variant }}" = "netconf" ]; then | |
target=${{ matrix.platform }}_defconfig | |
else | |
target=${{ matrix.platform }}_${{ matrix.variant }}_defconfig | |
fi | |
echo "Building $target ..." | |
sudo mkdir ${{ steps.vars.outputs.out }} | |
sudo chown $(id -un):$(id -gn) ${{ steps.vars.outputs.out }} | |
export O=${{ steps.vars.outputs.out }} | |
make $target | |
make | |
- name: Prepare Artifact | |
run: | | |
cd ${{ steps.vars.outputs.out }} | |
mv images ${{ steps.vars.outputs.dir }} | |
ln -s ${{ steps.vars.outputs.dir }} images | |
tar chfz ${{ steps.vars.outputs.tgz }} ${{ steps.vars.outputs.dir }} | |
- name: Test | |
if: matrix.platform == 'x86_64' && matrix.variant == 'netconf' | |
run: | | |
export O=${{ steps.vars.outputs.out }} | |
make test-qeneth | |
- uses: actions/upload-artifact@v4 | |
with: | |
path: ${{ steps.vars.outputs.out }}/${{ steps.vars.outputs.tgz }} | |
name: artifact-${{ matrix.variant }}-${{ matrix.platform }} | |
release: | |
if: ${{github.repository_owner == 'kernelkit' && github.ref_name == 'main'}} | |
name: Upload Latest Build | |
needs: build | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: "artifact-*" | |
merge-multiple: true | |
- uses: ncipollo/release-action@v1 | |
with: | |
allowUpdates: true | |
omitName: true | |
omitBody: true | |
omitBodyDuringUpdate: true | |
prerelease: true | |
tag: "latest" | |
token: ${{ secrets.GITHUB_TOKEN }} | |
artifacts: "artifact/*" | |
- 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 |