Build-Master.yaml 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. name: Master Build
  2. on:
  3. push:
  4. # branches: [ master ]
  5. tags:
  6. - 'v2.*'
  7. jobs:
  8. create_release:
  9. name: Prepare a new release
  10. # Really?
  11. runs-on: ubuntu-latest
  12. outputs:
  13. create_release_url: ${{ steps.create_release.outputs.upload_url }}
  14. steps:
  15. - name: Create release on repository
  16. id: create_release
  17. uses: actions/create-release@v1
  18. env:
  19. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  20. with:
  21. tag_name: "autobuild-${{ github.run_number }}"
  22. release_name: "ENet Native Libraries (Autobuild ${{ github.run_number }})"
  23. body: "This is an automated build of the ENet native libraries, and is up to date with the latest commits. The attached per-platform archives contain ENet built in both production and debug environments."
  24. draft: false
  25. prerelease: false
  26. # START LINUX BUILD JOB
  27. build_linux64:
  28. name: Build for Linux x64
  29. needs: create_release
  30. runs-on: ubuntu-latest
  31. steps:
  32. - name: Grab the latest copy of the repository.
  33. uses: actions/checkout@v2
  34. - name: Create temporary staging directories.
  35. run: |
  36. mkdir -p ${{ runner.workspace }}/ReleaseTemp/Release
  37. mkdir -p ${{ runner.workspace }}/ReleaseTemp/Debug
  38. - name: Configure and build release binary.
  39. uses: ashutoshvarma/action-cmake-build@master
  40. with:
  41. build-dir: ${{ runner.workspace }}/build-release
  42. cc: gcc
  43. cxx: g++
  44. build-type: Release
  45. configure-options: -DENET_DEBUG=0
  46. - name: Configure and build debug binary.
  47. uses: ashutoshvarma/action-cmake-build@master
  48. with:
  49. build-dir: ${{ runner.workspace }}/build-debug
  50. cc: gcc
  51. cxx: g++
  52. build-type: Debug
  53. configure-options: -DENET_DEBUG=1
  54. - name: Stash compiled libraries
  55. run: |
  56. cp ${{ runner.workspace }}/build-release/libenet.so ${{ runner.workspace }}/ReleaseTemp/Release/libenet.so
  57. cp ${{ runner.workspace }}/build-debug/libenet.so ${{ runner.workspace }}/ReleaseTemp/Debug/libenet.so
  58. zip -j -9 ${{ runner.workspace }}/ReleaseTemp/Release.zip ${{ runner.workspace }}/ReleaseTemp/Release/libenet.so
  59. zip -j -9 ${{ runner.workspace }}/ReleaseTemp/Debug.zip ${{ runner.workspace }}/ReleaseTemp/Debug/libenet.so
  60. - name: Upload release library
  61. id: upload-release-asset
  62. uses: actions/upload-release-asset@v1
  63. env:
  64. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  65. with:
  66. upload_url: ${{ needs.create_release.outputs.create_release_url }}
  67. asset_path: ${{ runner.workspace }}/ReleaseTemp/Release.zip
  68. asset_name: libenet-release-linux64.zip
  69. asset_content_type: application/zip
  70. - name: Upload debug library
  71. id: upload-debug-asset
  72. uses: actions/upload-release-asset@v1
  73. env:
  74. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  75. with:
  76. upload_url: ${{ needs.create_release.outputs.create_release_url }}
  77. asset_path: ${{ runner.workspace }}/ReleaseTemp/Debug.zip
  78. asset_name: libenet-debug-linux64.zip
  79. asset_content_type: application/zip
  80. # END LINUX BUILD JOB
  81. # START APPLE MACOS BUILD JOB
  82. build_apple_64:
  83. name: Build for MacOS
  84. needs: create_release
  85. runs-on: macos-latest
  86. steps:
  87. - name: Setup XCode
  88. uses: maxim-lobanov/[email protected]
  89. with:
  90. xcode-version: 11.6
  91. - name: Grab the latest copy of the repository.
  92. uses: actions/checkout@v2
  93. - name: Run automated build script.
  94. run: |
  95. cd ${{ runner.workspace }}/ENet-CSharp && bash AutoBuild/githubAutoBuild.command
  96. - name: Upload release library
  97. id: upload-release-asset
  98. uses: actions/upload-release-asset@v1
  99. env:
  100. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  101. with:
  102. upload_url: ${{ needs.create_release.outputs.create_release_url }}
  103. asset_path: ${{ runner.workspace }}/ENet-CSharp/ReleaseOut/Release.zip
  104. asset_name: libenet-release-MacOS.zip
  105. asset_content_type: application/zip
  106. - name: Upload debug library
  107. id: upload-debug-asset
  108. uses: actions/upload-release-asset@v1
  109. env:
  110. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  111. with:
  112. upload_url: ${{ needs.create_release.outputs.create_release_url }}
  113. asset_path: ${{ runner.workspace }}/ENet-CSharp/DebugOut/Debug.zip
  114. asset_name: libenet-debug-MacOS.zip
  115. asset_content_type: application/zip
  116. # END APPLE MACOS BUILD JOB
  117. build_windows_64:
  118. name: Build for Windows x64
  119. needs: create_release
  120. runs-on: windows-latest
  121. steps:
  122. - name: Grab the latest copy of the repository.
  123. uses: actions/checkout@v2
  124. - name: Run automated build script
  125. run: |
  126. cd ${{ runner.workspace }}\ENet-CSharp && &.\Autobuild\githubAutobuild.cmd ${{ runner.workspace }}
  127. - name: Upload release library
  128. id: upload-release-asset
  129. uses: actions/upload-release-asset@v1
  130. env:
  131. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  132. with:
  133. upload_url: ${{ needs.create_release.outputs.create_release_url }}
  134. asset_path: ${{ runner.workspace }}\ReleaseOut\Release.zip
  135. asset_name: libenet-release-win64.zip
  136. asset_content_type: application/zip
  137. - name: Upload debug library
  138. id: upload-debug-asset
  139. uses: actions/upload-release-asset@v1
  140. env:
  141. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  142. with:
  143. upload_url: ${{ needs.create_release.outputs.create_release_url }}
  144. asset_path: ${{ runner.workspace }}/DebugOut/Debug.zip
  145. asset_name: libenet-debug-win64.zip
  146. asset_content_type: application/zip
  147. # START APPLE IOS BUILD JOB
  148. build_apple_mobile:
  149. name: Build for Apple iOS
  150. needs: create_release
  151. runs-on: macos-latest
  152. steps:
  153. - name: Setup XCode
  154. uses: maxim-lobanov/[email protected]
  155. with:
  156. xcode-version: 11.6
  157. - name: Grab the latest copy of the repository.
  158. uses: actions/checkout@v2
  159. - name: Create temporary staging directories.
  160. run: |
  161. mkdir -p ${{ runner.workspace }}/temp/Release
  162. mkdir -p ${{ runner.workspace }}/temp/Debug
  163. - name: Run iOS build script in production mode.
  164. run: |
  165. cd $GITHUB_WORKSPACE/Build-iOS ; chmod +x ./Build-iOS.command ; ./Build-iOS.command
  166. zip -j -9 ${{ runner.workspace }}/temp/Release/libenet.zip $GITHUB_WORKSPACE/Build-iOS/build/Release-iphoneos/libenet.a
  167. - name: Run iOS build script in Debug mode.
  168. run: |
  169. cd $GITHUB_WORKSPACE/Build-iOS; sed -i '' 's/BUILD_TYPE="Release"/BUILD_TYPE="Debug"/g' Build-iOS.command ; chmod +x ./Build-iOS.command ; ./Build-iOS.command
  170. zip -j -9 ${{ runner.workspace }}/temp/Debug/libenet.zip $GITHUB_WORKSPACE/Build-iOS/build/Debug-iphoneos/libenet.a
  171. - name: Upload release library
  172. id: upload-release-asset
  173. uses: actions/upload-release-asset@v1
  174. env:
  175. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  176. with:
  177. upload_url: ${{ needs.create_release.outputs.create_release_url }}
  178. asset_path: ${{ runner.workspace }}/temp/Release/libenet.zip
  179. asset_name: libenet-release-iOS.zip
  180. asset_content_type: application/zip
  181. - name: Upload debug library
  182. id: upload-debug-asset
  183. uses: actions/upload-release-asset@v1
  184. env:
  185. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  186. with:
  187. upload_url: ${{ needs.create_release.outputs.create_release_url }}
  188. asset_path: ${{ runner.workspace }}/temp/Debug/libenet.zip
  189. asset_name: libenet-debug-iOS.zip
  190. asset_content_type: application/zip
  191. # END APPLE IOS BUILD JOB
  192. # START ANDROID BUILD JOB
  193. build_android:
  194. name: Build for Android
  195. needs: create_release
  196. runs-on: ubuntu-latest
  197. steps:
  198. - name: Grab the latest copy of the repository.
  199. uses: actions/checkout@v2
  200. # Stubbed!
  201. # END ANDROID BUILD JOB
  202. # end of build jobs.