Build-Master.yaml 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  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 (with latest Apple SDK)
  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. # Stubbed!
  94. # END APPLE MACOS BUILD JOB
  95. build_windows_64:
  96. name: Build for Windows x64
  97. needs: create_release
  98. runs-on: windows-latest
  99. steps:
  100. - name: Grab the latest copy of the repository.
  101. uses: actions/checkout@v2
  102. - name: Run automated build script
  103. run: |
  104. cd ${{ runner.workspace }}\ENet-CSharp && &.\Autobuild\githubAutobuild.cmd ${{ runner.workspace }}
  105. - name: Upload release library
  106. id: upload-release-asset
  107. uses: actions/upload-release-asset@v1
  108. env:
  109. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  110. with:
  111. upload_url: ${{ needs.create_release.outputs.create_release_url }}
  112. asset_path: ${{ runner.workspace }}\ReleaseOut\Release.zip
  113. asset_name: libenet-release-win64.zip
  114. asset_content_type: application/zip
  115. - name: Upload debug library
  116. id: upload-debug-asset
  117. uses: actions/upload-release-asset@v1
  118. env:
  119. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  120. with:
  121. upload_url: ${{ needs.create_release.outputs.create_release_url }}
  122. asset_path: ${{ runner.workspace }}\DebugOut\Debug.zip
  123. asset_name: libenet-debug-win64.zip
  124. asset_content_type: application/zip
  125. # START APPLE IOS BUILD JOB
  126. build_apple_mobile:
  127. name: Build for Apple iOS
  128. needs: create_release
  129. runs-on: macos-latest
  130. steps:
  131. - name: Setup Xcode (with latest Apple SDK)
  132. uses: maxim-lobanov/[email protected]
  133. with:
  134. xcode-version: 11.6
  135. - name: Grab the latest copy of the repository.
  136. uses: actions/checkout@v2
  137. - name: Create temporary staging directories.
  138. run: |
  139. mkdir -p ${{ runner.workspace }}/temp/Release
  140. mkdir -p ${{ runner.workspace }}/temp/Debug
  141. - name: Run iOS build script in production mode.
  142. run: |
  143. cd $GITHUB_WORKSPACE/Build-iOS ; chmod +x ./Build-iOS.command ; ./Build-iOS.command
  144. zip -j -9 ${{ runner.workspace }}/temp/Release/libenet.zip $GITHUB_WORKSPACE/Build-iOS/build/Release-iphoneos/libenet.a
  145. - name: Run iOS build script in Debug mode.
  146. run: |
  147. 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
  148. zip -j -9 ${{ runner.workspace }}/temp/Debug/libenet.zip $GITHUB_WORKSPACE/Build-iOS/build/Debug-iphoneos/libenet.a
  149. - name: Upload release library
  150. id: upload-release-asset
  151. uses: actions/upload-release-asset@v1
  152. env:
  153. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  154. with:
  155. upload_url: ${{ needs.create_release.outputs.create_release_url }}
  156. asset_path: ${{ runner.workspace }}/temp/Release/libenet.zip
  157. asset_name: libenet-release-iOS.zip
  158. asset_content_type: application/zip
  159. - name: Upload debug library
  160. id: upload-debug-asset
  161. uses: actions/upload-release-asset@v1
  162. env:
  163. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  164. with:
  165. upload_url: ${{ needs.create_release.outputs.create_release_url }}
  166. asset_path: ${{ runner.workspace }}/temp/Debug/libenet.zip
  167. asset_name: libenet-debug-iOS.zip
  168. asset_content_type: application/zip
  169. # END APPLE IOS BUILD JOB
  170. # START ANDROID BUILD JOB
  171. build_android:
  172. name: Build for Android
  173. needs: create_release
  174. runs-on: ubuntu-latest
  175. steps:
  176. - name: Grab the latest copy of the repository.
  177. uses: actions/checkout@v2
  178. # Stubbed!
  179. # END ANDROID BUILD JOB
  180. # end of build jobs.