OpenWrt Builder #31
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
| # | |
| # https://github.com/P3TERX/Actions-OpenWrt | |
| # | |
| # File: .github/workflows/openwrt-bulder.yml | |
| # Description: Build OpenWrt using GitHub Actions | |
| # | |
| # Copyright (c) 2019-2024 P3TERX <https://p3terx.com> | |
| # | |
| # This is free software, licensed under the MIT License. | |
| # See /LICENSE for more information. | |
| # | |
| name: OpenWrt Builder | |
| on: | |
| repository_dispatch: | |
| workflow_dispatch: | |
| env: | |
| REPO_URL: https://github.com/coolsnowwolf/lede | |
| REPO_BRANCH: master | |
| FEEDS_CONF: feeds.conf.default | |
| CONFIG_FILE: .config | |
| DIY_P1_SH: diy-part1.sh | |
| DIY_P2_SH: diy-part2.sh | |
| GEN_BURN_IMG_SH: gen_burn_img.sh | |
| UPLOAD_FIRMWARE: true | |
| UPLOAD_RELEASE: true | |
| TZ: Asia/Shanghai | |
| jobs: | |
| build: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: 释放磁盘空间 | |
| uses: jlumbroso/free-disk-space@main | |
| with: | |
| tool-cache: false | |
| android: true | |
| dotnet: true | |
| haskell: true | |
| large-packages: true | |
| docker-images: true | |
| swap-storage: true | |
| - 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 sed -i 's/azure\.//' /etc/apt/sources.list | |
| sudo -E apt-get -qq update | |
| sudo -E apt-get -qq install $(cat dependson) | |
| sudo -E apt-get -qq autoremove --purge | |
| sudo -E apt-get -qq clean | |
| sudo timedatectl set-timezone "$TZ" | |
| sudo mkdir -p /workdir | |
| sudo chown $USER:$GROUPS /workdir | |
| - name: Clone source code | |
| working-directory: /workdir | |
| run: | | |
| df -hT $PWD | |
| git clone $REPO_URL -b $REPO_BRANCH openwrt | |
| ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt | |
| - name: Load custom feeds | |
| run: | | |
| [ -e $FEEDS_CONF ] && mv $FEEDS_CONF openwrt/feeds.conf.default | |
| chmod +x $DIY_P1_SH | |
| cd openwrt | |
| $GITHUB_WORKSPACE/$DIY_P1_SH | |
| - name: Update feeds | |
| run: cd openwrt && ./scripts/feeds update -a | |
| - name: Install feeds | |
| run: cd openwrt && ./scripts/feeds install -a | |
| - name: Load custom configuration | |
| run: | | |
| [ -e files ] && mv files openwrt/files | |
| [ -e $CONFIG_FILE ] && mv $CONFIG_FILE openwrt/.config | |
| chmod +x $DIY_P2_SH | |
| cd openwrt | |
| $GITHUB_WORKSPACE/$DIY_P2_SH | |
| - name: Download package | |
| id: package | |
| run: | | |
| cd openwrt | |
| make defconfig | |
| make download -j8 | |
| find dl -size -1024c -exec ls -l {} \; | |
| find dl -size -1024c -exec rm -f {} \; | |
| - name: Compile the firmware | |
| id: compile | |
| run: | | |
| set -e | |
| cd openwrt | |
| echo -e "$(nproc) thread compile" | |
| echo "status=failed" >> $GITHUB_OUTPUT | |
| if ! ( make -j$(nproc) || make -j1 || make -j1 V=s ); then | |
| echo "❌ Make failed" | |
| exit 1 | |
| fi | |
| echo "status=success" >> $GITHUB_OUTPUT | |
| 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 "FILE_DATE=_$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV | |
| - name: 生成直刷包 | |
| if: steps.compile.outputs.status == 'success' | |
| run: | | |
| chmod +x $GEN_BURN_IMG_SH | |
| chmod +x AmlImg | |
| $GITHUB_WORKSPACE/$GEN_BURN_IMG_SH | |
| - name: Check space usage | |
| if: (!cancelled()) | |
| run: df -hT | |
| - name: Organize files | |
| id: organize | |
| if: env.UPLOAD_FIRMWARE == 'true' && !cancelled() | |
| run: | | |
| cd openwrt/bin/targets/*/* | |
| rm -rf packages feeds.buildinfo version.buildinfo sha256sums profiles.json *.sha *.manifest | |
| echo "FIRMWARE=$PWD" >> $GITHUB_ENV | |
| echo "status=success" >> $GITHUB_OUTPUT | |
| - name: Upload firmware directory | |
| uses: actions/upload-artifact@main | |
| if: steps.organize.outputs.status == 'success' && !cancelled() | |
| with: | |
| name: OpenWrt_firmware${{ env.DEVICE_NAME }}${{ env.FILE_DATE }} | |
| path: ${{ env.FIRMWARE }} | |
| - name: Generate release tag | |
| id: tag | |
| if: env.UPLOAD_RELEASE == 'true' && !cancelled() | |
| run: | | |
| echo "release_tag=$(date +"%Y.%m.%d-%H%M")" >> $GITHUB_OUTPUT | |
| touch release.txt | |
| [ ${UPLOAD_GOFILE} = true && ${{ steps.gofile.outputs.url }} ] && echo "🔗 [GoFile](${{ steps.gofile.outputs.url }})" >> release.txt | |
| echo "status=success" >> $GITHUB_OUTPUT | |
| - name: Upload firmware to release | |
| uses: softprops/action-gh-release@v2.1.0 | |
| if: steps.tag.outputs.status == 'success' && !cancelled() | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| with: | |
| tag_name: ${{ steps.tag.outputs.release_tag }} | |
| body_path: release.txt | |
| files: ${{ env.FIRMWARE }}/* | |
| - name: Delete workflow runs | |
| uses: Mattraks/delete-workflow-runs@main | |
| with: | |
| retain_days: 0 | |
| keep_minimum_runs: 2 | |
| - name: Remove old Releases | |
| uses: dev-drprasad/delete-older-releases@master | |
| if: env.UPLOAD_RELEASE == 'true' && !cancelled() | |
| with: | |
| keep_latest: 3 | |
| delete_tags: true | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Send msg to Wechat | |
| env: | |
| SENDKEY: ${{ secrets.SENDKEY }} | |
| TAG: ${{ steps.tag.outputs.release_tag }} | |
| run: curl -d "text=OpenWrt编译结束&desp=https://github.com/${GITHUB_REPOSITORY}/releases/${TAG}" https://sctapi.ftqq.com/${SENDKEY}.send |