Build OpenWrt for BananaPI BPI-R4 and upload to releases #10
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: 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: 5 | |
delete_tags: true | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |