mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-11-07 20:54:20 +08:00
update 2026-10-30 01:55:00
This commit is contained in:
1 parent
95f76f26d3
commit
76e81abc86
178 files changed
+279
-38411
No files matched your search
+19
-106
@@ -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
|
||||
Reference in new issue
Block a user