diff --git a/.github/workflows/build-zzz.yml b/.github/workflows/build-zzz.yml new file mode 100644 index 0000000..b577d0d --- /dev/null +++ b/.github/workflows/build-zzz.yml @@ -0,0 +1,131 @@ +name: Build luci-app-zzz + +on: + workflow_dispatch: + inputs: + sdk: + description: '选择架构' + required: true + type: choice + options: + - filogic + - x86_64 + default: filogic + +env: + FILOGIC_SDK_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_SDK_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 + +jobs: + build: + runs-on: ubuntu-latest + 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: Resolve SDK choice + id: vars + run: | + if [ "${{ github.event.inputs.sdk }}" = "x86_64" ]; then + echo "SDK_URL=${X86_SDK_URL}" >> $GITHUB_ENV + echo "PACKAGE_ARCH=x86_64" >> $GITHUB_ENV + echo "👉 选择x86_64架构" + else + echo "SDK_URL=${FILOGIC_SDK_URL}" >> $GITHUB_ENV + echo "PACKAGE_ARCH=aarch64_cortex-a53" >> $GITHUB_ENV + echo "👉 选择aarch64架构" + fi + echo "WORK_ROOT=$GITHUB_WORKSPACE/imwrt-sdk" >> $GITHUB_ENV + + - 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 one + uses: actions/upload-artifact@v4 + with: + name: luci-app-zzz + path: output/*luci-app-zzz*.ipk + if-no-files-found: error + + - name: Upload package two + uses: actions/upload-artifact@v4 + with: + name: zzz + path: output/*zzz*.ipk + if-no-files-found: error \ No newline at end of file