Skip to content

2025-23.05-diy

2025-23.05-diy #1

#
# Copyright (c) 2019-2020 P3TERX <https://p3terx.com>
#
# This is free software, licensed under the MIT License.
# See /LICENSE for more information.
#
# https://github.com/P3TERX/Actions-OpenWrt
# Description: Build OpenWrt using GitHub Actions
#
name: 2025-23.05-diy
on:
repository_dispatch:
workflow_dispatch:
#schedule:
#- cron: 0 16 * * 4
env:
REPO_URL: https://github.com/coolsnowwolf/lede
REPO_BRANCH: master
FEEDS_CONF: N1/2305-feeds.conf.default
CONFIG_FILE: N1/2024-0407.config
DIY_P1_SH: diy-part1.sh
DIY_P2_SH: diy-part2.sh
FILES: N1/files
TZ: Asia/Shanghai
jobs:
build:
runs-on: ubuntu-22.04
steps:
- name: 创建编译空间挂载点
run: |
sudo mkdir -p /workdir
sudo chown $USER:$GROUPS /workdir
- name: 最大化编译空间
uses: easimon/maximize-build-space@master
with:
root-reserve-mb: 2048
swap-size-mb: 1024
build-mount-path: /workdir
overprovision-lvm: 'true'
remove-dotnet: 'true'
remove-android: 'true'
remove-haskell: 'true'
remove-codeql: 'true'
remove-docker-images: 'true'
- name: 检查Actions
uses: actions/checkout@v4
- name: 检查服务器配置
run: |
echo "警告⚠"
echo "分配的服务器性能有限,若选择的插件过多,务必注意CPU性能!"
echo "云编译建议取消勾选Node.js及其相关插件!"
echo "已知CPU型号(降序):8370C,8272CL,8171M,E5系列"
echo "--------------------------CPU信息--------------------------"
echo "CPU物理数量:$(cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l)"
echo -e "CPU核心及版本信息:$(cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c) \n"
echo "--------------------------内存信息--------------------------"
echo "已安装内存详细信息:"
sudo lshw -short -C memory | grep GiB
echo -e "\n"
echo "--------------------------硬盘信息--------------------------"
echo -e "硬盘数量:$(ls /dev/sd* | grep -v [1-9] | wc -l) \n"
echo "硬盘详情:"
df -Th
- name: 初始化编译环境
env:
DEBIAN_FRONTEND: noninteractive
run: |
sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc
sudo -E apt-get -qq update -y
sudo -E apt-get -qq install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
genisoimage msmtp nano ninja-build npm p7zip p7zip-full patch pkgconf python2.7 python3 python3-pip qemu-utils \
rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev libfuse-dev
sudo -E apt-get -qq autoremove --purge
sudo -E apt-get -qq clean
sudo timedatectl set-timezone "$TZ"
echo "硬盘详情:"
df -Th
- name: 克隆源码
working-directory: /workdir
run: |
df -hT $PWD
git clone $REPO_URL -b $REPO_BRANCH openwrt
ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt
cd openwrt
useVersionInfo=$(git show -s --date=short --format="date: %cd<br/>commit: %s<br/>commit hash: %H")
echo "useVersionInfo=$useVersionInfo" >> $GITHUB_ENV
echo "DATE=$(date "+%Y-%m-%d %H:%M:%S")" >> $GITHUB_ENV
echo "tag_name=$(date +%Y%m%d)" >> $GITHUB_ENV
- name: 加载DIY_P1
run: |
[ -e $FEEDS_CONF ] && mv $FEEDS_CONF openwrt/feeds.conf.default
chmod +x $DIY_P1_SH
cd openwrt
$GITHUB_WORKSPACE/$DIY_P1_SH
- name: 更新feeds
run: cd openwrt && ./scripts/feeds update -a
- name: 安装feeds
run: cd openwrt && ./scripts/feeds install -a
- name: 加载DIY_P2
run: |
[ -e files ] && mv files openwrt/files
[ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config
chmod +x $DIY_P2_SH
cd openwrt
$GITHUB_WORKSPACE/$DIY_P2_SH
- name: 下载软件包
id: package
run: |
cd openwrt
make defconfig
make download -j8
find dl -size -1024c -exec ls -l {} \;
find dl -size -1024c -exec rm -f {} \;
echo "硬盘详情:"
df -Th
- name: 编译固件
id: compile
run: |
cd openwrt
echo -e "$(nproc) thread compile"
make -j$(nproc) || make -j1 || make -j1 V=s
echo "status=success" >> $GITHUB_OUTPUT
grep '^CONFIG_TARGET.*DEVICE.*=y' .config | sed -r 's/.*DEVICE_(.*)=y/\1/' > DEVICE_NAME
[ -s DEVICE_NAME ] && echo "DEVICE_NAME=_$(cat DEVICE_NAME)" >> $GITHUB_ENV
echo "FILE_DATE=_$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV
- name: 清理磁盘空间
if: (!cancelled())
run: |
echo "清理之前:"
df -hT
mkdir openwrt-armvirt
mkdir /workdir/upload
cp openwrt/bin/targets/*/*/*.tar.gz /workdir/upload/
mv openwrt/bin/targets/*/*/*.tar.gz openwrt-armvirt/
echo -e "\n"
echo "列出空间占用前10的目录或文件:"
sudo du -h --max-depth=1 /workdir |sort -nr | head -10
rm -rf /workdir/openwrt/
echo -e "\n"
echo "清理之后:"
df -hT
echo -e "\n"
echo "/workdir路径文件"
ls -l
echo -e "\n"
echo "列出空间占用前10的目录或文件:"
sudo du -h --max-depth=1 /workdir |sort -nr | head -10
- name: 打包内核
uses: unifreq/openwrt_packit@master
env:
WHOAMI: ham
# OPENWRT_VER: R23.7.7
OPENWRT_ARMVIRT: openwrt-armvirt/*.tar.gz
PACKAGE_SOC: s905d
KERNEL_AUTO_LATEST: true
# KERNEL_REPO_URL: https://github.com/ham0223/OpenWRT-N1/tree/main/opt
KERNEL_REPO_URL: breakingbadboy/OpenWrt
KERNEL_VERSION_NAME: 6.6.y
GH_TOKEN: ${{ secrets.GH_TOKEN }}
- name: 整理文件
run: mv /opt/openwrt_packit/output/* /workdir/upload/
- name: 发布固件
uses: ncipollo/release-action@v1
with:
name: OpenWrt-N1 → ${{ env.DATE }}
tag: N1-2305_${{ env.tag_name }}
artifacts: /workdir/upload/*
allowUpdates: true
token: ${{ secrets.GITHUB_TOKEN }}
body: |
--- 使用说明 ---
网关:192.168.123.2
用户名:root
密码:password
更新说明:
2025-0227:测试diy目录是否成功。
- name: 清理Actions空间
uses: Mattraks/delete-workflow-runs@main
with:
token: ${{ secrets.GITHUB_TOKEN }}
repository: ${{ github.repository }}
keep_minimum_runs: 0
retain_days: 15
#retain_days: ${{ github.event.inputs.action_days }}