name: Master Build on: push: branches: [ master ] pull_request: branches: [ master ] jobs: # START LINUX BUILD JOB build_linux64: name: Build for Linux 64bit (Ubuntu) runs-on: ubuntu-latest outputs: build_number: ${{ steps.buildnumber.outputs.build_number }} create_release_url: ${{ steps.create_release.outputs.upload_url }} steps: - name: Generate build number id: buildnumber uses: einaregilsson/build-number@v2 with: token: ${{secrets.github_token}} - name: Checkout code uses: actions/checkout@v2 - name: Create temporary directories. run: | mkdir -p ${{ runner.workspace }}/ReleaseTemp/Release mkdir -p ${{ runner.workspace }}/ReleaseTemp/Debug - name: Run CMake to configure and create a Release build uses: ashutoshvarma/action-cmake-build@master with: build-dir: ${{ runner.workspace }}/build-release cc: gcc cxx: g++ build-type: Release configure-options: -DENET_DEBUG=0 - name: Stash compiled library run: | cp ${{ runner.workspace }}/build-release/libenet.so ${{ runner.workspace }}/ReleaseTemp/Release/libenet.so zip -j -9 ${{ runner.workspace }}/ReleaseTemp/Release.zip ${{ runner.workspace }}/ReleaseTemp/Release/libenet.so - name: Upload release build artifact uses: actions/upload-artifact@v2 with: name: Linux64-Release-Binary path: ${{ runner.workspace }}/build-release/libenet.so - name: Run CMake to configure and create a Debug build. uses: ashutoshvarma/action-cmake-build@master with: build-dir: ${{ runner.workspace }}/build-debug cc: gcc cxx: g++ build-type: Debug configure-options: -DENET_DEBUG=1 - name: Stash compiled library run: | cp ${{ runner.workspace }}/build-debug/libenet.so ${{ runner.workspace }}/ReleaseTemp/Debug/libenet.so zip -j -9 ${{ runner.workspace }}/ReleaseTemp/Debug.zip ${{ runner.workspace }}/ReleaseTemp/Debug/libenet.so - name: Upload debug build artifact uses: actions/upload-artifact@v2 with: name: Linux64-Debug-Binary path: ${{ runner.workspace }}/build-debug/libenet.so - name: Create a release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: autobuild-${{ steps.buildnumber.outputs.build_number }} release_name: ENET Native Libraries (Autobuild ${{ steps.buildnumber.outputs.build_number }}) 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. draft: false prerelease: false - name: Upload Release Asset id: upload-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ${{ runner.workspace }}/ReleaseTemp/Release.zip asset_name: libenet-release-linux64.zip asset_content_type: application/zip - name: Upload Debug Asset id: upload-debug-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ${{ runner.workspace }}/ReleaseTemp/Debug.zip asset_name: libenet-debug-linux64.zip asset_content_type: application/zip # END LINUX BUILD JOB # START APPLE IOS BUILD JOB build_apple_mobile: name: Build for Apple iOS needs: build_linux64 runs-on: macos-latest steps: - name: Setup XCode (with latest Apple SDK) uses: maxim-lobanov/setup-xcode@1.0 with: xcode-version: latest - name: Checkout Code uses: actions/checkout@v2 - name: Make temp directories. run: | mkdir -p ${{ runner.workspace }}/temp/Release mkdir -p ${{ runner.workspace }}/temp/Debug - name: Run repository build script in Release mode run: | cd $GITHUB_WORKSPACE/Build-iOS ; chmod +x ./Build-iOS.command ; ./Build-iOS.command zip -j -9 ${{ runner.workspace }}/temp/Release/libenet.zip $GITHUB_WORKSPACE/Build-iOS/build/Release-iphoneos/libenet.a - name: Run repository build script in Debug mode run: | 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 zip -j -9 ${{ runner.workspace }}/temp/Debug/libenet.zip $GITHUB_WORKSPACE/Build-iOS/build/Debug-iphoneos/libenet.a - name: Stash release build artifact uses: actions/upload-artifact@v2 with: name: iOS-enet-Release path: ${{ runner.workspace }}/temp/Release/libenet.zip - name: Stash debug build artifact uses: actions/upload-artifact@v2 with: name: iOS-enet-Debug path: ${{ runner.workspace }}/temp/Debug/libenet.zip - name: Upload Release Asset id: upload-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.build_linux64.outputs.create_release_url }} asset_path: ${{ runner.workspace }}/temp/Release/libenet.zip asset_name: libenet-release-iOS.zip asset_content_type: application/zip - name: Upload Debug Asset id: upload-debug-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.build_linux64.outputs.create_release_url }} asset_path: ${{ runner.workspace }}/temp/Debug/libenet.zip asset_name: libenet-debug-iOS.zip asset_content_type: application/zip # END APPLE IOS BUILD JOB