Skip to content

Build OpenWrt for BananaPI BPI-R4 and upload to releases #16

Build OpenWrt for BananaPI BPI-R4 and upload to releases

Build OpenWrt for BananaPI BPI-R4 and upload to releases #16

Workflow file for this run

name: Build OpenWrt for BananaPI BPI-R4 and upload to releases
on:
push:
tags:
- "v*"
workflow_dispatch:
env:
REMOTE_REPOSITORY: N-Storm/openwrt
REMOTE_BRANCH: bananapi4
CONFIG_FILE: config-nstorm-bananapi-bpi-r4
MTK_PPE_ENTRIES_SHIFT_PATCH: 999-01_32k_ppe.patch
PREFETCH_PATCH: 999-02_prefetch.patch
PP_XDP_PATCH: 999-03_pp_xdp.patch
CUSTOM_FILES_PATH: files/
RELEASE_PREFIX: nstorm-bpi-r4
jobs:
build:
name: Build OpenWrt
runs-on: ubuntu-24.04
steps:
- name: Install dependencies
run: |
sudo apt update
sudo apt full-upgrade -y
sudo apt install -y build-essential clang flex bison g++ gawk gcc-multilib g++-multilib gettext git libncurses5-dev libssl-dev python3-setuptools rsync swig unzip zlib1g-dev file wget jq
- name: Checkout remote repository
uses: actions/checkout@v4
with:
repository: ${{ env.REMOTE_REPOSITORY }}
ref: ${{ env.REMOTE_BRANCH }}
- name: Checkout current repository
uses: actions/checkout@v4
with:
path: "custom_repo"
- name: Update and install feeds
run: |
./scripts/feeds update -a
./scripts/feeds install -a
- name: Configure firmware image
run: |
cat ${{ env.CONFIG_FILE }} > .config
make defconfig
- name: Include custom files
run: |
mkdir -p ${{ env.CUSTOM_FILES_PATH }}
mv custom_repo/BPI-r4/${{ env.CUSTOM_FILES_PATH }}* ${{ env.CUSTOM_FILES_PATH }}
- name: Download dependencies
run: make -j$(($(nproc)+1)) download
- name: Build the firmware image
run: ntry=1; while [[ $ntry -le 3 ]]; do make -j$(($(nproc)+1)) world && ntry=5 || (( ntry++ )); [[ $ntry -eq 4 ]] && exit 255; true; done
- name: Package output
run: tar -cvf bpi_r4-images.tar bin/targets/mediatek/filogic
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: bpi_r4-images
path: bpi_r4-images.tar
release:
name: Create release
needs: [build]
if: needs.build.result == 'success'
runs-on: ubuntu-24.04
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: bpi_r4-images
- name: Extract artifacts
run: tar xf bpi_r4-images.tar
- name: Get current date and release version
run: |
echo "RELEASE_DATE=$(date +%F)" >> $GITHUB_ENV
echo -n "BUILD_VER_STR=$( cat bin/targets/mediatek/filogic/profiles.json | jq -r '.profiles.[].image_prefix' | sed -E 's/openwrt-(v24-snapshot-.*?-r[0-9]{2,3})-mediatek-filogic-bananapi_bpi-r4/\1/' )" >> $GITHUB_ENV
- name: Create release
uses: softprops/action-gh-release@master
with:
files: bin/targets/mediatek/filogic/*
prerelease: true
tag_name: ${{ env.RELEASE_PREFIX }}-${{ env.BUILD_VER_STR }}
name: (AUTO) NStorm-BPI-R4-${{ env.BUILD_VER_STR }}
body: |
(!) Automated and untested / experimental build.
Image version: NStorm-BPI-R4-${{ env.BUILD_VER_STR }}
Uploaded on: ${{ env.RELEASE_DATE }}
Build Commit: ${{ needs.check_commits.outputs.latest_commit_sha }}
- name: Clean up old releases
uses: dev-drprasad/delete-older-releases@master
with:
keep_latest: 30
delete_tags: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}