Openwrt-AutoBuild.yml 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  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-20.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: cancel running workflows
  36. uses: styfle/cancel-workflow-action@main
  37. if: contains(github.event.action, 'cw')
  38. with:
  39. workflow_id: 4439867
  40. access_token: ${{ github.token }}
  41. - name: Load Settings.ini
  42. run: |
  43. source "${GITHUB_WORKSPACE}/devices/common/settings.ini"
  44. if [ -f "devices/${{matrix.target}}/settings.ini" ]; then
  45. source "${GITHUB_WORKSPACE}/devices/${{matrix.target}}/settings.ini"
  46. fi
  47. echo "REPO_URL=${REPO_URL}" >> $GITHUB_ENV
  48. echo "REPO_BRANCH=${REPO_BRANCH}" >> $GITHUB_ENV
  49. echo "CONFIG_FILE=${CONFIG_FILE}" >> $GITHUB_ENV
  50. echo "DIY_SH=${DIY_SH}" >> $GITHUB_ENV
  51. echo "FREE_UP_DISK=${FREE_UP_DISK}" >> $GITHUB_ENV
  52. echo "UPLOAD_BIN_DIR_FOR_ARTIFACT=${UPLOAD_BIN_DIR_FOR_ARTIFACT}" >> $GITHUB_ENV
  53. echo "UPLOAD_FIRMWARE_FOR_ARTIFACT=${UPLOAD_FIRMWARE_FOR_ARTIFACT}" >> $GITHUB_ENV
  54. echo "UPLOAD_FIRMWARE_FOR_RELEASE=${UPLOAD_FIRMWARE_FOR_RELEASE}" >> $GITHUB_ENV
  55. echo "UPLOAD_FIRMWARE_TO_COWTRANSFER=${UPLOAD_FIRMWARE_TO_COWTRANSFER}" >> $GITHUB_ENV
  56. echo "UPLOAD_FIRMWARE_TO_WETRANSFER=${UPLOAD_FIRMWARE_TO_WETRANSFER}" >> $GITHUB_ENV
  57. if [ ${{matrix.target}} == "x86_64" ]; then
  58. echo "ARCH=linux/amd64" >> $GITHUB_ENV
  59. echo "MTARGET=x86_64" >> $GITHUB_ENV
  60. elif [[ ${{matrix.target}} =~ (Rpi-4B|nanopi-r2s|nanopi-r4s) ]]; then
  61. echo "ARCH=linux/arm64" >> $GITHUB_ENV
  62. fi
  63. if [ ${{matrix.target}} == "Rpi-4B" ]; then
  64. echo "MTARGET=aarch64_cortex-a72" >> $GITHUB_ENV
  65. elif [ ${{matrix.target}} == "nanopi-r2s" ]; then
  66. echo "MTARGET=aarch64_generic" >> $GITHUB_ENV
  67. fi
  68. - name: Trigger Packages Update
  69. run: |
  70. gitdate=$(curl -s "https://api.github.com/repos/kiddin9/openwrt-packages/actions/runs" | jq -r '.workflow_runs[0].created_at')
  71. gitdate=$(date -d "$gitdate" +%s)
  72. now=$(date -d "$(date '+%Y-%m-%d %H:%M:%S')" +%s)
  73. if [[ $(expr $gitdate + 300) < $now ]]; then
  74. curl -X POST https://api.github.com/repos/kiddin9/openwrt-packages/dispatches \
  75. -H "Accept: application/vnd.github.everest-preview+json" \
  76. -H "Authorization: token ${{ secrets.REPO_TOKEN }}" \
  77. --data '{"event_type": "update"}'
  78. fi
  79. - name: Initialization environment
  80. env:
  81. DEBIAN_FRONTEND: noninteractive
  82. run: |
  83. ( sudo -E apt-get -qq update
  84. sudo -E apt-get -qq install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc-s1 libc6-dev-i386 subversion flex uglifyjs gcc-multilib g++-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx-ucl libelf-dev autoconf automake libtool autopoint device-tree-compiler ccache xsltproc rename antlr3 gperf wget curl swig rsync
  85. sudo -E apt-get -qq purge azure-cli ghc* zulu* hhvm llvm* firefox powershell openjdk* dotnet* google* mysql* php* android*
  86. sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc
  87. sudo -E apt-get -qq autoremove --purge
  88. sudo -E apt-get -qq clean ) &
  89. sudo timedatectl set-timezone "$TZ"
  90. - name: Get current date
  91. id: date
  92. run: |
  93. echo "date=$(date +'%m/%d_%Y_%H/%M')" >> $GITHUB_ENV
  94. echo "date2=$(date +'%m/%d %Y')" >> $GITHUB_ENV
  95. VERSION="$(echo "${{github.event.action}}" | grep -Eo " [0-9.]+" | sed -e 's/ //')" || true
  96. [ "$VERSION" ] && echo "VERSION=$VERSION" >> $GITHUB_ENV || echo "VERSION=$(date +'%m.%d')" >> $GITHUB_ENV
  97. - name: Clone source code
  98. run: |
  99. [ "$REPO_BRANCH" ] ||
  100. REPO_BRANCH="$((curl -gs -H 'Content-Type: application/json' \
  101. -H "Authorization: Bearer ${{ secrets.REPO_TOKEN }}" \
  102. -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 v21 | tail -n 1 | sed -e 's/v//')"
  103. git clone $REPO_URL -b v$REPO_BRANCH openwrt
  104. if [[ "${{ contains(github.event.action, 'sdk') }}" == "true" ]]; then
  105. cd openwrt
  106. if [[ ${{matrix.target}} == "x86_64" ]]; then
  107. curl -fL -m 60 -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/x86/64/openwrt-sdk-$REPO_BRANCH-x86-64_gcc-8.4.0_musl.Linux-x86_64.tar.xz || curl -fL -m 60 -o sdk.tar.xz https://openwrt.tetaneutral.net/releases/21.02-SNAPSHOT/targets/x86/64/openwrt-sdk-21.02-SNAPSHOT-x86-64_gcc-8.4.0_musl.Linux-x86_64.tar.xz
  108. elif [[ ${{matrix.target}} == nanopi* ]]; then
  109. curl -fL -m 60 -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/rockchip/armv8/openwrt-sdk-$REPO_BRANCH-rockchip-armv8_gcc-8.4.0_musl.Linux-x86_64.tar.xz || curl -fL -m 60 -o sdk.tar.xz https://openwrt.tetaneutral.net/releases/21.02-SNAPSHOT/targets/rockchip/armv8/openwrt-sdk-21.02-SNAPSHOT-rockchip-armv8_gcc-8.4.0_musl.Linux-x86_64.tar.xz
  110. elif [[ ${{matrix.target}} =~ "Rpi-4B" ]]; then
  111. curl -fL -m 60 -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/bcm27xx/bcm2711/openwrt-sdk-$REPO_BRANCH-bcm27xx-bcm2711_gcc-8.4.0_musl.Linux-x86_64.tar.xz || curl -fL -m 60 -o sdk.tar.xz https://openwrt.tetaneutral.net/releases/21.02-SNAPSHOT/targets/bcm27xx/bcm2711/openwrt-sdk-21.02-SNAPSHOT-bcm27xx-bcm2711_gcc-8.4.0_musl.Linux-x86_64.tar.xz
  112. fi
  113. fi
  114. echo "REPO_BRANCH=$REPO_BRANCH" >> $GITHUB_ENV
  115. - name: Free up disk space
  116. if: env.FREE_UP_DISK == 'true'
  117. env:
  118. DEBIAN_FRONTEND: noninteractive
  119. run: |
  120. sudo mkdir -p -m 777 /mnt/openwrt/dl /mnt/openwrt/staging_dir /mnt/openwrt/build_dir/hostpkg openwrt/build_dir
  121. ln -sf /mnt/openwrt/dl openwrt/dl
  122. ln -sf /mnt/openwrt/staging_dir openwrt/staging_dir
  123. ln -sf /mnt/openwrt/build_dir/hostpkg openwrt/build_dir/hostpkg
  124. - name: Load custom configuration
  125. run: |
  126. cp -rf devices/common/. openwrt/
  127. cp -rf devices/${{matrix.target}}/. openwrt/
  128. cp -rf devices openwrt/
  129. cd openwrt
  130. chmod +x devices/common/$DIY_SH
  131. /bin/bash "devices/common/$DIY_SH"
  132. if [ -f "devices/${{matrix.target}}/$DIY_SH" ]; then
  133. chmod +x devices/${{matrix.target}}/$DIY_SH
  134. /bin/bash "devices/${{matrix.target}}/$DIY_SH"
  135. fi
  136. cp -Rf ./diy/* ./
  137. cp -f devices/common/default-settings package/*/*/my-default-settings/files/uci.defaults
  138. if [ -f "devices/${{matrix.target}}/default-settings" ]; then
  139. echo >> package/*/*/my-default-settings/files/uci.defaults
  140. cat devices/${{matrix.target}}/default-settings >> package/*/*/my-default-settings/files/uci.defaults
  141. fi
  142. cp -f devices/common/$CONFIG_FILE .config
  143. if [ -f "devices/${{matrix.target}}/$CONFIG_FILE" ]; then
  144. echo >> .config
  145. cat devices/${{matrix.target}}/$CONFIG_FILE >> .config
  146. fi
  147. - name: Apply patches
  148. run: |
  149. cd openwrt
  150. find "devices/common/patches" -type f ! -path 'devices/common/patches/china_mirrors.patch' -name '*.patch' -print0 | sort -z | xargs -I % -t -0 -n 1 sh -c "cat '%' | patch -d './' -p1 -E --forward --no-backup-if-mismatch"
  151. if [ -n "$(ls -A "devices/${{matrix.target}}/patches" 2>/dev/null)" ]; then
  152. find "devices/${{matrix.target}}/patches" -type f -name '*.patch' ! -name '*.revert.patch' -print0 | sort -z | xargs -I % -t -0 -n 1 sh -c "cat '%' | patch -d './' -p1 -E --forward --no-backup-if-mismatch"
  153. fi
  154. - name: Default PPPOE Setting
  155. if: env.PPPOE_USERNAME && env.PPPOE_PASSWD
  156. run: |
  157. sed -i '$i uci set network.wan.username=${{ env.PPPOE_USERNAME }}' openwrt/package/*/*/my-default-settings/files/uci.defaults
  158. sed -i '$i uci set network.wan.password=${{ env.PPPOE_PASSWD }}' openwrt/package/*/*/my-default-settings/files/uci.defaults
  159. sed -i '$i uci commit network' openwrt/package/*/*/my-default-settings/files/uci.defaults
  160. - name: SSH connection to Actions
  161. uses: kiddin9/debugger-action@master
  162. if: contains(github.event.action, 'ssh')
  163. - name: Download package
  164. id: package
  165. run: |
  166. cd openwrt
  167. make defconfig
  168. make download -j$(($(nproc)+1)) &
  169. - name: Cache
  170. uses: klever1988/cachewrtbuild@main
  171. with:
  172. ccache: 'true'
  173. clean: ${{ contains(github.event.action, 'nocache') }}
  174. prefix: ${{ github.workspace }}/openwrt
  175. - name: Compile the firmware
  176. id: compile
  177. run: |
  178. cd openwrt
  179. echo -e "$(($(nproc)+1)) thread compile"
  180. make -j$(($(nproc)+1)) || make -j1 V=s
  181. echo "::set-output name=status::success"
  182. mv -f .config ${{matrix.target}}.config
  183. if [ "${{matrix.target}}" == "nanopi-r2s" ]; then
  184. echo "开始编译R2C"
  185. cp -f devices/common/$CONFIG_FILE .config
  186. echo >> .config
  187. cat devices/nanopi-r2c/$CONFIG_FILE >> .config
  188. make defconfig
  189. make -j$(($(nproc)+1)) || make -j1 V=s || {
  190. echo "R2C编译失败";
  191. exit 1;
  192. }
  193. mv -f .config nanopi-r2c.config
  194. echo "开始编译R4S"
  195. cp -f devices/common/$CONFIG_FILE .config
  196. echo >> .config
  197. cat devices/nanopi-r4s/$CONFIG_FILE >> .config
  198. make defconfig
  199. make -j$(($(nproc)+1)) || make -j1 V=s || {
  200. echo "R4S编译失败";
  201. exit 1;
  202. }
  203. mv -f .config nanopi-r4s.config
  204. fi
  205. - name: Check space usage
  206. run: df -hT
  207. - name: Organize files
  208. id: organize
  209. run: |
  210. mkdir -p firmware/${{matrix.target}} firmware/nanopi-r4s firmware/nanopi-r2c kmods
  211. cp openwrt/${{matrix.target}}.config ./firmware/${{matrix.target}}/${{matrix.target}}.config || true
  212. cp openwrt/nanopi-r2c.config firmware/nanopi-r2c/nanopi-r2c.config || true
  213. cp openwrt/nanopi-r4s.config firmware/nanopi-r4s/nanopi-r4s.config || true
  214. cp openwrt/build_dir/target-*/linux-*/linux-*/.config ./firmware/${{matrix.target}}/${{matrix.target}}_kernel.config
  215. kernel_v="$(cat openwrt/include/kernel-5.10 | grep LINUX_KERNEL_HASH-5.10* | cut -f 2 -d - | cut -f 1 -d ' ')"
  216. cp -rf openwrt/bin/targets/*/*/packages ./kmods/$kernel_v
  217. rm -rf openwrt/bin/targets/*/*/packages/*.ipk
  218. cp -rf openwrt/bin/targets/*/*/*r4s*sysupgrade* ./firmware/nanopi-r4s/ || true
  219. cp -rf openwrt/bin/targets/*/*/*r2c*sysupgrade* ./firmware/nanopi-r2c/ || true
  220. cp -rf openwrt/bin/targets/*/*/*{combined,sysupgrade}* ./firmware/${{matrix.target}}/ || true
  221. rename -v "s/openwrt-/${{ env.VERSION }}-openwrt-/" ./firmware/*/* || true
  222. rename -v "s/friendlyarm_//" ./firmware/*/*gz || true
  223. for i in $(ls -d firmware/*/); do
  224. echo "${{ env.VERSION }}.$(date +'%Y')" > $i/version.txt
  225. md5=$((md5sum $i/*squashfs-sysupgrade* || md5sum $i/*squashfs-combined-efi*) | awk '{print $1}') 2>/dev/null
  226. echo $md5 >> $i/version.txt
  227. echo v$REPO_BRANCH >> $i/version.txt
  228. done
  229. Emoji=("🎉" "🤞" "✨" "🎁" "🎈" "🎄" "🎨" "💋" "🍓" "🍕" "🍉" "💐" "🌴" "🚀" "🛸" "🗽" "⛅" "🌈" "🔥" "⛄" "🐶" "🏅" "🦄" "🐤")
  230. echo "EMOJI=${Emoji[$[$RANDOM % ${#Emoji[@]}]]}" >> $GITHUB_ENV
  231. if [ ${{matrix.target}} == "x86_64" ]; then
  232. echo "DOCKERTAG=${{ secrets.DOCKER_ID }}/openwrt-nginx:latest" >> $GITHUB_ENV
  233. echo "NOTICE=请分配不少于1G的存储容量" >> $GITHUB_ENV
  234. fi
  235. - name: Deploy firmware to server
  236. uses: easingthemes/ssh-deploy@main
  237. if: env.SSH_PRIVATE_KEY && ! contains(github.event.action, 'noser')
  238. with:
  239. SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
  240. ARGS: "-avzr --exclude="
  241. SOURCE: firmware/
  242. REMOTE_HOST: op.supes.top
  243. REMOTE_USER: root
  244. TARGET: "/www/wwwroot/op.supes.top/firmware/"
  245. - name: Deploy kmods to server
  246. uses: easingthemes/ssh-deploy@main
  247. if: env.SSH_PRIVATE_KEY && ! contains(github.event.action, 'noser') && env.MTARGET
  248. with:
  249. SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
  250. ARGS: "-avzr"
  251. SOURCE: kmods/
  252. REMOTE_HOST: op.supes.top
  253. REMOTE_USER: root
  254. TARGET: "/www/wwwroot/op.supes.top/packages/${{ env.MTARGET }}/kmods/"
  255. - name: Deploy imagebuilder to server
  256. uses: easingthemes/ssh-deploy@main
  257. if: env.SSH_PRIVATE_KEY && ! contains(github.event.action, 'noser') && env.MTARGET
  258. with:
  259. SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
  260. ARGS: "-avzr"
  261. SOURCE: openwrt/bin/targets
  262. REMOTE_HOST: op.supes.top
  263. REMOTE_USER: root
  264. TARGET: "/www/wwwroot/op.supes.top/releases/${{ env.REPO_BRANCH }}/"
  265. - name: Upload firmware for artifact
  266. uses: actions/upload-artifact@main
  267. continue-on-error: true
  268. if: env.UPLOAD_FIRMWARE_FOR_ARTIFACT == 'true'
  269. with:
  270. name: ${{ env.VERSION }} ${{matrix.target}}
  271. path: |
  272. ./firmware/
  273. openwrt/bin/targets/*/
  274. - name: Upload firmware to cowtransfer
  275. if: env.UPLOAD_FIRMWARE_TO_COWTRANSFER == 'true'
  276. continue-on-error: true
  277. run: |
  278. curl -fsSL git.io/file-transfer | sh
  279. cowurl=$(./transfer cow --block 2621440 -s --no-progress ${FIRMWARE})
  280. cowurl=$(echo $cowurl | grep -o -E "https[^ ]*")
  281. echo "COWURL=$cowurl" >> $GITHUB_ENV
  282. echo "Download Link: ${{ env.EMOJI }} $cowurl ${{ env.EMOJI }} 🚀"
  283. - name: Upload firmware to WeTransfer
  284. if: env.UPLOAD_FIRMWARE_TO_WETRANSFER == 'true' && ! contains(github.event.action, 'noup')
  285. continue-on-error: true
  286. run: |
  287. curl -fsSL git.io/file-transfer | sh
  288. wetrans=$(./transfer wet -s -p 16 --no-progress ${FIRMWARE})
  289. wetrans=$(echo $wetrans | grep -o -E "https[^ ]*")
  290. echo "WETRANS=$wetrans" >> $GITHUB_ENV
  291. echo "Download Link: ${{ env.EMOJI }} $wetrans ${{ env.EMOJI }} 🚀"
  292. - name: Create release
  293. id: create_release
  294. if: env.REPO_TOKEN && env.UPLOAD_FIRMWARE_FOR_RELEASE == 'true'
  295. continue-on-error: true
  296. run: |
  297. echo -e "墙内加速下载 🚀:\n" >> release.txt
  298. echo -e "[腾讯云] (https://op.supes.top/firmware/${{matrix.target}}/ ☁)\n" >> release.txt
  299. [ ${{ env.WETRANS }} ] && echo -e "[WeTransfer] (${{ env.WETRANS }} 🗽)\n" >> release.txt
  300. [ ${{ env.COWURL }} ] && echo -e "[奶牛上传] (${{ env.COWURL }} 🐮)\n" >> release.txt
  301. [ ${{ env.NOTICE }} ] && echo -e "${{ env.NOTICE }}" >> release.txt || true
  302. - name: Upload firmware for release
  303. uses: softprops/action-gh-release@master
  304. continue-on-error: true
  305. if: env.REPO_TOKEN && env.UPLOAD_FIRMWARE_FOR_RELEASE == 'true'
  306. env:
  307. GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }}
  308. with:
  309. files: "${{ env.FIRMWARE }}/*"
  310. name: ${{ env.date2 }} ${{matrix.target}} ${{ env.EMOJI }}
  311. tag_name: ${{ env.date }}_${{matrix.target}}
  312. body_path: release.txt
  313. - name: Set Up Docker Buildx
  314. uses: docker/setup-buildx-action@master
  315. if: env.DOCKER_ID && env.DOCKER_PASSWD
  316. - name: Login To DockerHub
  317. uses: docker/login-action@master
  318. if: env.DOCKER_ID && env.DOCKER_PASSWD
  319. with:
  320. username: ${{ secrets.DOCKER_ID }}
  321. password: ${{ secrets.DOCKER_PASSWD }}
  322. - name: Build and push docker image
  323. uses: docker/build-push-action@master
  324. continue-on-error: true
  325. if: env.DOCKER_ID && env.DOCKER_PASSWD && ! contains(github.event.action, 'noser')
  326. with:
  327. platforms: ${{ env.ARCH }}
  328. file: Dockerfile
  329. context: .
  330. push: true
  331. tags: |
  332. ${{ secrets.DOCKER_ID }}/openwrt-nginx:${{ matrix.target }}
  333. ${{ env.DOCKERTAG }}
  334. - name: WeChat notification
  335. continue-on-error: true
  336. if: env.SCKEY
  337. run: |
  338. # [ 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}}编译失败😂
  339. - name: Telegram notification
  340. if: env.TELEGRAM_TOKEN && ! contains(github.event.action, 'notg')
  341. continue-on-error: true
  342. run: |
  343. [ steps.compile.outputs.status == 'success' ] && curl -k --data chat_id="${{ secrets.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${{ secrets.TELEGRAM_TOKEN }}/sendMessage" || curl -k --data chat_id="${{ secrets.TELEGRAM_TO }}" --data "text=❌ OpenWrt ${{ env.VERSION }} ${{matrix.target}} 编译失败 😂" "https://api.telegram.org/bot${{ secrets.TELEGRAM_TOKEN }}/sendMessage"
  344. - name: Delete workflow runs
  345. uses: GitRML/delete-workflow-runs@main
  346. continue-on-error: true
  347. with:
  348. retain_days: 10
  349. keep_minimum_runs: 0
  350. - name: Remove old Releases
  351. uses: dev-drprasad/delete-older-releases@master
  352. continue-on-error: true
  353. if: env.UPLOAD_FIRMWARE_FOR_RELEASE == 'true' && !cancelled()
  354. with:
  355. keep_latest: 15
  356. delete_tags: true
  357. env:
  358. GITHUB_TOKEN: ${{ secrets.REPO_TOKEN }}