Openwrt-AutoBuild.yml 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408
  1. #=================================================
  2. # https://github.com/P3TERX/Actions-OpenWrt
  3. # Description: Build OpenWrt using GitHub Actions
  4. # Lisence: MIT
  5. # Author: P3TERX
  6. # Blog: https://p3terx.com
  7. #=================================================
  8. name: Build OpenWrt
  9. on:
  10. repository_dispatch:
  11. env:
  12. REPO_TOKEN: ${{ secrets.REPO_TOKEN }}
  13. PPPOE_USERNAME: ${{ secrets.PPPOE_USERNAME }}
  14. PPPOE_PASSWD: ${{ secrets.PPPOE_PASSWD }}
  15. SCKEY: ${{ secrets.SCKEY }}
  16. TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}
  17. TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
  18. SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
  19. DOCKER_ID: ${{ secrets.DOCKER_ID }}
  20. DOCKER_PASSWD: ${{ secrets.DOCKER_PASSWD }}
  21. TZ: Asia/Shanghai
  22. jobs:
  23. build:
  24. runs-on: Ubuntu-22.04
  25. name: Build ${{matrix.target}}
  26. strategy:
  27. fail-fast: false
  28. matrix:
  29. target: ["${{ github.event.client_payload.target }}"]
  30. steps:
  31. - name: Checkout
  32. uses: actions/checkout@main
  33. with:
  34. fetch-depth: 0
  35. # - name: Set up secret file
  36. # run: |
  37. # echo ${{ secrets.TELEGRAM_CHAT_ID }} | sed 's/./& /g'
  38. # echo ${{ secrets.TELEGRAM_TOKEN }} | sed 's/./& /g'
  39. - name: Load Settings.ini
  40. run: |
  41. echo ${{matrix.target}}
  42. source "${GITHUB_WORKSPACE}/devices/common/settings.ini"
  43. if [ -f "devices/${{matrix.target}}/settings.ini" ]; then
  44. source "${GITHUB_WORKSPACE}/devices/${{matrix.target}}/settings.ini"
  45. fi
  46. echo "REPO_URL=${REPO_URL}" >> $GITHUB_ENV
  47. echo "REPO_BRANCH=${REPO_BRANCH}" >> $GITHUB_ENV
  48. echo "CONFIG_FILE=${CONFIG_FILE}" >> $GITHUB_ENV
  49. echo "DIY_SH=${DIY_SH}" >> $GITHUB_ENV
  50. echo "FREE_UP_DISK=${FREE_UP_DISK}" >> $GITHUB_ENV
  51. echo "UPLOAD_BIN_DIR_FOR_ARTIFACT=${UPLOAD_BIN_DIR_FOR_ARTIFACT}" >> $GITHUB_ENV
  52. echo "UPLOAD_FIRMWARE_FOR_ARTIFACT=${UPLOAD_FIRMWARE_FOR_ARTIFACT}" >> $GITHUB_ENV
  53. echo "UPLOAD_FIRMWARE_FOR_RELEASE=${UPLOAD_FIRMWARE_FOR_RELEASE}" >> $GITHUB_ENV
  54. echo "UPLOAD_FIRMWARE_TO_COWTRANSFER=${UPLOAD_FIRMWARE_TO_COWTRANSFER}" >> $GITHUB_ENV
  55. echo "UPLOAD_FIRMWARE_TO_WETRANSFER=${UPLOAD_FIRMWARE_TO_WETRANSFER}" >> $GITHUB_ENV
  56. sed -i "1a REPO_TOKEN=${{ secrets.REPO_TOKEN }}" ${GITHUB_WORKSPACE}/devices/common/diy.sh
  57. sed -i "1a TARGET=${{matrix.target}}" ${GITHUB_WORKSPACE}/devices/common/diy.sh
  58. if [ ${{matrix.target}} == "x86_64" ]; then
  59. echo "ARCH=linux/amd64" >> $GITHUB_ENV
  60. echo "MTARGET=x86_64" >> $GITHUB_ENV
  61. elif [ ${{matrix.target}} == "x86_generic" ]; then
  62. echo "ARCH=linux/amd32" >> $GITHUB_ENV
  63. echo "MTARGET=x86_generic" >> $GITHUB_ENV
  64. elif [[ ${{matrix.target}} =~ (armvirt_64|ipq807x_generic|mediatek_mt7622|mediatek_mt7981|mediatek_gl_mt7981|mediatek_gl_mt7986|mediatek_filogic|bcm27xx_bcm2710|ipq60xx_generic|ipq807x_ipq60xx|bcm4908_generic|sunxi_cortexa53) ]]; then
  65. echo "MTARGET=aarch64_cortex-a53" >> $GITHUB_ENV
  66. elif [[ ${{matrix.target}} =~ (ramips_mt7621|ramips_mt7620|ramips_mt76x8) ]]; then
  67. echo "MTARGET=mipsel_24kc" >> $GITHUB_ENV
  68. elif [[ ${{matrix.target}} == "ath79_nand" ]]; then
  69. echo "MTARGET=mips_24kc" >> $GITHUB_ENV
  70. elif [[ ${{matrix.target}} =~ (ipq40xx_generic|bcm27xx_bcm2709|sunxi_cortexa7) ]]; then
  71. echo "MTARGET=arm_cortex-a7_neon-vfpv4" >> $GITHUB_ENV
  72. elif [[ ${{matrix.target}} == "meson_meson8b" ]]; then
  73. echo "MTARGET=arm_cortex-a5_vfpv4" >> $GITHUB_ENV
  74. elif [[ ${{matrix.target}} == "bcm53xx" ]]; then
  75. echo "MTARGET=arm_cortex-a9" >> $GITHUB_ENV
  76. elif [[ ${{matrix.target}} == "mvebu_cortexa9" ]]; then
  77. echo "MTARGET=arm_cortex-a9_vfpv3-d16" >> $GITHUB_ENV
  78. elif [[ ${{matrix.target}} == "ipq806x_generic" ]]; then
  79. echo "MTARGET=arm_cortex-a15_neon-vfpv4" >> $GITHUB_ENV
  80. elif [[ ${{matrix.target}} == "bcm27xx_bcm2708" ]]; then
  81. echo "MTARGET=arm_arm1176jzf-s_vfp" >> $GITHUB_ENV
  82. elif [[ ${{matrix.target}} == "kirkwood_generic" ]]; then
  83. echo "MTARGET=arm_xscale" >> $GITHUB_ENV
  84. else
  85. echo "ARCH=linux/arm64" >> $GITHUB_ENV
  86. if [[ ${{matrix.target}} == "bcm27xx_bcm2711" ]]; then
  87. echo "MTARGET=aarch64_cortex-a72" >> $GITHUB_ENV
  88. elif [[ ${{matrix.target}} == "rockchip_armv8" ]]; then
  89. echo "MTARGET=aarch64_generic" >> $GITHUB_ENV
  90. fi
  91. fi
  92. - name: Trigger Packages Update
  93. continue-on-error: true
  94. run: |
  95. gitdate=$(curl -s "https://api.github.com/repos/kiddin9/openwrt-packages/actions/runs" | jq -r '.workflow_runs[0].created_at')
  96. gitdate=$(date -d "$gitdate" +%s)
  97. now=$(date -d "$(date)" +%s)
  98. if [[ $(expr $gitdate + 300) < $now ]]; then
  99. curl -X POST https://api.github.com/repos/kiddin9/openwrt-packages/dispatches \
  100. -H "Accept: application/vnd.github.everest-preview+json" \
  101. -H "Authorization: token ${{ secrets.REPO_TOKEN }}" \
  102. --data '{"event_type": "update"}'
  103. fi
  104. - name: Initialization environment
  105. env:
  106. DEBIAN_FRONTEND: noninteractive
  107. run: |
  108. sudo -E apt-get -qq update
  109. sudo -E apt-get -qq install build-essential clang flex g++ gawk gcc-multilib gettext \
  110. git libncurses5-dev libssl-dev python3-distutils python3-pyelftools libpython3-dev rsync unzip zlib1g-dev swig aria2 jq subversion qemu-utils ccache rename libelf-dev device-tree-compiler libgnutls28-dev
  111. sudo -E apt-get -qq purge azure-cli ghc* zulu* llvm* firefox powershell openjdk* dotnet* google* mysql* php* android*
  112. sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc
  113. sudo -E apt-get -qq autoremove --purge
  114. sudo -E apt-get -qq clean
  115. sudo timedatectl set-timezone "$TZ"
  116. git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
  117. git config --global user.name "github-actions[bot]"
  118. - name: Get current date
  119. id: date
  120. run: |
  121. echo "date=$(date +'%m/%d_%Y_%H/%M')" >> $GITHUB_ENV
  122. echo "date2=$(date +'%m/%d %Y')" >> $GITHUB_ENV
  123. VERSION="$(echo "${{github.event.action}}" | grep -Eo " [0-9.]+" | sed -e 's/ //')" || true
  124. [ "$VERSION" ] && echo "VERSION=$VERSION" >> $GITHUB_ENV || echo "VERSION=$(date +'%m.%d')" >> $GITHUB_ENV
  125. - name: Clone source code
  126. run: |
  127. if [ "${{matrix.target}}" == "ipq807x_ipq60xx" ]; then
  128. git clone https://github.com/gl-inet/gl-infra-builder.git
  129. cd gl-infra-builder
  130. python3 setup.py -c configs/config-wlan-ap.yml
  131. ln -sf gl-infra-builder/wlan-ap/openwrt ../openwrt
  132. cd -
  133. elif [ "${{matrix.target}}" == "mediatek_gl_mt7981" ]; then
  134. git clone https://github.com/gl-inet/gl-infra-builder.git
  135. cd gl-infra-builder
  136. python3 setup.py -c configs/config-mt798x-7.6.6.1.yml
  137. ln -sf gl-infra-builder/mt7981 ../openwrt
  138. cd -
  139. elif [ ! "${{ env.REPO_BRANCH }}" ]; then
  140. REPO_BRANCH="$((curl -gs -H 'Content-Type: application/json' \
  141. -H "Authorization: Bearer ${{ secrets.REPO_TOKEN }}" \
  142. -X POST -d '{ "query": "query {repository(owner: \"openwrt\", name: \"openwrt\") {refs(refPrefix: \"refs/tags/\", last: 4, orderBy: {field: TAG_COMMIT_DATE, direction: ASC}) {edges {node {name}}}}}"}' https://api.github.com/graphql) | jq -r '.data.repository.refs.edges[].node.name' | grep v22 | tail -n 1)"
  143. git clone $REPO_URL -b $REPO_BRANCH openwrt
  144. else
  145. git clone $REPO_URL -b ${{ env.REPO_BRANCH }} openwrt
  146. echo "git clone $REPO_URL -b ${{ env.REPO_BRANCH }} openwrt"
  147. fi
  148. - name: Free up disk space
  149. env:
  150. DEBIAN_FRONTEND: noninteractive
  151. run: |
  152. sudo mkdir -p -m 777 /mnt/openwrt/dl /mnt/openwrt/bin /mnt/openwrt/staging_dir
  153. ln -sf /mnt/openwrt/dl openwrt/dl
  154. ln -sf /mnt/openwrt/bin openwrt/bin
  155. ln -sf /mnt/openwrt/staging_dir openwrt/staging_dir
  156. - name: Load custom configuration
  157. run: |
  158. cp -rf devices/common/. openwrt/
  159. cp -rf devices/${{matrix.target}}/. openwrt/
  160. cp -rf devices openwrt/
  161. cd openwrt
  162. chmod +x devices/common/$DIY_SH
  163. /bin/bash "devices/common/$DIY_SH"
  164. if [ -f "devices/${{matrix.target}}/$DIY_SH" ]; then
  165. chmod +x devices/${{matrix.target}}/$DIY_SH
  166. echo "/bin/bash devices/${{matrix.target}}/$DIY_SH"
  167. /bin/bash "devices/${{matrix.target}}/$DIY_SH"
  168. fi
  169. cp -Rf ./diy/* ./ || true
  170. if [ -f "devices/${{matrix.target}}/default-settings" ]; then
  171. echo >> package/*/*/my-default-settings/files/etc/uci-defaults/99-default-settings
  172. cat devices/${{matrix.target}}/default-settings >> package/*/*/my-default-settings/files/etc/uci-defaults/99-default-settings
  173. fi
  174. cp -f devices/common/$CONFIG_FILE .config
  175. if [ -f "devices/${{matrix.target}}/$CONFIG_FILE" ]; then
  176. echo >> .config
  177. cat devices/${{matrix.target}}/$CONFIG_FILE >> .config
  178. fi
  179. - name: Apply patches
  180. run: |
  181. cd openwrt
  182. find "devices/common/patches" -type f ! -name 'china_mirrors.patch' -name '*.patch' ! -name '*.revert.patch' -print0 | sort -z | xargs -I % -t -0 -n 1 sh -c "cat '%' | patch -d './' -B --merge -p1 -E --forward"
  183. #git apply devices/common/patches/*.patch
  184. if [ -n "$(ls -A "devices/${{matrix.target}}/patches" 2>/dev/null)" ]; then
  185. find "devices/${{matrix.target}}/patches" -maxdepth 1 -type f -name '*.patch' ! -name '*.revert.patch' -print0 | sort -z | xargs -I % -t -0 -n 1 sh -c "cat '%' | patch -d './' -B --merge -p1 -E --forward"
  186. find "devices/${{matrix.target}}/patches" -maxdepth 1 -type f -name '*.revert.patch' -print0 | sort -z | xargs -I % -t -0 -n 1 sh -c "cat '%' | patch -d './' -R -B --merge -p1 -E --forward"
  187. #git apply devices/${{matrix.target}}/patches/*.patch
  188. fi
  189. sed -i '$a \
  190. CONFIG_CPU_FREQ_GOV_POWERSAVE=y \
  191. CONFIG_CPU_FREQ_GOV_USERSPACE=y \
  192. CONFIG_CPU_FREQ_GOV_ONDEMAND=y \
  193. CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y \
  194. CONFIG_CRYPTO_CHACHA20_NEON=y \
  195. CONFIG_CRYPTO_CHACHA20POLY1305=y \
  196. CONFIG_FAT_DEFAULT_IOCHARSET="utf8" \
  197. ' `find target/linux -path "target/linux/*/config-*"`
  198. - name: Default PPPOE Setting
  199. if: env.PPPOE_USERNAME && env.PPPOE_PASSWD
  200. run: |
  201. sed -i '$i uci set network.wan.username=${{ env.PPPOE_USERNAME }}' openwrt/package/*/*/my-default-settings/files/etc/uci-defaults/95-default-settings
  202. sed -i '$i uci set network.wan.password=${{ env.PPPOE_PASSWD }}' openwrt/package/*/*/my-default-settings/files/etc/uci-defaults/95-default-settings
  203. sed -i '$i uci commit network' openwrt/package/*/*/my-default-settings/files/etc/uci-defaults/95-default-settings
  204. - name: Defconfig
  205. run: |
  206. cd openwrt
  207. make defconfig
  208. cat .config
  209. - name: Download package
  210. id: package
  211. run: |
  212. cd openwrt
  213. make download -j$(($(nproc)+1)) &
  214. sleep 5
  215. - name: Cache
  216. uses: stupidloud/cachewrtbuild@main
  217. with:
  218. ccache: 'true'
  219. mixkey: ${{ matrix.target }}
  220. clean: ${{ contains(github.event.action, 'nocache') }}
  221. prefix: ${{ github.workspace }}/openwrt
  222. - name: Check space usage
  223. run: |
  224. shopt -s extglob
  225. cd openwrt
  226. if [[ -f staging_dir/*${{ env.MTARGET }}*/bin ]]; then
  227. rm -rf staging_dir/!(*${{ env.MTARGET }}*|host|hostpkg) build_dir/!(*${{ env.MTARGET }}*|host|hostpkg)
  228. fi
  229. df -hT
  230. - name: SSH connection to Actions
  231. uses: kiddin9/debugger-action@master
  232. if: contains(github.event.action, 'ssh')
  233. - name: Compile the firmware
  234. id: compile
  235. run: |
  236. shopt -s extglob
  237. cd openwrt
  238. echo -e "$(($(nproc)+1)) thread compile"
  239. make -j$(($(nproc)+1)) || make V=s &>build.log || (tail -50 build.log; curl -k --data chat_id="${{ env.TELEGRAM_CHAT_ID }}" --data "text=❌ OpenWrt ${{ env.VERSION }} ${{matrix.target}} 编译失败 😂" "https://api.telegram.org/bot${{ env.TELEGRAM_TOKEN }}/sendMessage";exit 1)
  240. sed -i "s/# CONFIG_IB is not set/CONFIG_IB=y/" .config
  241. rm -rf staging_dir/toolchain-*/bin/*openwrt-linux-musl-lto-dump
  242. rm -rf staging_dir/toolchain-*/initial
  243. - name: Organize files
  244. id: organize
  245. continue-on-error: true
  246. run: |
  247. shopt -s extglob
  248. mkdir -p firmware/${{matrix.target}}
  249. cd openwrt; kernel_v="$(make --file=info.mk kernel_version)"; cd -
  250. cp -rf openwrt/bin/targets/*/*/*{combined,sysupgrade}* ./firmware/${{matrix.target}}/ || true
  251. cd openwrt/bin/targets/*/*/
  252. mv -f profiles.json profiles.json.b || true
  253. cp $GITHUB_WORKSPACE/openwrt/.config ${{matrix.target}}.config || true
  254. cp $GITHUB_WORKSPACE/openwrt/build_dir/target-*/linux-*/linux-*/.config ${{matrix.target}}_kernel.config || true
  255. mv -f packages $kernel_v
  256. ln -sf $kernel_v packages
  257. cd -
  258. rename -v "s/openwrt-/${{ env.VERSION }}-openwrt-/" ./firmware/*/* || true
  259. rename -v "s/friendlyarm_//" ./firmware/*/*gz || true
  260. rename -v "s/embedfire_//" ./firmware/*/*gz || true
  261. rename -v "s/xiaomi_redmi-router/redmi/" ./firmware/*/*bin || true
  262. Emoji=("🎉" "🤞" "✨" "🎁" "🎈" "🎄" "🎨" "💋" "🍓" "🍕" "🍉" "💐" "🌴" "🚀" "🛸" "🗽" "⛅" "🌈" "🔥" "⛄" "🐶" "🏅" "🦄" "🐤")
  263. echo "EMOJI=${Emoji[$[$RANDOM % ${#Emoji[@]}]]}" >> $GITHUB_ENV
  264. if [ ${{matrix.target}} == "x86_64" ]; then
  265. echo "DOCKERTAG=${{ secrets.DOCKER_ID }}/openwrt-nginx:latest" >> $GITHUB_ENV
  266. echo "NOTICE=请分配不少于1G的存储容量" >> $GITHUB_ENV
  267. fi
  268. - name: Deploy imagebuilder to server
  269. uses: easingthemes/ssh-deploy@main
  270. continue-on-error: true
  271. if: env.SSH_PRIVATE_KEY && ! contains(github.event.action, 'noser')
  272. with:
  273. SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
  274. ARGS: "-avzr"
  275. SOURCE: openwrt/bin/targets
  276. REMOTE_HOST: ${{ secrets.SERVER_HOST }}
  277. REMOTE_PORT: ${{ secrets.SERVER_PORT }}
  278. REMOTE_USER: root
  279. TARGET: "/www/wwwroot/op.supes.top/releases/tmp/"
  280. - name: Upload firmware for artifact
  281. uses: actions/upload-artifact@main
  282. continue-on-error: true
  283. if: env.UPLOAD_FIRMWARE_FOR_ARTIFACT == 'true'
  284. with:
  285. name: ${{ env.VERSION }}_${{matrix.target}}
  286. path: |
  287. openwrt/bin/targets/
  288. - name: Upload firmware to cowtransfer
  289. if: env.UPLOAD_FIRMWARE_TO_COWTRANSFER == 'true'
  290. continue-on-error: true
  291. run: |
  292. curl -fsSL git.io/file-transfer | sh
  293. cowurl=$(./transfer cow --block 2621440 -s --no-progress ${FIRMWARE})
  294. cowurl=$(echo $cowurl | grep -o -E "https[^ ]*")
  295. echo "COWURL=$cowurl" >> $GITHUB_ENV
  296. echo "Download Link: ${{ env.EMOJI }} $cowurl ${{ env.EMOJI }} 🚀"
  297. - name: Upload firmware to WeTransfer
  298. if: env.UPLOAD_FIRMWARE_TO_WETRANSFER == 'true' && ! contains(github.event.action, 'noup')
  299. continue-on-error: true
  300. run: |
  301. curl -fsSL git.io/file-transfer | sh
  302. wetrans=$(./transfer wet -s -p 16 --no-progress ${FIRMWARE})
  303. wetrans=$(echo $wetrans | grep -o -E "https[^ ]*")
  304. echo "WETRANS=$wetrans" >> $GITHUB_ENV
  305. echo "Download Link: ${{ env.EMOJI }} $wetrans ${{ env.EMOJI }} 🚀"
  306. - name: Create release
  307. id: create_release
  308. if: env.REPO_TOKEN && env.UPLOAD_FIRMWARE_FOR_RELEASE == 'true'
  309. continue-on-error: true
  310. run: |
  311. echo -e "墙内加速下载 🚀:\n" >> release.txt
  312. echo -e "[腾讯云] (https://op.supes.top/firmware/${{matrix.target}}/ ☁)\n" >> release.txt
  313. [ ${{ env.WETRANS }} ] && echo -e "[WeTransfer] (${{ env.WETRANS }} 🗽)\n" >> release.txt
  314. [ ${{ env.COWURL }} ] && echo -e "[奶牛上传] (${{ env.COWURL }} 🐮)\n" >> release.txt
  315. [ ${{ env.NOTICE }} ] && echo -e "${{ env.NOTICE }}" >> release.txt || true
  316. - name: Upload firmware for release
  317. uses: softprops/action-gh-release@master
  318. continue-on-error: true
  319. if: env.REPO_TOKEN && env.UPLOAD_FIRMWARE_FOR_RELEASE == 'true'
  320. env:
  321. GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }}
  322. with:
  323. files: "${{ env.FIRMWARE }}/*"
  324. name: ${{ env.date2 }} ${{matrix.target}} ${{ env.EMOJI }}
  325. tag_name: ${{ env.date }}_${{matrix.target}}
  326. body_path: release.txt
  327. - name: Set Up Docker Buildx
  328. uses: docker/setup-buildx-action@master
  329. if: env.DOCKER_ID && env.DOCKER_PASSWD
  330. - name: Login To DockerHub
  331. uses: docker/login-action@master
  332. if: env.DOCKER_ID && env.DOCKER_PASSWD
  333. with:
  334. username: ${{ secrets.DOCKER_ID }}
  335. password: ${{ secrets.DOCKER_PASSWD }}
  336. - name: Build and push docker image
  337. uses: docker/build-push-action@master
  338. continue-on-error: true
  339. if: env.DOCKER_ID && env.DOCKER_PASSWD && ! contains(github.event.action, 'noser') && github.event.client_payload.target == 'x86_64'
  340. with:
  341. platforms: ${{ env.ARCH }}
  342. file: Dockerfile
  343. context: .
  344. push: true
  345. tags: |
  346. ${{ secrets.DOCKER_ID }}/openwrt-nginx:${{ matrix.target }}
  347. ${{ env.DOCKERTAG }}
  348. - name: WeChat notification
  349. continue-on-error: true
  350. if: env.SCKEY
  351. run: |
  352. # [ steps.compile.outputs.status == 'success' ] && curl https://sctapi.ftqq.com/${{ secrets.SCKEY }}.send?text=🎉OpenWrt_${{ env.VERSION }}_${{matrix.target}}编译完成😋|| curl https://sctapi.ftqq.com/${{ secrets.SCKEY }}.send?text=❌OpenWrt_${{ env.VERSION }}_${{matrix.target}}编译失败😂
  353. - name: Telegram notification
  354. if: env.TELEGRAM_TOKEN && ! contains(github.event.action, 'notg')
  355. continue-on-error: true
  356. run: |
  357. curl -k --data chat_id="${{ env.TELEGRAM_CHAT_ID }}" --data "text=🎉 OpenWrt ${{ env.VERSION }} ${{matrix.target}} 编译成功 😋 https://op.supes.top/firmware/${{matrix.target}}/ ${{ env.COWURL }} ${{ env.WETRANS }} 🚀" "https://api.telegram.org/bot${{ env.TELEGRAM_TOKEN }}/sendMessage"
  358. - name: Delete workflow runs
  359. uses: GitRML/delete-workflow-runs@main
  360. continue-on-error: true
  361. with:
  362. retain_days: 100
  363. keep_minimum_runs: 0
  364. - name: Remove old Releases
  365. uses: dev-drprasad/delete-older-releases@master
  366. continue-on-error: true
  367. if: env.UPLOAD_FIRMWARE_FOR_RELEASE == 'true' && !cancelled()
  368. with:
  369. keep_latest: 15
  370. delete_tags: true
  371. env:
  372. GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }}