Files
Dwrt-build/.github/workflows/build.yml
2025-07-25 21:30:44 +08:00

118 lines
3.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Build ImmortalWrt
on:
workflow_dispatch:
inputs:
version_type:
description: "版本类型"
required: true
default: "stable"
type: choice
options:
- "snapshot"
- "stable"
branch:
description: "snapshot-branch"
required: false
default: "openwrt-24.10"
type: string
tag:
description: "stable-tag"
required: false
default: "v24.10.2"
type: string
config_path:
description: "Config 路径"
required: true
default: "config/myconfig"
type: string
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout current repository
uses: actions/checkout@v4
- name: Determine Git ref
id: refinfo
run: |
if [ "${{ inputs.version_type }}" = "snapshot" ]; then
echo "Using branch '${{ inputs.branch }}'"
echo "ref=${{ inputs.branch }}" >> $GITHUB_OUTPUT
else
echo "Using tag '${{ inputs.tag }}'"
echo "ref=${{ inputs.tag }}" >> $GITHUB_OUTPUT
fi
- name: Clone ImmortalWrt source
run: |
echo "📥 克隆 immortalwrt 仓库ref=${{ steps.refinfo.outputs.ref }}"
git clone --branch "${{ steps.refinfo.outputs.ref }}" \
https://github.com/immortalwrt/immortalwrt.git immortalwrt
- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential clang flex bison g++ gawk gettext git \
libncurses-dev libssl-dev python3 python3-dev python3-setuptools \
rsync unzip zlib1g-dev file wget curl \
gzip tar zip xz-utils bzip2 zstd \
make cmake autoconf automake libtool patch diffutils \
findutils grep sed help2man texinfo \
libelf-dev libfuse-dev liblzma-dev libxml2-dev libyaml-dev \
uuid-dev device-tree-compiler antlr3 gperf \
time bc jq xxd swig upx-ucl ccache ecj fastjar imagemagick
- name: Update and install feeds
working-directory: immortalwrt
run: |
echo "📦 更新 feeds"
./scripts/feeds update -a
echo "📦 安装 feeds"
./scripts/feeds install -a
- name: Setup configuration
run: |
echo "📋 校验并复制配置:${{ inputs.config_path }} → immortalwrt/.config"
if [ ! -f "${{ inputs.config_path }}" ]; then
echo "❌ 找不到配置文件:${{ inputs.config_path }}"
exit 1
fi
cp "${{ inputs.config_path }}" immortalwrt/.config
cd immortalwrt
echo "🔄 运行 make oldconfig"
make oldconfig
- name: Download source packages
working-directory: immortalwrt
run: |
echo "⬇️ 下载所有源码包"
make download -j8
- name: Build ImmortalWrt
working-directory: immortalwrt
run: |
JOBS=$(nproc)
echo "🚀 开始全量编译(并行 ${JOBS}"
START=$(date "+%Y-%m-%d %H:%M:%S")
echo "⏱️ 编译开始于: ${START}"
if ! time make world -j${JOBS} 2>&1 | tee build.log; then
echo "❌ 编译失败,输出最后 100 行日志:"
tail -n 100 build.log | sed 's/^/ /'
exit 1
fi
END=$(date "+%Y-%m-%d %H:%M:%S")
echo "✅ 编译成功"
echo "⏱️ 开始: ${START}"
echo "⏱️ 结束: ${END}"
- name: Upload firmware artifacts
uses: actions/upload-artifact@v4
with:
name: immortalwrt-output
path: |
immortalwrt/bin/targets/**/*.{img,bin,tar.gz,zip}