Skip to content

Immortalwrt Builder #13

Immortalwrt Builder

Immortalwrt Builder #13

#
# https://github.com/P3TERX/Actions-OpenWrt
#
# File: .github/workflows/openwrt-builder.yml
# Description: Build OpenWrt using GitHub Actions
#
# Copyright (c) 2019-2024 P3TERX <https://p3terx.com>
#
# This is free software, licensed under the MIT License.
# See /LICENSE for more information.
#
name: Immortalwrt Builder
on:
repository_dispatch:
workflow_dispatch:
schedule:
- cron: '0 16 1 * *'
env:
REPO_URL: https://github.com/immortalwrt/immortalwrt
REPO_BRANCH: openwrt-23.05
FEEDS_CONF: feeds.conf.default
CONFIG_FILE: immortalwrt.config
DIY_P1_SH: scripts/diy-part1.sh
DIY_P2_SH: scripts/diy-part2.sh
ENV_SH: scripts/environment.sh
FREE_DISK_SH: scripts/free_disk_space.sh
PATCHES_DIR: patches
UPLOAD_RELEASE: true
TZ: Asia/Shanghai
jobs:
build:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Initialization environment
env:
DEBIAN_FRONTEND: noninteractive
run: |
chmod +x ${{ env.FREE_DISK_SH }} && ${{ env.FREE_DISK_SH }} # Use env reference
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc
sudo apt-get -qq update -y
sudo apt-get -qq full-upgrade -y
chmod +x ${{ env.ENV_SH }} && ${{ env.ENV_SH }} # Use env reference
sudo mkdir -p /workdir
sudo chown $USER:$GROUPS /workdir
- name: Clone source code
working-directory: /workdir
run: |
df -hT $PWD
git clone ${{ env.REPO_URL }} -b ${{ env.REPO_BRANCH }} openwrt
ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt
- name: Cache
uses: klever1988/cachewrtbuild@main
with:
ccache: 'true'
mixkey: 'armv8_immortalwrt'
prefix: ${{ github.workspace }}/openwrt
- name: Patch
run: |
cp 999-rk3328-orangepi-r1-plus-lts.patch openwrt/target/linux/rockchip/patches-5.15/999-rk3328-orangepi-r1-plus-lts.patch
if [ -e "${{ env.PATCHES_DIR }}" ]; then
rm -f "${{ env.PATCHES_DIR }}"/*999-rk3328-orangepi-r1-plus-lts-patch.patch
mv "${{ env.PATCHES_DIR }}" openwrt/patches
cd openwrt
git apply --ignore-whitespace patches/*.patch
rm -rf patches
fi
- name: Load custom feeds
run: |
if [ -e $FEEDS_CONF ]; then
echo "Using custom feeds configuration from $FEEDS_CONF..."
mv $FEEDS_CONF openwrt/feeds.conf.default
fi
- name: Update & Install feeds
run: |
cd openwrt
./scripts/feeds update -a
rm -rf feeds/packages/lang/golang
git clone https://github.com/kenzok8/golang feeds/packages/lang/golang
./scripts/feeds install -a
- name: Load custom configuration
run: |
[ -e files ] && mv files openwrt/files
[ -e ${{ env.CONFIG_FILE }} ] && mv ${{ env.CONFIG_FILE }} openwrt/.config
chmod +x ${{ env.DIY_P2_SH }}
cd openwrt
$GITHUB_WORKSPACE/${{ env.DIY_P2_SH }}
- name: Download package
id: package
run: |
cd openwrt
make defconfig
make download -j8
find dl -size -1024c -exec ls -l {} \;
find dl -size -1024c -exec rm -f {} \;
- name: Compile the firmware
id: compile
run: |
cd openwrt
echo -e "$(nproc) thread compile"
make -j$(nproc) || make -j1 || make -j1 V=s
echo "status=success" >> $GITHUB_OUTPUT
- name: Check space usage
if: (!cancelled())
run: df -hT
- name: Organize files
id: organize
if: steps.compile.outputs.status == 'success' && !cancelled()
run: |
cd openwrt/bin/targets/*/*
rm -rf packages
echo "FIRMWARE=$PWD" >> $GITHUB_ENV
echo "status=success" >> $GITHUB_OUTPUT
- name: Generate release tag
id: tag
if: steps.compile.outputs.status == 'success' && env.UPLOAD_RELEASE == 'true' && !cancelled()
run: |
echo "release_tag=immortalwrt-$(date +"%Y.%m.%d-%H%M")" >> $GITHUB_OUTPUT
touch release.txt
echo -e "✅ orangepi-r1-plus-lts \n 🍃 cpu频率:1.5G" >> release.txt
echo "status=success" >> $GITHUB_OUTPUT
- name: Upload firmware to release
uses: softprops/action-gh-release@v1 # Use a stable version
if: steps.tag.outputs.status == 'success' && !cancelled()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.tag.outputs.release_tag }}
body_path: release.txt
files: ${{ env.FIRMWARE }}/*
- name: Delete workflow runs
uses: Mattraks/delete-workflow-runs@main
with:
retain_days: 0
keep_minimum_runs: 2
- name: Remove old Releases
uses: dev-drprasad/delete-older-releases@master
if: env.UPLOAD_RELEASE == 'true' && !cancelled()
with:
keep_latest: 3
delete_tags: true
delete_tag_pattern: immortalwrt
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}