From d754f314dedee6d314fee7674eb4469093c439f8 Mon Sep 17 00:00:00 2001 From: Hyy2001X <1804430051@qq.com> Date: Sun, 9 May 2021 21:17:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=87=AA=E9=80=89=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E7=BC=96=E8=AF=91(test)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 支持在 Run workflow 框中输入设备名称(必选项,例如: x86_64/d-team_newifi-d2,必须为完整名称),即可直接编译相关固件而无需创建新的 workflow 文件(需提前在 /Configs 文件夹中添加对应名称的配置文件) --- .github/workflows/AutoBuild-Template.yml | 165 +++++++++++++++++++++++ 1 file changed, 165 insertions(+) create mode 100644 .github/workflows/AutoBuild-Template.yml diff --git a/.github/workflows/AutoBuild-Template.yml b/.github/workflows/AutoBuild-Template.yml new file mode 100644 index 0000000..de6139f --- /dev/null +++ b/.github/workflows/AutoBuild-Template.yml @@ -0,0 +1,165 @@ +#======================================================= +# Description: Build OpenWrt using GitHub Actions +# https://github.com/Hyy2001X/AutoBuild-Actions +# Lisence: MIT +# Author: P3TERX +# Modify: Hyy2001X +#======================================================= + +name: AutoBuild-Template + +on: + repository_dispatch: + workflow_dispatch: + inputs: + ssh: + description: 'SSH 连接到 Actions' + required: true + default: 'false' + target_name: + description: '设备名称 [必选]' + default: '' + ip_addr: + description: '固件 IP 地址 [可选]' + default: '' + +env: + REPO_URL: https://github.com/coolsnowwolf/lede + REPO_BRANCH: master + DIY_SCRIPT: Scripts/AutoBuild_DiyScript.sh + FUNCTION_SCRIPT: Scripts/AutoBuild_Function.sh + UPLOAD_RELEASE: true + UPLOAD_FIRMWARE: false + UPLOAD_BIN_DIR: false + REMOVE_USELESS_FILES: false + REMOVE_OLD_RELEASE: false + REMOVE_WORKFLOW_RUNS: true + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@main + + - name: Initialization Environment + env: + DEBIAN_FRONTEND: noninteractive + run: | + [[ -n "${{ github.event.inputs.target_name }}" ]] && { + echo "设备名称: ${{ github.event.inputs.target_name }}" + } || { + echo "[ERROR] 未输入设备名称!" + exit 1 + } + [ -f "$GITHUB_WORKSPACE/Configs/${{ github.event.inputs.target_name }}" ] && { + echo "已检测到 [${{ github.event.inputs.target_name }}] 设备配置文件" + } || { + echo "[ERROR] 未检测到设备对应的 [${{ github.event.inputs.target_name }}] 的配置文件!" + exit 1 + } + 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 + sudo timedatectl set-timezone "Asia/Shanghai" + sudo mkdir -p /workdir + sudo chown $USER:$GROUPS /workdir + echo "Compile_Date=$(date +%Y%m%d%H%M)" > $GITHUB_WORKSPACE/Openwrt.info + echo "Display_Date=$(date +%Y/%m/%d)" >> $GITHUB_WORKSPACE/Openwrt.info + echo "Defined_IP_Address=${{ github.event.inputs.ip_addr }}" >> $GITHUB_WORKSPACE/Openwrt.info + echo "Artifacts_Date=$(date +%Y%m%d%H%M)" >> $GITHUB_ENV + touch update_log.txt + + - name: Remove useless files + if: env.REMOVE_USELESS_FILES == 'true' && !cancelled() + run: | + echo "Deleting useless files, please wait ..." + docker rmi `docker images -q` + sudo rm -rf \ + /usr/share/dotnet \ + /etc/mysql \ + /etc/php + sudo -E apt-get -y autoremove --purge + sudo -E apt-get clean + + - name: Clone source code + run: | + git clone -b $REPO_BRANCH $REPO_URL openwrt + ln -sf /workdir/openwrt $GITHUB_WORKSPACE/openwrt + cp -a Configs/${{ github.event.inputs.target_name }} openwrt/.config + cd openwrt + ./scripts/feeds update -a + ./scripts/feeds install -a + make defconfig + + - name: Run Custom Firmware-Diy Scripts + run: | + chmod +x $DIY_SCRIPT + chmod +x $FUNCTION_SCRIPT + cd openwrt + source $GITHUB_WORKSPACE/$DIY_SCRIPT + source $GITHUB_WORKSPACE/$FUNCTION_SCRIPT && Firmware-Diy_Base + Firmware-Diy + + - name: SSH connection to Actions + uses: P3TERX/ssh2actions@v1.0.0 + if: (github.event.inputs.ssh == 'true' && github.event.inputs.ssh != 'false') || contains(github.event.action, 'ssh') + env: + TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} + TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} + + - name: Preload and Compile the Openwrt + run: | + cp Configs/${{ github.event.inputs.target_name }} openwrt/.config + cd openwrt + ./scripts/feeds install -a + make defconfig + make download -j$(nproc) + echo "Start to compile OpenWrt ..." + make -j$(nproc) || make -j1 V=s + + - name: Process the AutoBuild Firmware + run: | + cd openwrt + source $GITHUB_WORKSPACE/$DIY_SCRIPT + source $GITHUB_WORKSPACE/$FUNCTION_SCRIPT && PS_Firmware + + - name: Upload Firmware to Artifacts + uses: actions/upload-artifact@main + if: env.UPLOAD_FIRMWARE == 'true' && !cancelled() + with: + name: OpenWrt_Firmware_${{ env.Artifacts_DATE }} + path: openwrt/bin/Firmware + + - name: Upload bin directory to Artifacts + uses: actions/upload-artifact@main + if: env.UPLOAD_BIN_DIR == 'true' && !cancelled() + with: + name: OpenWrt_bin_${{ env.Artifacts_DATE }} + path: openwrt/bin + + - name: Upload Firmware to Release + uses: softprops/action-gh-release@v1 + if: env.UPLOAD_RELEASE == 'true' && !cancelled() + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: AutoUpdate + body_path: update_log.txt + files: openwrt/bin/Firmware/* + + - name: Remove old Release + uses: dev-drprasad/delete-older-releases@v0.1.0 + if: env.REMOVE_OLD_RELEASE == 'true' && !cancelled() + with: + keep_latest: 3 + delete_tags: true + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Remove workflow runs + uses: GitRML/delete-workflow-runs@main + if: env.REMOVE_WORKFLOW_RUNS == 'true' && !cancelled() + with: + retain_days: 1 + keep_minimum_runs: 3