name: Openwrt_x86 on: schedule: - cron: 0 16 * * * workflow_dispatch: env: REPO_URL: https://github.com/openwrt/openwrt REPO_BRANCH: master CONFIG_FILE: Openwrt/x86/.config DIY_P1_SH: Openwrt/diy-part1.sh DIY_P2_SH: Openwrt/diy-part2.sh UPLOAD_FIRMWARE: true UPLOAD_RELEASE: true TZ: Asia/Shanghai OPENWRT_NAME: Openwrt jobs: build: runs-on: ubuntu-latest steps: - name: 检查项目分支 uses: actions/checkout@main - name: 初始化编译环境 env: DEBIAN_FRONTEND: noninteractive run: | ( sudo -E apt-get -qq update sudo -E apt-get -qq install build-essential clang flex g++ gawk gcc-multilib gettext \ git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev swig libpython3-dev aria2 jq subversion qemu-utils ccache rename libelf-dev sudo -E apt-get -qq purge azure-cli ghc* zulu* hhvm llvm* firefox powershell openjdk* dotnet* google* mysql* php* android* sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc sudo -E apt-get -qq autoremove --purge sudo -E apt-get -qq clean ) & sudo timedatectl set-timezone "$TZ" - name: 下载固件源码 run: | git clone $REPO_URL -b $REPO_BRANCH openwrt - name: 加载feeds.conf.default & DIY_P1_SH run: | chmod +x $DIY_P1_SH cd openwrt $GITHUB_WORKSPACE/$DIY_P1_SH - name: 更新 & 安装 feeds working-directory: ./openwrt run: | ./scripts/feeds update -a ./scripts/feeds install -a - name: 加载config & DIY_P2_SH run: | [ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config chmod +x $DIY_P2_SH cd openwrt $GITHUB_WORKSPACE/$DIY_P2_SH - name: 下载安装包 id: package run: | cd openwrt make defconfig make download -j$(nproc) find dl -size -1024c -exec ls -l {} \; find dl -size -1024c -exec rm -f {} \; - name: 编译固件 id: compile run: | cd openwrt echo -e "$(nproc) thread compile" make -j$(nproc) || make -j1 || make -j1 V=s echo "status=success" >> $GITHUB_OUTPUT - name: 设置当前的日期 id: date run: | cd openwrt grep '^CONFIG_TARGET.*DEVICE.*=y' .config | sed -r 's/.*DEVICE_(.*)=y/\1/' > DEVICE_NAME [ -s DEVICE_NAME ] && echo "DEVICE_NAME=$(cat DEVICE_NAME)" >> $GITHUB_ENV echo "date1=$(date +'%Y.%m.%d-%H.%M')" >> $GITHUB_ENV echo "date2=$(date +'%Y.%m.%d')" >> $GITHUB_ENV echo "date3=$(date "+%Y年%m月%d日")" >> $GITHUB_ENV - name: 查看磁盘使用情况 if: (!cancelled()) run: df -hT - name: 整理文件并重命名 id: organize if: env.UPLOAD_FIRMWARE == 'true' && !cancelled() run: | mkdir firmware && find openwrt/bin/targets/*/*/ -maxdepth 1 \ -name "*squashfs-combined.vmdk" \ -or -name "*squashfs-combined.img.gz" \ | xargs -i mv -f {} ./firmware/ cp openwrt/.config ./firmware/${{ env.date1 }}_${{ env.OPENWRT_NAME }}_x86-64.config cd firmware sudo -E apt-get -qq install rename rename 's/^/${{ env.date1 }}_${{ env.OPENWRT_NAME }}_/' *.vmdk rename 's/^/${{ env.date1 }}_${{ env.OPENWRT_NAME }}_/' *.img.gz echo "FIRMWARE=$PWD" >> $GITHUB_ENV echo "status=success" >> $GITHUB_OUTPUT - name: 上传固件到github uses: actions/upload-artifact@main if: steps.organize.outputs.status == 'success' && !cancelled() with: name: ${{ env.date1 }}_${{ env.OPENWRT_NAME }}_${{ env.DEVICE_NAME }} path: ${{ env.FIRMWARE }} - name: 生成release标签 id: tag if: env.UPLOAD_RELEASE == 'true' && !cancelled() run: | echo "::set-output name=release_tag::${{ env.date2 }}" touch release.txt echo "由衷感谢所有为openwrt无私奉献的大佬们" >> release.txt echo "📥 固件下载" >> release.txt echo "status=success" >> $GITHUB_OUTPUT - name: 发布至release uses: softprops/action-gh-release@v1 if: steps.tag.outputs.status == 'success' && !cancelled() env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: files: ${{ env.FIRMWARE }}/* name: ${{ env.date3 }} tag_name: ${{ steps.tag.outputs.release_tag }} body_path: release.txt - name: config文件上传自动更新1 run : | git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" git config --global user.name "github-actions[bot]" sudo timedatectl set-timezone "Asia/Shanghai" - name: config文件上传自动更新2 run: | cd $GITHUB_WORKSPACE git clone -b main https://github.com/moruiris/Actions-OpenWrt.git main cd main git rm -r --cache * >/dev/null 2>&1 & rm -rf * >/dev/null 2>&1 - name: config文件上传自动更新3 env: ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} run: | cd $GITHUB_WORKSPACE/main git add . git commit -am "update $(date +%Y-%m-%d" "%H:%M:%S)" git push --quiet "https://${{ secrets.ACCESS_TOKEN }}@github.com/moruiris/Actions-OpenWrt.git" HEAD:main