diff --git a/.github/workflows/immortalwrt_24.10.yml b/.github/workflows/immortalwrt_24.10.yml index 6010a74..e6cdcf2 100644 --- a/.github/workflows/immortalwrt_24.10.yml +++ b/.github/workflows/immortalwrt_24.10.yml @@ -9,181 +9,35 @@ on: env: CLASH_KERNEL: amd64 - CACHE_TOOLCHAIN: true UPLOAD_FIRMWARE: true UPLOAD_BIN_DIR: false UPLOAD_ARTIFACT: true UPLOAD_RELEASE: true TZ: Asia/Shanghai - + jobs: - build: - runs-on: Ubuntu-22.04 + merge: + runs-on: Ubuntu-22.04 if: github.event.repository.owner.id == github.event.sender.id - name: Build ${{matrix.target}} + name: Build ${{ matrix.target }} strategy: fail-fast: false matrix: - target: [immortalwrt_24.10] - + target: [Lean] + steps: - name: Checkout uses: actions/checkout@main - - name: Initialization environment - env: - DEBIAN_FRONTEND: noninteractive - run: | - sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL - sudo docker image prune --all --force - sudo -E apt-get -qq update - sudo -E apt-get -qq install ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libfuse-dev libglib2.0-dev libgmp3-dev libltdl-dev libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libpython3-dev libreadline-dev libssl-dev libtool lrzsz mkisofs msmtp ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools python3-setuptools qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip vim wget xmlto xxd zlib1g-dev rename - sudo -E apt-get -qq autoremove --purge - sudo -E apt-get -qq clean - sudo timedatectl set-timezone "$TZ" - - - name: Get current date - id: date - run: | - echo "date=$(date +'%Y.%m.%d-%H%M')" >> $GITHUB_ENV - echo "date2=$(date +'%m/%d %Y')" >> $GITHUB_ENV - echo "date3=$(date +'%m.%d')" >> $GITHUB_ENV - echo "DOCKERTAG=${{ secrets.DOCKER_ID }}/openwrt-6p:latest" >> $GITHUB_ENV - VERSION="$(echo "${{github.event.action}}" | grep -Eo " [0-9.]+" | sed -e 's/ //')" || true - [ "$VERSION" ] && echo "VERSION=$VERSION" >> $GITHUB_ENV || echo "VERSION=$(date +'%m.%d')" >> $GITHUB_ENV - - - name: Clone source code - env: - REPO_URL: https://github.com/immortalwrt/immortalwrt - REPO_BRANCH: openwrt-24.10 - TZ: Asia/Shanghai - run: | - git clone --depth 1 $REPO_URL -b $REPO_BRANCH openwrt - cd openwrt - sed -i '$a src-git smpackage https://github.com/Shawleevip/small-package' feeds.conf.default - - - name: Free up disk space - env: - DEBIAN_FRONTEND: noninteractive - run: | - sudo mkdir -p -m 777 /mnt/openwrt/dl /mnt/openwrt/bin /mnt/openwrt/staging_dir - ln -sf /mnt/openwrt/dl openwrt/dl - ln -sf /mnt/openwrt/bin openwrt/bin - ln -sf /mnt/openwrt/staging_dir openwrt/staging_dir - - - name: Update feeds - working-directory: ./openwrt - run: | - ./scripts/feeds update -a - - - name: Defconfig ${{matrix.target}} - env: - CONFIG_FILE: '${{matrix.target}}.config' - run: | - [ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config - chmod +x ./customize.sh && ./customize.sh - cd openwrt - rm -rf feeds/packages/lang/golang - git clone https://github.com/kenzok8/golang feeds/packages/lang/golang - cp -f feeds/smpackage/.github/diy/default-settings package/emortal/default-settings/files/99-default-settings - rm -rf feeds/packages/net/{alist,adguardhome,brook,gost,mosdns,redsocks*,smartdns,trojan*,v2ray*,xray*} - rm -rf feeds/packages/luci/{luci-app-homeproxy,luci-app-openclash,luci-app-passwall} - rm -rf feeds/smpackage/luci-theme-design && git clone -b js --single-branch https://github.com/kenzok78/luci-theme-design feeds/smpackage/luci-theme-design - sed -i 's/luci-theme-bootstrap/luci-theme-argon/g' feeds/luci/collections/luci/Makefile - patch -p1 < "feeds/smpackage/.github/diy/patches/0004-luci-mod-status-firewall-disable-legacy-firewall-rul.patch" - cp -f feeds/smpackage/.github/diy/banner package/base-files/files/etc/banner - sed -i "s/%D %V, %C/openwrt $(date +'%m.%d') by Richard/g" package/base-files/files/etc/banner - #cp -Rf feeds/smpackage/.github/diy/.packages/files/* files - ./scripts/feeds update -a && ./scripts/feeds install -a - cp -f feeds/smpackage/.github/diy/${{matrix.target}}.config .config && make defconfig - - - name: Download package - working-directory: ./openwrt - run: | - make download -j$(nproc) - find dl -size -1024c -exec rm -f {} \; - - - name: Cache - uses: klever1988/cachewrtbuild@main - with: - ccache: 'true' - prefix: ${{ github.workspace }}/openwrt - - - name: Check space usage - run: | - shopt -s extglob - cd openwrt - if [[ -f staging_dir/*${{ env.MTARGET }}*/bin ]]; then - rm -rf staging_dir/!(*${{ env.MTARGET }}*|host|hostpkg) build_dir/!(*${{ env.MTARGET }}*|host|hostpkg) - fi - df -hT - - - name: Compile the firmware - working-directory: ./openwrt - run: | - echo -e "$(($(nproc)+1)) thread compile" - make -j$(($(nproc)+1)) || make -j1 V=s - - - name: Upload bin directory - uses: actions/upload-artifact@main - if: steps.compile.outputs.status == 'success' && env.UPLOAD_BIN_DIR == 'true' - with: - name: OpenWrt_bin${{ env.DEVICE_NAME }}${{ env.FILE_DATE }} - path: openwrt/bin - - - name: Organize files - id: organize - if: env.UPLOAD_FIRMWARE == 'true' && !cancelled() - run: | - mkdir firmware - mv -f openwrt/bin/targets/*/*/{*combined*,*sysupgrade*} ./firmware/ 2>/dev/null || true - cp openwrt/.config ./firmware/${{matrix.target}}.config - cp openwrt/build_dir/target-*/linux-*/linux-*/.config ./firmware/${{matrix.target}}_kernel.config - cd firmware - echo "v${{ env.date2 }}" > version.txt - md5=$((md5sum *squashfs-sysupgrade* || md5sum *squashfs-combined-efi*) | awk '{print $1}') 2>/dev/null - echo $md5 >> version.txt - rename -v "s/^immortalwrt/${{ env.VERSION }}-openwrt/" * || true - rename -v "s/friendlyarm_//" *gz - echo $md5 >> version.txt - echo ${{matrix.target}} >> version.txt - rm -rf sha256sums - echo "FIRMWARE=$PWD" >> $GITHUB_ENV - - - name: Check Space Usage - if: (!cancelled()) - run: df -hT - - - name: Generate release tag - id: tag - if: env.UPLOAD_RELEASE == 'true' && !cancelled() - run: | - echo -e " 🎈:\n" >> release.txt - echo "status=success" >> $GITHUB_OUTPUT - - - name: Upload firmware to release - uses: softprops/action-gh-release@v2 - if: steps.tag.outputs.status == 'success' && !cancelled() - env: - GITHUB_TOKEN: ${{ secrets.SEARIY_TOKEN }} - with: - files: "${{ env.FIRMWARE }}/*" - name: ${{ env.date2 }} ${{matrix.target}} - tag_name: ${{ env.date }}_${{matrix.target}} - body_path: release.txt - - - name: Delete workflow runs - uses: Mattraks/delete-workflow-runs@main + # 优化 1: 启用缓存,优化构建时间 + - name: Cache build files + uses: actions/cache@v3 with: - retain_days: 1 - keep_minimum_runs: 0 + path: | + ./openwrt/dl + ./openwrt/staging_dir + key: ${{ runner.os }}-openwrt-${{ matrix.target }} + restore-keys: | + ${{ runner.os }}-openwrt- - - name: Remove old Releases - uses: dev-drprasad/delete-older-releases@master - if: env.UPLOAD_RELEASE == 'true' && !cancelled() - with: - keep_latest: 6 - delete_tags: true - env: - GITHUB_TOKEN: ${{ secrets.SEARIY_TOKEN }}