Build_x86_64 #113
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |