name: Build Game on: workflow_dispatch: pull_request: push: branches: - '**' # every branch - '!no-build-**' # unless marked as no-build env: # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) BUILD_TYPE: Release CPM_SOURCE_CACHE: ${{ github.workspace }}/cpm-cache jobs: build-windows: name: Windows Build runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Setup caches uses: ./.github/actions/setup-cache with: host: win target: win - name: Create Build Environment # Some projects don't allow in-source building, so create a separate build directory # We'll use this as our working directory for all subsequent commands run: cmake -E make_directory ${{github.workspace}}/build - name: Configure CMake shell: powershell working-directory: ${{github.workspace}}/build run: cmake $env:GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$env:BUILD_TYPE - name: Build working-directory: ${{github.workspace}}/build shell: powershell run: cmake --build . --config $env:BUILD_TYPE --target MinecraftPE - name: Upload Artifact uses: actions/upload-artifact@v4 with: name: mcpe-windows path: | '${{github.workspace}}/build/MinecraftPE.exe' '${{github.workspace}}/build/glfw3.dll' '${{github.workspace}}/build/libpng16.dll' '${{github.workspace}}/build/OpenAL32.dll' '${{github.workspace}}/build/z.dll' build-linux: name: Linux Build runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup caches uses: ./.github/actions/setup-cache with: host: linux target: linux - name: Create Build Environment # Some projects don't allow in-source building, so create a separate build directory # We'll use this as our working directory for all subsequent commands run: cmake -E make_directory ${{github.workspace}}/build - name: Setup Environment run: | sudo apt-get update -qq sudo apt-get install gcc-multilib sudo apt-get install -y --no-install-recommends build-essential libgl-dev libwayland-dev xorg-dev libxkbcommon-dev - name: Configure CMake # Use a bash shell so we can use the same syntax for environment variable # access regardless of the host operating system shell: bash working-directory: ${{github.workspace}}/build run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE - name: Build working-directory: ${{github.workspace}}/build shell: bash run: cmake --build . --config $BUILD_TYPE - name: Upload Artifact uses: actions/upload-artifact@v4 with: name: mcpe-linux path: | '${{github.workspace}}/build/MinecraftPE' publish: name: Publish runs-on: ubuntu-latest needs: [ build-windows, build-linux ] if: github.ref == 'refs/heads/main' steps: - name: Checkout uses: actions/checkout@v4 - name: Declare Version Variables id: ref run: | echo "version=$(cat VERSION | xargs)" >> $GITHUB_OUTPUT echo "hash=$(git rev-parse --short "$GITHUB_SHA")" >> $GITHUB_OUTPUT - name: Download Artifacts uses: actions/download-artifact@v4 - name: Zip Windows Artifacts uses: vimtor/action-zip@v1.2 with: files: ${{github.workspace}}/data mcpe-windows/MinecraftPE.exe mcpe-windows/glfw3.dll mcpe-windows/libpng16.dll mcpe-windows/OpenAL32.dll mcpe-windows/z.dll dest: minecraftpe-${{ steps.ref.outputs.hash }}-windows.zip - name: Zip Linux Artifacts uses: vimtor/action-zip@v1.2 with: files: ${{github.workspace}}/build/data mcpe-linux/MinecraftPE # ye, you should install libraries by urself :trollface: dest: minecraftpe-${{ steps.ref.outputs.hash }}-linux.zip - name: Zip Linux Server Artifacts uses: vimtor/action-zip@v1.2 with: files: mcpe-linux/MinecraftPE-server dest: minecraftpe-server-${{ steps.ref.outputs.hash }}.zip - name: Update Development Release uses: andelf/nightly-release@main env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: tag_name: dev name: 'Development Release' body: | MinecraftPE development release for commit ${{ github.sha }}. files: | ./minecraftpe-${{ steps.ref.outputs.hash }}-windows.zip ./minecraftpe-${{ steps.ref.outputs.hash }}-linux.zip ./minecraftpe-server-${{ steps.ref.outputs.hash }}.zip