diff --git a/.github/workflows/AutoBuild-Common.yml b/.github/workflows/AutoBuild-Sample.yml similarity index 72% rename from .github/workflows/AutoBuild-Common.yml rename to .github/workflows/AutoBuild-Sample.yml index bbe538b..6166e62 100644 --- a/.github/workflows/AutoBuild-Common.yml +++ b/.github/workflows/AutoBuild-Sample.yml @@ -6,7 +6,7 @@ # Modify: Hyy2001X #======================================================= -name: AutoBuild-Common +name: AutoBuild-Sample on: repository_dispatch: @@ -18,21 +18,21 @@ on: default: 'false' target_name: description: '设备名称 [必选]' - default: '' + default: 'x86_64' + openwrt_sc: + description: 'Openwrt 源码:分支 [必选]' + default: 'coolsnowwolf/lede:master' 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: true - REMOVE_OLD_RELEASE: false REMOVE_WORKFLOW_RUNS: true jobs: @@ -43,9 +43,7 @@ jobs: - name: Checkout uses: actions/checkout@main - - name: Initialization Environment - env: - DEBIAN_FRONTEND: noninteractive + - name: Initialization Defined Info run: | [[ -n "${{ github.event.inputs.target_name }}" ]] && { echo "设备名称: ${{ github.event.inputs.target_name }}" @@ -53,14 +51,25 @@ jobs: echo "[ERROR] 未输入设备名称!" exit 1 } - [ -f "$GITHUB_WORKSPACE/Configs/${{ github.event.inputs.target_name }}" ] && { - echo "已检测到 [${{ github.event.inputs.target_name }}] 设备配置文件" - } || { + [ ! -f "$GITHUB_WORKSPACE/Configs/${{ github.event.inputs.target_name }}" ] && { echo "[ERROR] 未检测到设备对应的 [${{ github.event.inputs.target_name }}] 的配置文件!" exit 1 } + URL_BRANCH=${{ github.event.inputs.openwrt_sc }} + URL="https://github.com/$(echo $URL_BRANCH | egrep -o ".*:")" + REPO_URL=${URL%?} + REPO_BRANCH=$(echo $URL_BRANCH | egrep -o ":.*" | cut -c2-100) + [[ -z $REPO_BRANCH ]] && REPO_BRANCH=master + echo "REPO_URL=$REPO_URL" >> $GITHUB_ENV + echo "REPO_BRANCH=$REPO_BRANCH" >> $GITHUB_ENV + echo -e "源码地址: $REPO_URL\n分支: $REPO_BRANCH" + + - name: Initialization Environment + env: + DEBIAN_FRONTEND: noninteractive + run: | 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 -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 qemu-utils sudo timedatectl set-timezone "Asia/Shanghai" sudo mkdir -p /workdir sudo chown $USER:$GROUPS /workdir @@ -74,33 +83,42 @@ jobs: if: env.REMOVE_USELESS_FILES == 'true' && !cancelled() run: | echo "Deleting useless files, please wait ..." - docker rmi `docker images -q` + 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 + + - name: Clone Openwrt 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 + [ -f Configs/${{ github.event.inputs.target_name }} ] && cp Configs/${{ github.event.inputs.target_name }} openwrt/.config || { + echo "未检测到该设备的 ${{ github.event.inputs.target_name }} 配置文件!" + exit 1 + } cd openwrt - ./scripts/feeds update -a + ./scripts/feeds update -a > /dev/null 2>&1 ./scripts/feeds install -a - make defconfig - - name: Run Custom Firmware-Diy Scripts + - name: Run Customize 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 + source $GITHUB_WORKSPACE/$FUNCTION_SCRIPT + Firmware-Diy_Base Firmware-Diy + - name: Process Openwrt source code + run: | + cd openwrt + ./scripts/feeds install -a + make defconfig + - 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') @@ -108,34 +126,30 @@ jobs: TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} - - name: Preload and Compile the Openwrt + - name: 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 download -j8 + echo "Start to compile OpenWrt for $CONFIG_FILE..." 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 }} + name: ${{ github.event.inputs.target_name }}_${{ env.REPO_BRANCH }}_Firmware 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 }} + name: ${{ github.event.inputs.target_name }}_${{ env.REPO_BRANCH }}_BINDir path: openwrt/bin - name: Upload Firmware to Release @@ -147,16 +161,7 @@ jobs: 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()