Build-Master.yaml 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. name: Master Build
  2. on:
  3. push:
  4. branches: [ master ]
  5. pull_request:
  6. branches: [ master ]
  7. jobs:
  8. # START LINUX BUILD JOB
  9. build_linux64:
  10. name: Build for Linux 64bit (Ubuntu)
  11. runs-on: ubuntu-latest
  12. outputs:
  13. build_number: ${{ steps.buildnumber.outputs.build_number }}
  14. create_release_url: ${{ steps.create_release.outputs.upload_url }}
  15. steps:
  16. - name: Generate build number
  17. id: buildnumber
  18. uses: einaregilsson/build-number@v2
  19. with:
  20. token: ${{secrets.github_token}}
  21. - name: Checkout code
  22. uses: actions/checkout@v2
  23. - name: Create temporary directories.
  24. run: |
  25. mkdir -p ${{ runner.workspace }}/ReleaseTemp/Release
  26. mkdir -p ${{ runner.workspace }}/ReleaseTemp/Debug
  27. - name: Run CMake to configure and create a Release build
  28. uses: ashutoshvarma/action-cmake-build@master
  29. with:
  30. build-dir: ${{ runner.workspace }}/build-release
  31. cc: gcc
  32. cxx: g++
  33. build-type: Release
  34. configure-options: -DENET_DEBUG=0
  35. - name: Stash compiled library
  36. run: |
  37. cp ${{ runner.workspace }}/build-release/libenet.so ${{ runner.workspace }}/ReleaseTemp/Release/libenet.so
  38. zip -j -9 ${{ runner.workspace }}/ReleaseTemp/Release.zip ${{ runner.workspace }}/ReleaseTemp/Release/libenet.so
  39. - name: Upload release build artifact
  40. uses: actions/upload-artifact@v2
  41. with:
  42. name: Linux64-Release-Binary
  43. path: ${{ runner.workspace }}/build-release/libenet.so
  44. - name: Run CMake to configure and create a Debug build.
  45. uses: ashutoshvarma/action-cmake-build@master
  46. with:
  47. build-dir: ${{ runner.workspace }}/build-debug
  48. cc: gcc
  49. cxx: g++
  50. build-type: Debug
  51. configure-options: -DENET_DEBUG=1
  52. - name: Stash compiled library
  53. run: |
  54. cp ${{ runner.workspace }}/build-debug/libenet.so ${{ runner.workspace }}/ReleaseTemp/Debug/libenet.so
  55. zip -j -9 ${{ runner.workspace }}/ReleaseTemp/Debug.zip ${{ runner.workspace }}/ReleaseTemp/Debug/libenet.so
  56. - name: Upload debug build artifact
  57. uses: actions/upload-artifact@v2
  58. with:
  59. name: Linux64-Debug-Binary
  60. path: ${{ runner.workspace }}/build-debug/libenet.so
  61. - name: Create a release
  62. id: create_release
  63. uses: actions/create-release@v1
  64. env:
  65. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  66. with:
  67. tag_name: autobuild-${{ steps.buildnumber.outputs.build_number }}
  68. release_name: ENET Native Libraries (Autobuild ${{ steps.buildnumber.outputs.build_number }})
  69. body: This is an automatic build of ENET for various operating systems. Please do not mix and match ENET native binaries as code differences between forks may cause crashes. The release archive contains one for use in shipping, while the debug archive has logging facilities.
  70. draft: false
  71. prerelease: false
  72. - name: Upload Release Asset
  73. id: upload-release-asset
  74. uses: actions/upload-release-asset@v1
  75. env:
  76. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  77. with:
  78. upload_url: ${{ steps.create_release.outputs.upload_url }}
  79. asset_path: ${{ runner.workspace }}/ReleaseTemp/Release.zip
  80. asset_name: libenet-release-linux64.zip
  81. asset_content_type: application/zip
  82. - name: Upload Debug Asset
  83. id: upload-debug-asset
  84. uses: actions/upload-release-asset@v1
  85. env:
  86. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  87. with:
  88. upload_url: ${{ steps.create_release.outputs.upload_url }}
  89. asset_path: ${{ runner.workspace }}/ReleaseTemp/Debug.zip
  90. asset_name: libenet-debug-linux64.zip
  91. asset_content_type: application/zip
  92. # END LINUX BUILD JOB
  93. # START APPLE IOS BUILD JOB
  94. build_apple_mobile:
  95. name: Build for Apple iOS
  96. needs: build_linux64
  97. runs-on: macos-latest
  98. steps:
  99. - name: Setup XCode (with latest Apple SDK)
  100. uses: maxim-lobanov/[email protected]
  101. with:
  102. xcode-version: latest
  103. - name: Checkout Code
  104. uses: actions/checkout@v2
  105. - name: Make temp directories.
  106. run: |
  107. mkdir -p ${{ runner.workspace }}/temp/Release
  108. mkdir -p ${{ runner.workspace }}/temp/Debug
  109. - name: Run repository build script in Release mode
  110. run: |
  111. cd $GITHUB_WORKSPACE/Build-iOS ; chmod +x ./Build-iOS.command ; ./Build-iOS.command
  112. zip -j -9 ${{ runner.workspace }}/temp/Release/libenet.zip $GITHUB_WORKSPACE/Build-iOS/build/Release-iphoneos/libenet.a
  113. - name: Run repository build script in Debug mode
  114. run: |
  115. 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
  116. zip -j -9 ${{ runner.workspace }}/temp/Debug/libenet.zip $GITHUB_WORKSPACE/Build-iOS/build/Debug-iphoneos/libenet.a
  117. - name: Stash release build artifact
  118. uses: actions/upload-artifact@v2
  119. with:
  120. name: iOS-enet-Release
  121. path: ${{ runner.workspace }}/temp/Release/libenet.zip
  122. - name: Stash debug build artifact
  123. uses: actions/upload-artifact@v2
  124. with:
  125. name: iOS-enet-Debug
  126. path: ${{ runner.workspace }}/temp/Debug/libenet.zip
  127. - name: Upload Release Asset
  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.build_linux64.outputs.create_release_url }}
  134. asset_path: ${{ runner.workspace }}/temp/Release/libenet.zip
  135. asset_name: libenet-release-iOS.zip
  136. asset_content_type: application/zip
  137. - name: Upload Debug Asset
  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.build_linux64.outputs.create_release_url }}
  144. asset_path: ${{ runner.workspace }}/temp/Debug/libenet.zip
  145. asset_name: libenet-debug-iOS.zip
  146. asset_content_type: application/zip
  147. # END APPLE IOS BUILD JOB