name: Master Build on: push: # branches: [ master ] tags: - 'v2.*' jobs: create_release: name: Prepare a new release # Really? runs-on: ubuntu-latest outputs: create_release_url: ${{ steps.create_release.outputs.upload_url }} steps: - name: Create release on repository id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: "autobuild-${{ github.run_number }}" release_name: "ENet Native Libraries (Autobuild ${{ github.run_number }})" 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." draft: false prerelease: false # START LINUX BUILD JOB build_linux64: name: Build for Linux x64 needs: create_release runs-on: ubuntu-latest steps: - name: Grab the latest copy of the repository. uses: actions/checkout@v2 - name: Create temporary staging directories. run: | mkdir -p ${{ runner.workspace }}/ReleaseTemp/Release mkdir -p ${{ runner.workspace }}/ReleaseTemp/Debug - name: Configure and build release binary. 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: Configure and build debug binary. 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 libraries run: | cp ${{ runner.workspace }}/build-release/libenet.so ${{ runner.workspace }}/ReleaseTemp/Release/libenet.so cp ${{ runner.workspace }}/build-debug/libenet.so ${{ runner.workspace }}/ReleaseTemp/Debug/libenet.so zip -j -9 ${{ runner.workspace }}/ReleaseTemp/Release.zip ${{ runner.workspace }}/ReleaseTemp/Release/libenet.so zip -j -9 ${{ runner.workspace }}/ReleaseTemp/Debug.zip ${{ runner.workspace }}/ReleaseTemp/Debug/libenet.so - name: Upload release library id: upload-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.create_release_url }} asset_path: ${{ runner.workspace }}/ReleaseTemp/Release.zip asset_name: libenet-release-linux64.zip asset_content_type: application/zip - name: Upload debug library id: upload-debug-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.create_release_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 MACOS BUILD JOB build_apple_64: name: Build for MacOS needs: create_release runs-on: macos-latest steps: - name: Setup Xcode (with latest Apple SDK) uses: maxim-lobanov/setup-xcode@1.0 with: xcode-version: 11.6 - name: Grab the latest copy of the repository. uses: actions/checkout@v2 # Stubbed! # END APPLE MACOS BUILD JOB build_windows_64: name: Build for Windows x64 needs: create_release runs-on: windows-latest steps: - name: Grab the latest copy of the repository. uses: actions/checkout@v2 - name: Run automated build script run: | cd ${{ runner.workspace }}\ENet-CSharp && &.\Autobuild\githubAutobuild.cmd ${{ runner.workspace }} - name: Upload release library id: upload-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.create_release_url }} asset_path: ${{ runner.workspace }}\ReleaseOut\Release.zip asset_name: libenet-release-win64.zip asset_content_type: application/zip - name: Upload debug library id: upload-debug-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.create_release_url }} asset_path: ${{ runner.workspace }}\DebugOut\Debug.zip asset_name: libenet-debug-win64.zip asset_content_type: application/zip # START APPLE IOS BUILD JOB build_apple_mobile: name: Build for Apple iOS needs: create_release runs-on: macos-latest steps: - name: Setup Xcode (with latest Apple SDK) uses: maxim-lobanov/setup-xcode@1.0 with: xcode-version: 11.6 - name: Grab the latest copy of the repository. uses: actions/checkout@v2 - name: Create temporary staging directories. run: | mkdir -p ${{ runner.workspace }}/temp/Release mkdir -p ${{ runner.workspace }}/temp/Debug - name: Run iOS build script in production 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 iOS 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: Upload release library id: upload-release-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.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 library id: upload-debug-asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.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 # START ANDROID BUILD JOB build_android: name: Build for Android needs: create_release runs-on: ubuntu-latest steps: - name: Grab the latest copy of the repository. uses: actions/checkout@v2 # Stubbed! # END ANDROID BUILD JOB # end of build jobs.