Skip to content

Build_x86_64

Build_x86_64 #113

name: Build_x86_64
on:
workflow_dispatch:
#release:
# types: [published]
# push:
# branches:
# - master
schedule:
- cron: 0 8 * * 5
#watch:
# types: [started]
jobs:
build:
runs-on: ubuntu-latest
env:
DEBIAN_FRONTEND: noninteractive
REPO_URL: https://github.com/coolsnowwolf/lede
REPO_BRANCH: master
CONFIG_FILE: 'x86_64.config'
GITHUB_TOKEN: ${{ github.token }}
steps:
- name: Checkout
uses: actions/checkout@master
- name: Initialization environment
run: |
set +e
docker rmi $(docker images -q)
echo "Deleting unnecessary files, please wait ..."
sudo rm -rf /usr/share/dotnet /etc/mysql /etc/php
sudo -E apt-get -y purge azure-cli ghc* zulu* hhvm llvm* firefox google* dotnet* powershell openjdk* mysql* php*
sudo -E apt-get update
sudo -E apt-get -y install \
build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip \
zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev \
texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler \
g++-multilib antlr3 gperf wget curl swig rsync aria2 ca-certificates python3-pyelftools python-pyelftools yasm libtinfo5
sudo -E apt-get -y autoremove --purge
sudo -E apt-get clean
- name: Echo host info
run: |
echo "-------------------------- CPU 信息 --------------------------"
echo "CPU 物理数量: $(grep 'physical id' /proc/cpuinfo | sort -u | wc -l)"
echo "CPU 核心数量: $(nproc)"
echo "CPU 型号: $(grep -m1 'model name' /proc/cpuinfo | cut -d: -f2-)"
echo "-------------------------- 内存信息 --------------------------"
echo "已安装内存:"
sudo lshw -short -C memory | grep GiB || true
echo "-------------------------- 硬盘信息 --------------------------"
echo "硬盘数量: $(ls /dev/sd* | grep -v [1-9] | wc -l)"
df -hT
- name: Clone source code
run: |
echo "DEV_NAME=_$(basename "$CONFIG_FILE" .config)" >> $GITHUB_ENV
echo "FILE_DATE=_$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV
git clone --depth 1 $REPO_URL -b $REPO_BRANCH openwrt
sudo mv openwrt /mnt/ && sudo ln -s /mnt/openwrt ./ && sudo chown -R $USER:$GROUPS /mnt/openwrt
cd openwrt
sed -i '1i src-git kenzo https://github.com/kenzok8/openwrt-packages' feeds.conf.default
sed -i '2i src-git small https://github.com/kenzok8/small' feeds.conf.default
- name: Cache OpenWrt dl
uses: actions/cache@v4
with:
path: openwrt/dl
key: ${{ runner.os }}-openwrt-dl-${{ hashFiles(env.CONFIG_FILE) }}
restore-keys: |
${{ runner.os }}-openwrt-dl-
- name: Cache ccache
uses: actions/cache@v4
with:
path: ~/.ccache
key: ${{ runner.os }}-ccache-${{ hashFiles(env.CONFIG_FILE) }}
restore-keys: |
${{ runner.os }}-ccache-
- name: Update & Install feeds
working-directory: ./openwrt
run: |
./scripts/feeds update -a
rm -rf feeds/luci/applications/luci-app-mosdns
rm -rf feeds/packages/net/{alist,adguardhome,mosdns,xray*,v2ray*,v2ray*,sing*,smartdns}
rm -rf feeds/packages/utils/v2dat
rm -rf feeds/packages/lang/golang
# 删除第三方造成依赖环的所有相关包
rm -rf feeds/small/{luci-app-bypass,luci-app-ssr-plus,luci-app-fchomo}
rm -rf feeds/kenzo/luci-app-bypass
rm -rf feeds/small/{shadowsocks-libev,shadowsocks-rust,trojan-plus,xray-core}
rm -rf feeds/small/{chinadns-ng,pdnsd-alt,dns2socks}
rm -rf feeds/small/firewall4*
rm -rf feeds/small/coreutils
git clone https://github.com/kenzok8/golang -b 1.25 feeds/packages/lang/golang
./scripts/feeds install -a
- name: Configuration Customization - Build_x86_64
run: |
[ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config
chmod +x ./customize.sh && ./customize.sh
cd openwrt && make defconfig
- name: Download package
working-directory: ./openwrt
run: |
make download -j"$(nproc)"
find dl -size -1024c -exec ls -l {} \;
find dl -size -1024c -exec rm -f {} \;
- name: Build firmware
working-directory: ./openwrt
run: |
echo -e "$(nproc) threads for build."
make -j"$(nproc)" V=s
cp .config bin/
- name: Upload artifact
uses: actions/upload-artifact@master
with:
name: OpenWrt_bin${{ env.DEV_NAME }}${{ env.FILE_DATE }}
path: openwrt/bin
- name: 将映像转换为 ESXi 的 VMDK 格式
run: |
set -e
sudo apt update && sudo apt install -y qemu-utils >/dev/null
cd ./openwrt/bin/targets/x86/64
echo "当前目录内容:"
ls -lh
IMG_BASENAME="openwrt-x86-64-generic-squashfs-combined-efi"
IMG_GZ="${IMG_BASENAME}.img.gz"
IMG="${IMG_BASENAME}.img"
if [ -f "$IMG_GZ" ]; then
echo "发现镜像:$IMG_GZ,开始解压..."
gunzip -f "$IMG_GZ"
elif [ -f "$IMG" ]; then
echo "发现未压缩镜像:$IMG,跳过解压。"
else
echo "错误:既没有 $IMG_GZ 也没有 $IMG"
echo "当前 img/img.gz 文件列表:"
ls -lh *.img* || echo "没有任何 *.img* 文件"
exit 1
fi
echo "准备转换为 VMDK:$IMG -> openwrt.vmdk"
qemu-img convert -f raw -O vmdk -o subformat=monolithicFlat "$IMG" openwrt.vmdk
ls -lh openwrt.vmdk openwrt-flat.vmdk
tar -czf openwrt_vmdk.tar.gz openwrt.vmdk openwrt-flat.vmdk
- name: 上传 VMDK 工件
uses: actions/upload-artifact@master
with:
name: openwrt-vmdk${{ env.FILE_DATE }}
path: ./openwrt/bin/targets/x86/64/openwrt_vmdk.tar.gz
- name: 删除运行记录
uses: GitRML/delete-workflow-runs@main
with:
retain_days: 1
keep_minimum_runs: 3