update 2026-10-30 01:55:00

This commit is contained in:
action committed 2026-10-30 01:55:00 +08:00
1 parent 95f76f26d3
commit 76e81abc86
178 files changed
+279 -38411

No files matched your search

+19 -106
View File
@@ -11,14 +11,19 @@ permissions:
contents: write
env:
TARGET: x86
SUBTARGET: '64'
PKG_DIR_NAME: luci-app-adguardhome
SDK_DIR: /builder
PKG_DIR_NAME: luci-app-adguardhome-tk
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 90
strategy:
matrix:
sdk: [x86-64-25.12.6]
container:
image: ghcr.io/openwrt/sdk:${{ matrix.sdk }}
options: --user root
defaults:
run:
shell: bash
@@ -29,121 +34,29 @@ jobs:
with:
fetch-depth: 0
- name: 安装依赖
run: |
sudo apt update
sudo apt install -y build-essential clang flex bison g++ gawk \
gcc-multilib g++-multilib gettext git libncurses-dev libssl-dev \
python3-setuptools rsync swig unzip zlib1g-dev file curl zstd jq
- name: 确定 SDK 版本
id: sdk
env:
GH_TOKEN: ${{ github.token }}
run: |
set -euo pipefail
RELEASE=$(
curl --fail --silent --show-error --location --retry 3 \
-H "Authorization: Bearer ${GH_TOKEN}" \
'https://api.github.com/repos/openwrt/openwrt/releases?per_page=100' \
| jq -r '.[] | select(.draft == false and .prerelease == false) | .tag_name
| select(test("^v25\\.12\\.[0-9]+$")) | ltrimstr("v")' \
| sort -V | tail -n 1
)
[[ -n "$RELEASE" ]] || { echo '::error::未找到 OpenWrt 25.12 正式版'; exit 1; }
BASE="https://downloads.openwrt.org/releases/${RELEASE}/targets/${TARGET}/${SUBTARGET}"
SDK_CACHE="${RUNNER_TEMP}/adguardhome-sdk-download"
mkdir -p "$SDK_CACHE"
curl -fSL --retry 3 "$BASE/sha256sums" -o "$RUNNER_TEMP/adguardhome-sdk-sha256sums"
SDK_TARBALL=$(awk '{ name=$2; sub(/^\*/, "", name); if (name ~ /^openwrt-sdk-.*\.tar\.zst$/) print name }' "$RUNNER_TEMP/adguardhome-sdk-sha256sums")
[[ -n "$SDK_TARBALL" && "$SDK_TARBALL" != *$'\n'* && "$SDK_TARBALL" != */* ]] || {
echo '::error::无法唯一确定 SDK 文件'; exit 1;
}
SDK_SHA=$(awk -v name="$SDK_TARBALL" '{ file=$2; sub(/^\*/, "", file); if (file == name) print $1 }' "$RUNNER_TEMP/adguardhome-sdk-sha256sums")
[[ "$SDK_SHA" =~ ^[0-9a-f]{64}$ ]]
echo "sha256=$SDK_SHA" >> "$GITHUB_OUTPUT"
echo "SDK_URL=$BASE/$SDK_TARBALL" >> "$GITHUB_ENV"
echo "SDK_TARBALL=$SDK_TARBALL" >> "$GITHUB_ENV"
echo "SDK_SHA=$SDK_SHA" >> "$GITHUB_ENV"
echo "OpenWrt SDK: ${RELEASE}" >> "$GITHUB_STEP_SUMMARY"
- name: 缓存 SDK 压缩包
uses: actions/cache@v5
with:
path: ${{ runner.temp }}/adguardhome-sdk-download
key: adguardhome-sdk-v1-${{ runner.os }}-${{ env.TARGET }}-${{ env.SUBTARGET }}-${{ steps.sdk.outputs.sha256 }}
- name: 校验并解压 SDK
run: |
set -euo pipefail
SDK_CACHE="${RUNNER_TEMP}/adguardhome-sdk-download"
SDK_ROOT="${RUNNER_TEMP}/adguardhome-sdk"
mkdir -p "$SDK_CACHE" "$SDK_ROOT"
cd "$SDK_CACHE"
# 缓存命中也校验官方摘要;缺失或损坏时重新下载。
if ! printf '%s %s\n' "$SDK_SHA" "$SDK_TARBALL" | sha256sum -c -; then
curl -fSL --retry 3 "$SDK_URL" -o "$SDK_TARBALL"
fi
printf '%s %s\n' "$SDK_SHA" "$SDK_TARBALL" | sha256sum -c -
tar --zstd -xf "$SDK_TARBALL" -C "$SDK_ROOT"
SDK_DIR=$(find "$SDK_ROOT" -mindepth 1 -maxdepth 1 -type d -name 'openwrt-sdk-*' -print)
[[ -n "$SDK_DIR" && "$SDK_DIR" != *$'\n'* ]]
echo "SDK_DIR=$SDK_DIR" >> "$GITHUB_ENV"
- name: 缓存依赖源码下载
uses: actions/cache@v5
with:
path: ${{ env.SDK_DIR }}/dl
key: adguardhome-dl-v1-${{ runner.os }}-${{ steps.sdk.outputs.sha256 }}-${{ hashFiles('Makefile', '.github/workflows/build-apk.yaml') }}
key: adguardhome-dl-v2-${{ runner.os }}-${{ matrix.sdk }}-${{ hashFiles('Makefile', '.github/workflows/build-apk.yaml', 'scripts/*.sh') }}
restore-keys: |
adguardhome-dl-v1-${{ runner.os }}-${{ steps.sdk.outputs.sha256 }}-
adguardhome-dl-v2-${{ runner.os }}-${{ matrix.sdk }}-
- name: 准备 SDK
run: bash scripts/prepare-sdk.sh
- name: 构建包
run: |
set -euo pipefail
cd "$SDK_DIR"
mkdir -p package/${PKG_DIR_NAME}
rsync -a --delete "$GITHUB_WORKSPACE/" "package/${PKG_DIR_NAME}/" \
--exclude '.git*' --exclude '.local' --exclude '_sdk' --exclude 'dist'
./scripts/feeds update -a
./scripts/feeds install luci-base tar
touch .config
sed -i -E '/^(# )?CONFIG_(ALL|ALL_KMODS|ALL_NONSHARED|PACKAGE_TAR_XZ|PACKAGE_luci-app-adguardhome)(=| is not set)/d' .config
printf '%s\n' \
'CONFIG_ALL=n' \
'CONFIG_ALL_KMODS=n' \
'CONFIG_ALL_NONSHARED=n' \
'# CONFIG_PACKAGE_TAR_XZ is not set' \
'CONFIG_PACKAGE_luci-app-adguardhome=y' >> .config
make defconfig
if ! grep -Eq '^CONFIG_PACKAGE_luci-app-adguardhome=(y|m)$' .config; then
echo '::error::luci-app-adguardhome was not enabled after make defconfig'
grep -n 'luci-app-adguardhome' .config || true
sed -n '/^[[:space:]]*config PACKAGE_luci-app-adguardhome$/,/^[[:space:]]*help/p' tmp/.config-package.in
exit 1
fi
make package/compile -j"$(nproc)" V=sc
run: runuser -u buildbot -- bash scripts/build-apk.sh
- name: 整理 APK 产物
run: |
set -euo pipefail
mkdir -p "$GITHUB_WORKSPACE/dist"
mapfile -t packages < <(find "$SDK_DIR/bin/packages" -type f -name "${PKG_DIR_NAME}-*.apk")
if (( ${#packages[@]} == 0 )); then
echo '::error::未找到 AdGuardHome APK'
exit 1
fi
cp "${packages[@]}" "$GITHUB_WORKSPACE/dist/"
run: bash scripts/collect-apks.sh
- name: 上传独立 APK
- name: 上传 APK 压缩包
uses: actions/upload-artifact@v7
with:
name: adguardhome-apks
path: dist/*.apk
archive: false
archive: true
if-no-files-found: error
- name: 发布到 Releases
@@ -152,6 +65,6 @@ jobs:
with:
tag_name: ${{ github.ref_name }}
prerelease: ${{ startsWith(github.ref_name, 'dev-') }}
make_latest: ${{ startsWith(github.ref_name, 'dev-') && 'false' || 'true' }}
make_latest: 'false'
fail_on_unmatched_files: true
files: dist/*.apk