Skip to content

Update firmware.yml

Update firmware.yml #5

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: make dirs
run: mkdir -p logs gluon-build output test
- name: build docker image
run: docker build -t site-ffm -f Dockerfile_build .
- name: build target ${{ matrix.target }}
id: compile
run: |
docker run --rm -v $(pwd):/site-ffm:ro -v $(pwd)/gluon-build:/site-ffm/gluon-build:rw -v $(pwd)/output:/site-ffm/output:rw -w /site-ffm -u $UID site-ffm make V=s GLUON_TARGETS=${{ matrix.target }} |& tee logs/build_${{ matrix.target }}_$(date --iso=s | sed 's/:/-/g').log
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
- name: Upload firmware ${{ matrix.target }} logs
uses: actions/upload-artifact@v4
if: steps.compile.outputs.status == 'success'
with:
name: ${{ matrix.target }}_logs
path: ./logs
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
for logs in *_logs; do
tar zcvf "${logs}.tar.gz" "${logs}"
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
./*_logs.tar.gz