release_process.yml 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. # Copyright (C) 2019 Intel Corporation. All rights reserved.
  2. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  3. name: the binary release processes
  4. on:
  5. workflow_dispatch:
  6. inputs:
  7. require_confirmation:
  8. description: "If the process requires a confirmation"
  9. type: boolean
  10. required: false
  11. default: false
  12. release_wamr_sdk:
  13. description: "If the WAMR SDK in the release"
  14. type: boolean
  15. required: false
  16. default: false
  17. release_wamr_lldb:
  18. description: "If the WAMR LLDB in the release"
  19. type: boolean
  20. required: false
  21. default: false
  22. release_wamr_ide_vscode_ext:
  23. description: "If the WAMR VSCode extension in the release"
  24. type: boolean
  25. required: false
  26. default: false
  27. release_wamr_wasi_ext:
  28. description: "If the WAMR WASI extensions in the release"
  29. type: boolean
  30. required: false
  31. default: true
  32. # Cancel any in-flight jobs for the same PR/branch so there's only one active
  33. # at a time
  34. concurrency:
  35. group: ${{ github.workflow }}-${{ github.ref }}
  36. cancel-in-progress: true
  37. permissions:
  38. contents: read
  39. jobs:
  40. create_tag:
  41. permissions:
  42. contents: write # create and push tags
  43. uses: ./.github/workflows/create_tag.yml
  44. create_release:
  45. permissions:
  46. contents: write # create release
  47. needs: [create_tag]
  48. runs-on: ubuntu-latest
  49. outputs:
  50. upload_url: ${{ steps.create_release.outputs.upload_url }}
  51. steps:
  52. - uses: actions/checkout@v6.0.1
  53. - name: prepare the release note
  54. run: |
  55. extract_result="$(python3 ./.github/scripts/extract_from_release_notes.py RELEASE_NOTES.md)"
  56. echo "RELEASE_NOTE<<EOF" >> $GITHUB_ENV
  57. echo "${extract_result}" >> $GITHUB_ENV
  58. echo "EOF" >> $GITHUB_ENV
  59. - name: create a release
  60. id: create_release
  61. uses: actions/create-release@v1
  62. env:
  63. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  64. with:
  65. tag_name: ${{ needs.create_tag.outputs.new_tag }}
  66. release_name: ${{ needs.create_tag.outputs.new_tag }}
  67. prerelease: ${{ inputs.require_confirmation || needs.create_tag.outputs.minor_version }}
  68. draft: false
  69. body: ${{ env.RELEASE_NOTE }}
  70. #
  71. # LLVM_LIBRARIES
  72. build_llvm_libraries_on_ubuntu_2204:
  73. permissions:
  74. contents: read
  75. actions: write
  76. needs: [create_tag, create_release]
  77. uses: ./.github/workflows/build_llvm_libraries.yml
  78. with:
  79. os: "ubuntu-22.04"
  80. arch: "AArch64 ARM Mips RISCV X86"
  81. #CLARIFY: Require to build LLVM libraries on ARM macOS?
  82. build_llvm_libraries_on_macos:
  83. permissions:
  84. contents: read
  85. actions: write
  86. needs: [create_tag, create_release]
  87. uses: ./.github/workflows/build_llvm_libraries.yml
  88. with:
  89. os: "macos-15-intel"
  90. arch: "AArch64 ARM Mips RISCV X86"
  91. build_llvm_libraries_on_windows:
  92. permissions:
  93. contents: read
  94. actions: write
  95. needs: [create_tag, create_release]
  96. uses: ./.github/workflows/build_llvm_libraries.yml
  97. with:
  98. os: "windows-2022"
  99. arch: "AArch64 ARM Mips RISCV X86"
  100. #
  101. # WAMRC
  102. release_wamrc_on_ubuntu_2204:
  103. permissions:
  104. contents: write # upload release artifact
  105. needs: [create_tag, create_release, build_llvm_libraries_on_ubuntu_2204]
  106. uses: ./.github/workflows/build_wamrc.yml
  107. with:
  108. llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }}
  109. release: true
  110. runner: ubuntu-22.04
  111. upload_url: ${{ needs.create_release.outputs.upload_url }}
  112. ver_num: ${{ needs.create_tag.outputs.new_ver }}
  113. #CLARIFY: Require to release wamrc on ARM macOS?
  114. release_wamrc_on_ubuntu_macos:
  115. permissions:
  116. contents: write # upload release artifact
  117. needs: [create_tag, create_release, build_llvm_libraries_on_macos]
  118. uses: ./.github/workflows/build_wamrc.yml
  119. with:
  120. llvm_cache_key: ${{ needs.build_llvm_libraries_on_macos.outputs.cache_key }}
  121. release: true
  122. runner: macos-15-intel
  123. upload_url: ${{ needs.create_release.outputs.upload_url }}
  124. ver_num: ${{ needs.create_tag.outputs.new_ver }}
  125. release_wamrc_on_windows:
  126. permissions:
  127. contents: write # upload release artifact
  128. needs: [create_tag, create_release, build_llvm_libraries_on_windows]
  129. uses: ./.github/workflows/build_wamrc.yml
  130. with:
  131. llvm_cache_key: ${{ needs.build_llvm_libraries_on_windows.outputs.cache_key }}
  132. release: true
  133. runner: windows-2022
  134. upload_url: ${{ needs.create_release.outputs.upload_url }}
  135. ver_num: ${{ needs.create_tag.outputs.new_ver }}
  136. #
  137. # IWASM
  138. release_iwasm_on_ubuntu_2204:
  139. permissions:
  140. contents: write # upload release artifact
  141. needs: [create_tag, create_release, build_llvm_libraries_on_ubuntu_2204]
  142. uses: ./.github/workflows/build_iwasm_release.yml
  143. with:
  144. cwd: product-mini/platforms/linux
  145. llvm_cache_key: ${{ needs.build_llvm_libraries_on_ubuntu_2204.outputs.cache_key }}
  146. runner: ubuntu-22.04
  147. upload_url: ${{ needs.create_release.outputs.upload_url }}
  148. ver_num: ${{ needs.create_tag.outputs.new_ver}}
  149. #CLARIFY: Require to release iwasm on ARM macOS?
  150. release_iwasm_on_macos:
  151. permissions:
  152. contents: write # upload release artifact
  153. needs: [create_tag, create_release, build_llvm_libraries_on_macos]
  154. uses: ./.github/workflows/build_iwasm_release.yml
  155. with:
  156. cwd: product-mini/platforms/darwin
  157. llvm_cache_key: ${{ needs.build_llvm_libraries_on_macos.outputs.cache_key }}
  158. runner: macos-15-intel
  159. upload_url: ${{ needs.create_release.outputs.upload_url }}
  160. ver_num: ${{ needs.create_tag.outputs.new_ver}}
  161. release_iwasm_on_windows:
  162. permissions:
  163. contents: write # upload release artifact
  164. needs: [create_tag, create_release, build_llvm_libraries_on_windows]
  165. uses: ./.github/workflows/build_iwasm_release.yml
  166. with:
  167. cwd: product-mini/platforms/windows
  168. llvm_cache_key: ${{ needs.build_llvm_libraries_on_windows.outputs.cache_key }}
  169. runner: windows-2022
  170. upload_url: ${{ needs.create_release.outputs.upload_url }}
  171. ver_num: ${{ needs.create_tag.outputs.new_ver}}
  172. #
  173. # WAMR_SDK
  174. release_wamr_sdk_on_ubuntu_2204:
  175. permissions:
  176. contents: write # upload release artifact
  177. needs: [create_tag, create_release]
  178. if: ${{ inputs.release_wamr_sdk }}
  179. uses: ./.github/workflows/build_wamr_sdk.yml
  180. with:
  181. config_file: wamr_config_ubuntu_release.cmake
  182. runner: ubuntu-22.04
  183. upload_url: ${{ needs.create_release.outputs.upload_url }}
  184. ver_num: ${{ needs.create_tag.outputs.new_ver}}
  185. wasi_sdk_url: https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-19/wasi-sdk-19.0-linux.tar.gz
  186. wamr_app_framework_url: https://github.com/bytecodealliance/wamr-app-framework.git
  187. #CLARIFY: Require to release WAMR SDK on ARM macOS?
  188. release_wamr_sdk_on_macos:
  189. permissions:
  190. contents: write # upload release artifact
  191. needs: [create_tag, create_release]
  192. if: ${{ inputs.release_wamr_sdk }}
  193. uses: ./.github/workflows/build_wamr_sdk.yml
  194. with:
  195. config_file: wamr_config_macos_release.cmake
  196. runner: macos-15-intel
  197. upload_url: ${{ needs.create_release.outputs.upload_url }}
  198. ver_num: ${{ needs.create_tag.outputs.new_ver}}
  199. wasi_sdk_url: https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-19/wasi-sdk-19.0-macos.tar.gz
  200. wamr_app_framework_url: https://github.com/bytecodealliance/wamr-app-framework.git
  201. # vscode extension cross-platform
  202. release_wamr_ide_vscode_ext:
  203. permissions:
  204. contents: write # upload release artifact
  205. needs: [create_tag, create_release]
  206. if: ${{ inputs.release_wamr_ide_vscode_ext}}
  207. uses: ./.github/workflows/build_wamr_vscode_ext.yml
  208. secrets: inherit
  209. with:
  210. upload_url: ${{ needs.create_release.outputs.upload_url }}
  211. ver_num: ${{ needs.create_tag.outputs.new_ver }}
  212. #
  213. # vscode extension docker images package
  214. release_wamr_ide_docker_images_package:
  215. permissions:
  216. contents: write # upload release artifact
  217. needs: [create_tag, create_release]
  218. if: ${{ inputs.release_wamr_ide_vscode_ext}}
  219. uses: ./.github/workflows/build_docker_images.yml
  220. with:
  221. upload_url: ${{ needs.create_release.outputs.upload_url }}
  222. ver_num: ${{ needs.create_tag.outputs.new_ver }}
  223. #
  224. # WAMR_LLDB
  225. release_wamr_lldb_on_ubuntu_2204:
  226. permissions:
  227. contents: write # upload release artifact
  228. needs: [create_tag, create_release]
  229. if: ${{ inputs.release_wamr_lldb }}
  230. uses: ./.github/workflows/build_wamr_lldb.yml
  231. with:
  232. runner: ubuntu-22.04
  233. upload_url: ${{ needs.create_release.outputs.upload_url }}
  234. ver_num: ${{ needs.create_tag.outputs.new_ver}}
  235. #CLARIFY: Require to release WAMR LLDB on ARM macOS?
  236. release_wamr_lldb_on_macos_universal:
  237. permissions:
  238. contents: write # upload release artifact
  239. needs: [create_tag, create_release]
  240. if: ${{ inputs.release_wamr_lldb }}
  241. uses: ./.github/workflows/build_wamr_lldb.yml
  242. with:
  243. runner: macos-15-intel
  244. arch: universal
  245. upload_url: ${{ needs.create_release.outputs.upload_url }}
  246. ver_num: ${{ needs.create_tag.outputs.new_ver}}
  247. release_wamr_wasi_extensions:
  248. permissions:
  249. contents: write # upload release artifact
  250. needs: [create_tag, create_release]
  251. if: ${{ inputs.release_wamr_wasi_ext }}
  252. uses: ./.github/workflows/build_wamr_wasi_extensions.yml
  253. with:
  254. upload_url: ${{ needs.create_release.outputs.upload_url }}
  255. ver_num: ${{ needs.create_tag.outputs.new_ver }}