Skip to content

modules: wgkex loadbalancing with ffmuc-mesh-vpn #507

modules: wgkex loadbalancing with ffmuc-mesh-vpn

modules: wgkex loadbalancing with ffmuc-mesh-vpn #507

Workflow file for this run

name: Build ffmuc firmware
on:
workflow_dispatch:
push:
tags:
- v*
pull_request:
paths-ignore:
- '**.md'
- '**/CODEOWNERS'
- '.github/ISSUE_TEMPLATE'
- '.github/*.yml'
- '.github/workflows/backport.yml'
- 'contrib/sign.sh'
jobs:
generate_target_matrix:
runs-on: ubuntu-latest
outputs:
target_json: ${{ steps.set_target.outputs.target }}
build_target_json: ${{ steps.set_target.outputs.build_target }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set target matrix
id: set_target
shell: bash
run: |
target_list=$(cat targets | jq -Rsc '.[:-1] | split("\n")')
echo "target={\"target\": $(echo $target_list)}" >> $GITHUB_OUTPUT
echo "build_target={\"target\": $(echo $target_list)}" >> $GITHUB_OUTPUT
build_firmware:
needs: generate_target_matrix
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.generate_target_matrix.outputs.build_target_json) }}
runs-on: ubuntu-latest
steps:
- name: Maximize build space
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install build dependencies
run: |
sudo -E ./scripts/install_build_dependencies.sh
- name: pre-build without ffmuc-mesh-vpn-wireguard-vxlan (workaround for x86-64)
if: matrix.target == 'x86-64'
run: |
sed -i '/ffmuc-mesh-vpn-wireguard-vxlan/d' site.mk
make BROKEN=1 GLUON_TARGETS=${{ matrix.target }} V=s
git checkout site.mk
- name: build target ${{ matrix.target }}
id: compile
run: |
git checkout -b patched ${GITHUB_SHA}
make BROKEN=1 GLUON_TARGETS=${{ matrix.target }} V=s
echo "status=success" >> $GITHUB_OUTPUT
- name: Upload firmware ${{ matrix.target }}
uses: actions/upload-artifact@v4
if: steps.compile.outputs.status == 'success'
with:
name: ${{ matrix.target }}_output
path: ./output
create_release:
runs-on: ubuntu-latest
needs:
- build_firmware
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
- name: Display structure of artifacts
run: ls -R
- name: Create tar.gz files
run: |
set -x
for output in *_output; do
tar zcvf "${output}.tar.gz" "${output}"
done
- name: Create Release & Upload Release Assets
uses: softprops/action-gh-release@v2
with:
# Note: If there is no release name specified, releases created in
# the GitHub UI do not trigger a failure and are modified instead.
draft: false
prerelease: false
# Note: Release notes are only auto-generated if the release was
# created by the Github Action and was not created in the Github UI.
generate_release_notes: true
files: |
./*_output.tar.gz