From 4e0feb946ed21a80815b530445e01e58d27636c0 Mon Sep 17 00:00:00 2001 From: SomaZ <17459161+SomaZ@users.noreply.github.com> Date: Mon, 9 Oct 2023 12:17:11 +0200 Subject: [PATCH] Rend2 builds workflow Based on: https://github.com/JACoders/OpenJK/pull/1173 --- .github/workflows/build.yml | 199 ++++++++++++++++++++++++------------ 1 file changed, 132 insertions(+), 67 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c7c069f76e..1ad0b1f8c4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,17 +3,15 @@ name: build on: workflow_dispatch: push: - branches: [master] + branches: [rend2-builds] paths-ignore: - "**.md" - - "*.txt" - ".gitignore" - "docs/*" pull_request: - branches: [master] + branches: [rend2-builds] paths-ignore: - "**.md" - - "*.txt" - ".gitignore" - "docs/*" release: @@ -44,27 +42,29 @@ jobs: uses: microsoft/setup-msbuild@v1.1 - name: Create Build Environment - run: cmake -E make_directory ${{ runner.workspace }}/build + run: cmake -E make_directory ${{ github.workspace }}/build - name: Configure CMake shell: bash - working-directory: ${{ runner.workspace }}/build + working-directory: ${{ github.workspace }}/build run: | + OPTIONS="-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_INSTALL_PREFIX=bin" if [ "${{ matrix.portable }}" == "Portable" ]; then - OPTIONS="-DCMAKE_BUILD_TYPE=${{ runner.build_type }} -DBuildPortableVersion=ON -DCMAKE_INSTALL_PREFIX=bin" + OPTIONS+=" -DBuildPortableVersion=ON" else - OPTIONS="-DCMAKE_BUILD_TYPE=${{ runner.build_type }} -DBuildPortableVersion=OFF -DCMAKE_INSTALL_PREFIX=bin" + OPTIONS+=" -DBuildPortableVersion=OFF" fi + OPTIONS+=" -DBuildJK2SPEngine=ON -DBuildJK2SPGame=ON -DBuildJK2SPRdVanilla=ON --DBuildJK2SPRdRend2=ON" cmake $GITHUB_WORKSPACE -A ${{ matrix.platform }} $OPTIONS - name: Build - working-directory: ${{ runner.workspace }}/build + working-directory: ${{ github.workspace }}/build shell: bash - run: cmake --build . --config ${{ matrix.build_type }} + run: cmake --build . --config ${{ matrix.build_type }} -j $NUMBER_OF_PROCESSORS - name: Install if: ${{ matrix.build_type == 'Release' }} - working-directory: ${{ runner.workspace }}/build + working-directory: ${{ github.workspace }}/build shell: bash run: cmake --install . --config ${{ matrix.build_type }} @@ -72,7 +72,14 @@ jobs: if: ${{ matrix.build_type == 'Release' }} with: name: OpenJK-windows-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }} - path: ${{ runner.workspace }}/build/bin + path: ${{ github.workspace }}/build/bin/JediAcademy + if-no-files-found: error + + - uses: actions/upload-artifact@v3 + if: ${{ matrix.build_type == 'Release' }} + with: + name: OpenJO-windows-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }} + path: ${{ github.workspace }}/build/bin/JediOutcast if-no-files-found: error msvcxp: @@ -110,36 +117,44 @@ jobs: uses: microsoft/setup-msbuild@v1.1 - name: Create Build Environment - run: cmake -E make_directory ${{ runner.workspace }}/build + run: cmake -E make_directory ${{ github.workspace }}/build - name: Configure CMake shell: bash - working-directory: ${{ runner.workspace }}/build + working-directory: ${{ github.workspace }}/build run: | + OPTIONS="-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_INSTALL_PREFIX=bin" if [ "${{ matrix.portable }}" == "Portable" ]; then - OPTIONS="-DCMAKE_BUILD_TYPE=${{ runner.build_type }} -DBuildPortableVersion=ON -DCMAKE_INSTALL_PREFIX=bin" + OPTIONS+=" -DBuildPortableVersion=ON" else - OPTIONS="-DCMAKE_BUILD_TYPE=${{ runner.build_type }} -DBuildPortableVersion=OFF -DCMAKE_INSTALL_PREFIX=bin" + OPTIONS+=" -DBuildPortableVersion=OFF" fi + OPTIONS+=" -DBuildJK2SPEngine=ON -DBuildJK2SPGame=ON -DBuildJK2SPRdVanilla=ON" cmake $GITHUB_WORKSPACE -T v141_xp -A ${{ matrix.platform }} $OPTIONS - name: Build - working-directory: ${{ runner.workspace }}/build + working-directory: ${{ github.workspace }}/build shell: bash - run: cmake --build . --config ${{ matrix.build_type }} + run: cmake --build . --config ${{ matrix.build_type }} -j $NUMBER_OF_PROCESSORS - name: Install if: ${{ matrix.build_type == 'Release' }} - working-directory: ${{ runner.workspace }}/build + working-directory: ${{ github.workspace }}/build shell: bash - run: | - cmake --install . --config ${{ matrix.build_type }} + run: cmake --install . --config ${{ matrix.build_type }} - uses: actions/upload-artifact@v3 if: ${{ matrix.build_type == 'Release' }} with: name: OpenJK-windowsxp-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }} - path: ${{ runner.workspace }}/build/bin + path: ${{ github.workspace }}/build/bin/JediAcademy + if-no-files-found: error + + - uses: actions/upload-artifact@v3 + if: ${{ matrix.build_type == 'Release' }} + with: + name: OpenJO-windowsxp-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }} + path: ${{ github.workspace }}/build/bin/JediOutcast if-no-files-found: error ubuntu: @@ -168,52 +183,59 @@ jobs: sudo apt-get -qq update sudo apt-get install libjpeg-dev libpng-dev zlib1g-dev libsdl2-dev fi - cmake -E make_directory ${{ runner.workspace }}/build + cmake -E make_directory ${{ github.workspace }}/build - name: Configure CMake shell: bash - working-directory: ${{ runner.workspace }}/build + working-directory: ${{ github.workspace }}/build run: | + OPTIONS="-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install" if [ "${{ matrix.portable }}" == "Portable" ]; then - OPTIONS="-DUseInternalLibs=ON -DBuildPortableVersion=ON -DCMAKE_INSTALL_PREFIX=${{ runner.workspace }}/install" + OPTIONS+=" -DUseInternalLibs=ON -DBuildPortableVersion=ON" else - OPTIONS="-DUseInternalLibs=OFF -DBuildPortableVersion=OFF -DCMAKE_INSTALL_PREFIX=${{ runner.workspace }}/install" + OPTIONS+=" -DUseInternalLibs=OFF -DBuildPortableVersion=OFF" fi - if [ ${{ matrix.arch }} == "x86" ]; then - cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} $OPTIONS -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/linux-i686.cmake - else - cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} $OPTIONS + OPTIONS+=" -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/linux-i686.cmake" fi + OPTIONS+=" -DBuildJK2SPEngine=ON -DBuildJK2SPGame=ON -DBuildJK2SPRdVanilla=ON" + cmake $GITHUB_WORKSPACE $OPTIONS - name: Build - working-directory: ${{ runner.workspace }}/build + working-directory: ${{ github.workspace }}/build shell: bash - run: cmake --build . + run: cmake --build . -j $(nproc) - name: Install if: ${{ matrix.build_type == 'Release' }} - working-directory: ${{ runner.workspace }}/build + working-directory: ${{ github.workspace }}/build shell: bash run: cmake --install . - - name: Create binary archive - if: ${{ matrix.build_type == 'Release'}} - working-directory: ${{ runner.workspace }}/install/JediAcademy + - name: Create OpenJK binary archive + if: ${{ matrix.build_type == 'Release' }} + working-directory: ${{ github.workspace }}/install/JediAcademy shell: bash - run: | - if [ ${{ matrix.arch }} == "x86" ]; then - chmod +x openjk.i386 - else - chmod +x openjk.${{ matrix.arch }} - fi - tar -czvf OpenJK-linux-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }}.tar.gz * + run: tar -czvf OpenJK-linux-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }}.tar.gz * + + - name: Create OpenJO binary archive + if: ${{ matrix.build_type == 'Release' }} + working-directory: ${{ github.workspace }}/install/JediOutcast + shell: bash + run: tar -czvf OpenJO-linux-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }}.tar.gz * - uses: actions/upload-artifact@v3 if: ${{ matrix.build_type == 'Release' }} with: name: OpenJK-linux-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }} - path: ${{runner.workspace}}/install/JediAcademy/OpenJK-linux-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }}.tar.gz + path: ${{github.workspace}}/install/JediAcademy/OpenJK-linux-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }}.tar.gz + if-no-files-found: error + + - uses: actions/upload-artifact@v3 + if: ${{ matrix.build_type == 'Release' }} + with: + name: OpenJO-linux-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }} + path: ${{github.workspace}}/install/JediOutcast/OpenJO-linux-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }}.tar.gz if-no-files-found: error macos: @@ -232,47 +254,64 @@ jobs: - name: Create Build Environment run: | brew install zlib libjpeg libpng sdl2 - cmake -E make_directory ${{ runner.workspace }}/build + cmake -E make_directory ${{ github.workspace }}/build - name: Configure CMake shell: bash - working-directory: ${{ runner.workspace }}/build + working-directory: ${{ github.workspace }}/build run: | + OPTIONS="-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCMAKE_INSTALL_PREFIX=${{ github.workspace }}/install" if [ "${{ matrix.portable }}" == "Portable" ]; then - OPTIONS="-DCMAKE_BUILD_TYPE=${{ runner.build_type }} -DUseInternalLibs=ON -DBuildPortableVersion=ON -DCMAKE_INSTALL_PREFIX=${{ runner.workspace }}/install" + OPTIONS+=" -DUseInternalLibs=ON -DBuildPortableVersion=ON" else - OPTIONS="-DCMAKE_BUILD_TYPE=${{ runner.build_type }} -DUseInternalLibs=OFF -DBuildPortableVersion=OFF -DCMAKE_INSTALL_PREFIX=${{ runner.workspace }}/install" + OPTIONS+=" -DUseInternalLibs=OFF -DBuildPortableVersion=OFF" fi + OPTIONS+=" -DBuildJK2SPEngine=ON -DBuildJK2SPGame=ON -DBuildJK2SPRdVanilla=ON" cmake $GITHUB_WORKSPACE $OPTIONS - name: Build - working-directory: ${{ runner.workspace }}/build + working-directory: ${{ github.workspace }}/build shell: bash - run: cmake --build . + run: cmake --build . -j $(getconf _NPROCESSORS_ONLN) - name: Install if: ${{ matrix.build_type == 'Release' }} - working-directory: ${{ runner.workspace }}/build + working-directory: ${{ github.workspace }}/build shell: bash run: cmake --install . - - name: Create binary archive + - name: Create OpenJK binary archive if: ${{ matrix.build_type == 'Release' }} - working-directory: ${{ runner.workspace }}/install/JediAcademy + working-directory: ${{ github.workspace }}/install/JediAcademy shell: bash run: | chmod +x openjk.x86_64.app/Contents/MacOS/openjk.x86_64 - tar -czvf openjk-macos-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }}.tar.gz * + tar -czvf openjk-macos-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }}.tar.gz * + + - name: Create OpenJO binary archive + if: ${{ matrix.build_type == 'Release' }} + working-directory: ${{ github.workspace }}/install/JediOutcast + shell: bash + run: | + chmod +x openjo_sp.x86_64.app/Contents/MacOS/openjo_sp.x86_64 + tar -czvf openjo_sp-macos-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }}.tar.gz * - uses: actions/upload-artifact@v3 if: ${{ matrix.build_type == 'Release' }} with: name: OpenJK-macos-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }} - path: ${{ runner.workspace }}/install/JediAcademy/openjk-macos-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }}.tar.gz + path: ${{ github.workspace }}/install/JediAcademy/openjk-macos-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }}.tar.gz + if-no-files-found: error + + - uses: actions/upload-artifact@v3 + if: ${{ matrix.build_type == 'Release' }} + with: + name: OpenJO-macos-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }} + path: ${{ github.workspace }}/install/JediOutcast/openjo_sp-macos-${{ matrix.arch }}-${{ matrix.build_type }}-${{ matrix.portable }}.tar.gz if-no-files-found: error create-latest: - if: github.event_name == 'push' && github.ref == 'refs/heads/master' + if: github.event_name == 'workflow_dispatch' needs: [msvc, ubuntu, macos] runs-on: ubuntu-22.04 steps: @@ -285,11 +324,17 @@ jobs: - name: Create binary archives run: | - 7z a -r OpenJK-windows-x86.zip ./OpenJK-windows-x86-Release-Non-Portable/JediAcademy/* '-x!msvcp*.*' '-x!vcruntime*.*' '-x!concrt*.*' - 7z a -r OpenJK-windows-x86_64.zip ./OpenJK-windows-x86_64-Release-Non-Portable/JediAcademy/* '-x!msvcp*.*' '-x!vcruntime*.*' '-x!concrt*.*' - mv ./OpenJK-linux-x86-Release-Non-Portable/* OpenJK-linux-x86.tar.gz - mv ./OpenJK-linux-x86_64-Release-Non-Portable/* OpenJK-linux-x86_64.tar.gz - mv ./OpenJK-macos-x86_64-Release-Non-Portable/* OpenJK-macos-x86_64.tar.gz + 7z a -r OpenJK-rend2-windows-x86.zip ./OpenJK-windows-x86-Release-Non-Portable/* '-x!msvcp*.*' '-x!vcruntime*.*' '-x!concrt*.*' + 7z a -r OpenJK-rend2-windows-x86_64.zip ./OpenJK-windows-x86_64-Release-Non-Portable/* '-x!msvcp*.*' '-x!vcruntime*.*' '-x!concrt*.*' + mv ./OpenJK-linux-x86-Release-Non-Portable/* OpenJK-rend2-linux-x86.tar.gz + mv ./OpenJK-linux-x86_64-Release-Non-Portable/* OpenJK-rend2-linux-x86_64.tar.gz + mv ./OpenJK-macos-x86_64-Release-Non-Portable/* OpenJK-rend2-macos-x86_64.tar.gz + + 7z a -r OpenJO-windows-x86.zip ./OpenJO-rend2-windows-x86-Release-Non-Portable/* '-x!msvcp*.*' '-x!vcruntime*.*' '-x!concrt*.*' + 7z a -r OpenJO-windows-x86_64.zip ./OpenJO-rend2-windows-x86_64-Release-Non-Portable/* '-x!msvcp*.*' '-x!vcruntime*.*' '-x!concrt*.*' + mv ./OpenJO-linux-x86-Release-Non-Portable/* OpenJO-rend2-linux-x86.tar.gz + mv ./OpenJO-linux-x86_64-Release-Non-Portable/* OpenJO-rend2-linux-x86_64.tar.gz + mv ./OpenJO-macos-x86_64-Release-Non-Portable/* OpenJO-rend2-macos-x86_64.tar.gz - name: Create latest build uses: marvinpinto/action-automatic-releases@latest @@ -297,7 +342,7 @@ jobs: repo_token: ${{ secrets.GITHUB_TOKEN }} automatic_release_tag: "latest" prerelease: false - title: Latest Build + title: Latest rend2 builds files: | *.zip *.tar.gz @@ -311,23 +356,43 @@ jobs: matrix: include: - artifact_dir: OpenJK-windows-x86-Release-Non-Portable/JediAcademy - artifact_name: OpenJK-windows-x86.zip + artifact_name: OpenJK-rend2-windows-x86.zip zip: true - artifact_dir: OpenJK-windows-x86_64-Release-Non-Portable/JediAcademy - artifact_name: OpenJK-windows-x86_64.zip + artifact_name: OpenJK-rend2-windows-x86_64.zip zip: true - artifact_dir: OpenJK-linux-x86-Release-Non-Portable - artifact_name: OpenJK-linux-x86.tar.gz + artifact_name: OpenJK-rend2-linux-x86.tar.gz zip: false - artifact_dir: OpenJK-linux-x86_64-Release-Non-Portable - artifact_name: OpenJK-linux-x86_64.tar.gz + artifact_name: OpenJK-rend2-linux-x86_64.tar.gz zip: false - artifact_dir: OpenJK-macos-x86_64-Release-Non-Portable - artifact_name: OpenJK-macos-x86_64.tar.gz + artifact_name: OpenJK-rend2-macos-x86_64.tar.gz + zip: false + + - artifact_dir: OpenJO-windows-x86-Release-Non-Portable/JediOutcast + artifact_name: OpenJO-rend2-windows-x86.zip + zip: true + + - artifact_dir: OpenJO-windows-x86_64-Release-Non-Portable/JediOutcast + artifact_name: OpenJO-rend2-windows-x86_64.zip + zip: true + + - artifact_dir: OpenJO-linux-x86-Release-Non-Portable + artifact_name: OpenJO-rend2-linux-x86.tar.gz + zip: false + + - artifact_dir: OpenJO-linux-x86_64-Release-Non-Portable + artifact_name: OpenJO-rend2-linux-x86_64.tar.gz + zip: false + + - artifact_dir: OpenJO-macos-x86_64-Release-Non-Portable + artifact_name: OpenJO-rend2-macos-x86_64.tar.gz zip: false steps: