Skip to content

编译固件

编译固件 #104

Workflow file for this run

#
# 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
#
# 优化调整 by https://github.com/quanjindeng/Actions_OpenWrt-Amlogic
#
name: 编译固件
on:
repository_dispatch:
workflow_dispatch:
schedule:
- cron: 0 16 * * 4
env:
REPO_URL: https://github.com/coolsnowwolf/lede
REPO_BRANCH: master
FEEDS_CONF: feeds.conf.default
CONFIG_FILE: .config-full
DIY_P1_SH: diy-part1.sh
DIY_P2_SH: diy-part2.sh
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: 4096
swap-size-mb: 1024
temp-reserve-mb: 200
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 apt-get update -y
sudo apt-get full-upgrade -y
sudo apt-get 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 \
mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \
libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \
vim wget xmlto xxd zlib1g-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: |
git clone $REPO_URL -b $REPO_BRANCH openwrt
ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt
- name: 加载自定义feeds
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: 加载自定义配置
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/ && sync
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: deng
OPENWRT_ARMVIRT: openwrt-armvirt/*.tar.gz
PACKAGE_SOC: s905d
# KERNEL_AUTO_LATEST: false
# KERNEL_REPO_URL: https://github.com/quanjindeng/Actions_OpenWrt-Amlogic/tree/main/kernel
KERNEL_VERSION_NAME: 5.15.105_6.6.1
- name: 整理文件
run: mv /opt/openwrt_packit/output/* /workdir/upload/
- name: 发布固件
uses: ncipollo/release-action@v1
with:
tag: openwrt_armvirt_v8_${{ env.PACKAGED_OUTPUTDATE }}
artifacts: /workdir/upload/*
allowUpdates: true
token: ${{ secrets.GITHUB_TOKEN }}
body: |
### **适用于Amlogic平台的N1盒子OpenWrt固件--全插件**
* **固件信息:**
默认IP: `10.10.10.1`
默认用户名: `root`
默认密码: `password`
* **使用方法:**
1. 安装固件:写入U盘直接使用;U盘启动后可输入命令 `openwrt-install-amlogic` 按照英文提示写入到emmc
2. 更新固件:将固件放在 `/mnt/mmcblk2p4/` 目录下,输入命令 `openwrt-update-amlogic` 可直接更新
3. 登录Luci界面后,可直接使用`晶晨宝盒`插件进行写入emmc或者更新操作(使用前先按需求填写好插件设置),免去手动输入命令!
* **更新说明:**
目前已集成大部分常用插件!
* **N1云编译OP固件互助交流群:**
https://t.me/OpenWrt_n1
* **提示:**
`openwrt_s905d_n1_XX_XX` 文件名才是固件!
- name: 清理Actions空间
uses: Mattraks/delete-workflow-runs@main
with:
token: ${{ secrets.GITHUB_TOKEN }}
repository: ${{ github.repository }}
keep_minimum_runs: 0
retain_days: 7
#retain_days: ${{ github.event.inputs.action_days }}
- name: 删除多余releases
uses: dev-drprasad/delete-older-releases@master
with:
repo: ${{ github.repository }}
keep_latest: 6
#keep_latest: ${{ github.event.inputs.rele }}
delete_tags: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}