Skip to content

编译固件(iStore) #21

编译固件(iStore)

编译固件(iStore) #21

#
# 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: 编译固件(iStore)
on:
repository_dispatch:
workflow_dispatch:
schedule:
- cron: 0 16 15,28 * *
env:
REPO_URL: https://github.com/coolsnowwolf/lede
REPO_BRANCH: master
FEEDS_CONF: feeds.conf.default
CONFIG_FILE: .config-istore
DIY_P1_SH: diy-part1.sh
DIY_P2_SH: diy-part2-istore.sh
TZ: Asia/Shanghai
jobs:
build:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
- 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 apt update -y
sudo apt full-upgrade -y
sudo apt 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"
sudo mkdir -p /workdir
sudo chown $USER:$GROUPS /workdir
# 清理多余文件,腾出磁盘空间
#docker rmi `docker images -q`
#sudo -E apt-get remove -y --purge azure-cli ghc zulu* llvm* firefox google* dotnet* powershell mysql* php* android*
#sudo rm -rf /etc/mysql /etc/php /swapfile
- name: 克隆源码
working-directory: /workdir
run: |
df -hT $PWD
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 {} \;
- 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
mv openwrt/bin/targets/*/*/*.tar.gz openwrt-armvirt/
echo -e "\n"
echo "列出空间占用前10的目录或文件:"
sudo du -h --max-depth=1 /workdir/openwrt |sort -nr | head -10
rm -rf /workdir/openwrt/* && sync
echo -e "\n"
echo "清理之后:"
df -hT
echo -e "\n"
echo "当前路径文件"
ls -l
echo -e "\n"
echo "列出空间占用前10的目录或文件:"
sudo du -h --max-depth=1 /workdir/openwrt |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: 发布固件
uses: ncipollo/release-action@v1
with:
tag: openwrt_armvirt_iStore_${{ env.PACKAGED_OUTPUTDATE }}
artifacts: ${{ env.PACKAGED_OUTPUTPATH }}/*
allowUpdates: true
token: ${{ secrets.GITHUB_TOKEN }}
body: |
### **适用于Amlogic平台的N1盒子OpenWrt固件--精简版(含iStore插件)**
* **固件信息:**
默认IP: `10.10.10.1`
默认用户名: `root`
默认密码: `password`
* **使用方法:**
1. 安装固件:写入U盘直接使用;U盘启动后可输入命令 `openwrt-install-amlogic` 按照英文提示写入到emmc
2. 更新固件:将固件放在 `/mnt/mmcblk2p4/` 目录下,输入命令 `openwrt-update-amlogic` 可直接更新
3. 登录Luci界面后,可直接使用`晶晨宝盒`插件进行写入emmc或者更新操作(使用前先按需求填写好插件设置),免去手动输入命令!
* **更新说明:**
精简版(含iStore插件)!
* **N1云编译OP固件互助交流群:**
https://t.me/OpenWrt_n1
* **提示:**
建议自行添加iStore的软件源,并在软件源配置里禁用`# option check_signature`,之后刷新一下软件列表
自定义软件源:
`src/gz is_nas_luci https://istore.linkease.com/repo/all/nas_luci`
`src/gz is_store https://istore.linkease.com/repo/all/store`
固件升级后不会保留自行安装的插件,注意使用iStore插件备份!
固件更新频率:`每月一次`
- 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: 5
#keep_latest: ${{ github.event.inputs.rele }}
delete_tags: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}