mirror of
https://github.com/Dichgrem/luci-app-nyn.git
synced 2026-02-05 03:01:56 -05:00
173 lines
5.7 KiB
YAML
173 lines
5.7 KiB
YAML
name: Build luci-app-zzz
|
||
|
||
on:
|
||
workflow_dispatch:
|
||
inputs:
|
||
ramips:
|
||
description: 'ramips'
|
||
required: false
|
||
type: boolean
|
||
default: true
|
||
filogic:
|
||
description: 'filogic'
|
||
required: false
|
||
type: boolean
|
||
default: true
|
||
x86_64:
|
||
description: 'x86_64'
|
||
required: false
|
||
type: boolean
|
||
default: true
|
||
|
||
jobs:
|
||
matrix-setup:
|
||
runs-on: ubuntu-latest
|
||
outputs:
|
||
architectures: ${{ steps.set-matrix.outputs.architectures }}
|
||
steps:
|
||
- name: Set matrix
|
||
id: set-matrix
|
||
run: |
|
||
ARCHS='['
|
||
if [ "${{ inputs.ramips }}" == "true" ]; then
|
||
ARCHS=$ARCHS'"ramips",'
|
||
fi
|
||
if [ "${{ inputs.filogic }}" == "true" ]; then
|
||
ARCHS=$ARCHS'"filogic",'
|
||
fi
|
||
if [ "${{ inputs.x86_64 }}" == "true" ]; then
|
||
ARCHS=$ARCHS'"x86_64",'
|
||
fi
|
||
ARCHS=${ARCHS%,}
|
||
ARCHS=$ARCHS']'
|
||
echo "architectures=$ARCHS" >> $GITHUB_OUTPUT
|
||
echo "Selected architectures: $ARCHS"
|
||
|
||
build:
|
||
needs: matrix-setup
|
||
if: needs.matrix-setup.outputs.architectures != '[]'
|
||
runs-on: ubuntu-latest
|
||
strategy:
|
||
fail-fast: false
|
||
matrix:
|
||
sdk: ${{ fromJson(needs.matrix-setup.outputs.architectures) }}
|
||
|
||
env:
|
||
RAMIPS_URL: https://downloads.immortalwrt.org/releases/24.10.3/targets/ramips/mt7621/immortalwrt-sdk-24.10.3-ramips-mt7621_gcc-13.3.0_musl.Linux-x86_64.tar.zst
|
||
FILOGIC_URL: https://downloads.immortalwrt.org/releases/24.10.3/targets/mediatek/filogic/immortalwrt-sdk-24.10.3-mediatek-filogic_gcc-13.3.0_musl.Linux-x86_64.tar.zst
|
||
X86_URL: https://downloads.immortalwrt.org/releases/24.10.3/targets/x86/64/immortalwrt-sdk-24.10.3-x86-64_gcc-13.3.0_musl.Linux-x86_64.tar.zst
|
||
WORK_ROOT: ${{ github.workspace }}/imwrt-sdk
|
||
steps:
|
||
- name: Checkout
|
||
uses: actions/checkout@v4
|
||
|
||
- name: Install dependencies
|
||
run: |
|
||
echo "👉 正在下载依赖项"
|
||
sudo apt-get update
|
||
sudo apt-get install -y build-essential git wget python3 rsync zstd g++ make libncurses-dev
|
||
echo "✅ 下载完毕"
|
||
|
||
- name: Set SDK variables
|
||
run: |
|
||
if [ "${{ matrix.sdk }}" == "ramips" ]; then
|
||
echo "SDK_URL=${{ env.RAMIPS_URL }}" >> $GITHUB_ENV
|
||
echo "PACKAGE_ARCH=ramips" >> $GITHUB_ENV
|
||
elif [ "${{ matrix.sdk }}" == "filogic" ]; then
|
||
echo "SDK_URL=${{ env.FILOGIC_URL }}" >> $GITHUB_ENV
|
||
echo "PACKAGE_ARCH=aarch64_cortex-a53" >> $GITHUB_ENV
|
||
else
|
||
echo "SDK_URL=${{ env.X86_URL }}" >> $GITHUB_ENV
|
||
echo "PACKAGE_ARCH=x86_64" >> $GITHUB_ENV
|
||
fi
|
||
|
||
- name: Show build target
|
||
run: |
|
||
echo "👉 正在编译 ${{ matrix.sdk }} 架构 (${{ env.PACKAGE_ARCH }})"
|
||
|
||
- name: Download & extract SDK
|
||
run: |
|
||
set -euo pipefail
|
||
mkdir -p "$WORK_ROOT"
|
||
cd "$WORK_ROOT"
|
||
|
||
SDK_TAR="$(basename "$SDK_URL")"
|
||
echo "👉 正在下载SDK:$SDK_TAR"
|
||
wget -q "$SDK_URL" -O "$SDK_TAR"
|
||
|
||
echo "📦 正在解压SDK..."
|
||
tar --use-compress-program="zstd -q -d" -xf "$SDK_TAR" >/dev/null 2>&1
|
||
|
||
echo "✅ SDK解压完成"
|
||
SDK_ROOT="$(find . -maxdepth 1 -type d -name 'immortalwrt-sdk*' | head -n 1)"
|
||
if [ -z "$SDK_ROOT" ]; then
|
||
echo "❌ 未找到SDK目录" >&2
|
||
exit 1
|
||
fi
|
||
SDK_ROOT="$(cd "$SDK_ROOT" && pwd)"
|
||
echo "SDK_ROOT=$SDK_ROOT" >> $GITHUB_ENV
|
||
echo "📁 SDK路径: $SDK_ROOT"
|
||
|
||
- name: Setup feeds & clone source
|
||
run: |
|
||
set -euo pipefail
|
||
cd "$SDK_ROOT"
|
||
echo "👉 正在设置feeds"
|
||
./scripts/feeds update -a
|
||
./scripts/feeds update luci || true
|
||
./scripts/feeds install -a -p luci || ./scripts/feeds install luci || true
|
||
echo "✅ feeds下载完毕"
|
||
cd package
|
||
git clone https://github.com/Dichgrem/luci-app-nyn.git
|
||
cp -r luci-app-nyn/luci-app-zzz . 2>/dev/null || true
|
||
cp -r luci-app-nyn/zzz . 2>/dev/null || true
|
||
rm -rf luci-app-nyn
|
||
|
||
- name: Build luci-app-zzz
|
||
run: |
|
||
set -euo pipefail
|
||
cd "$SDK_ROOT"
|
||
make defconfig
|
||
echo "👉 正在编译中"
|
||
make package/luci-app-zzz/compile V=s
|
||
echo "✅ 编译完成"
|
||
|
||
- name: Collect packages
|
||
run: |
|
||
set -euo pipefail
|
||
SDK_ROOT="$SDK_ROOT"
|
||
OUT="$GITHUB_WORKSPACE/output"
|
||
mkdir -p "$OUT"
|
||
|
||
echo "🔍 自动检测 SDK 包架构目录..."
|
||
BASE_DIR=$(find "$SDK_ROOT/bin/packages" -type d -path "*/base" | head -n1 || true)
|
||
if [ -z "$BASE_DIR" ]; then
|
||
echo "❌ 未找到 base 目录" >&2
|
||
ls -R "$SDK_ROOT/bin/packages" || true
|
||
exit 1
|
||
fi
|
||
|
||
echo "📦 从: $BASE_DIR 收集 luci-app-zzz 与 zzz 包..."
|
||
ls -lah "$BASE_DIR" || true
|
||
|
||
cp -v "$BASE_DIR"/*luci-app-zzz*.ipk "$OUT"/ 2>/dev/null || true
|
||
cp -v "$BASE_DIR"/*zzz*.ipk "$OUT"/ 2>/dev/null || true
|
||
|
||
echo "✅ 收集完成,输出目录内容:"
|
||
ls -lah "$OUT"
|
||
shell: bash
|
||
|
||
- name: Upload package luci-app-zzz
|
||
uses: actions/upload-artifact@v4
|
||
with:
|
||
name: luci-app-zzz-${{ matrix.sdk }}
|
||
path: output/*luci-app-zzz*.ipk
|
||
if-no-files-found: error
|
||
|
||
- name: Upload package zzz
|
||
uses: actions/upload-artifact@v4
|
||
with:
|
||
name: zzz-${{ matrix.sdk }}
|
||
path: output/*zzz*.ipk
|
||
if-no-files-found: error
|