diff options
Diffstat (limited to '.github/workflows/build.yml')
-rw-r--r-- | .github/workflows/build.yml | 73 |
1 files changed, 54 insertions, 19 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d2ccc59e..793b081e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,7 +1,12 @@ -name: build_portable +name: Build on: - [push, pull_request, workflow_dispatch] + workflow_call: + inputs: + build_type: + description: Type of build (Debug, Release, RelWithDebInfo, MinSizeRel) + type: string + default: Debug jobs: build: @@ -11,8 +16,13 @@ jobs: include: - os: ubuntu-20.04 + qt_version: 5.12.8 + qt_host: linux + + - os: ubuntu-20.04 qt_version: 5.15.2 qt_host: linux + app_image: true - os: windows-2022 qt_version: 5.15.2 @@ -59,6 +69,12 @@ jobs: copy "${{ github.workspace }}\Qt\Tools\OpenSSL\Win_x86\bin\libssl-1_1.dll" "${{ github.workspace }}\${{ env.INSTALL_DIR }}\" copy "${{ github.workspace }}\Qt\Tools\OpenSSL\Win_x86\bin\libcrypto-1_1.dll" "${{ github.workspace }}\${{ env.INSTALL_DIR }}\" + - name: Set short version + shell: bash + run: | + ver_short=`git rev-parse --short HEAD` + echo "VERSION=$ver_short" >> $GITHUB_ENV + - name: Install OpenJDK uses: AdoptOpenJDK/install-jdk@v1 with: @@ -72,6 +88,7 @@ jobs: key: ${{ runner.os }}-${{ matrix.qt_version }}-${{ matrix.qt_arch }}-qt_cache - name: Install Qt + if: runner.os != 'Linux' || matrix.app_image == true uses: jurplel/install-qt-action@v2 with: version: ${{ matrix.qt_version }} @@ -80,18 +97,23 @@ jobs: cached: ${{ steps.cache-qt.outputs.cache-hit }} dir: "${{ github.workspace }}/Qt/" + - name: Install System Qt on Linux + if: runner.os == 'Linux' && matrix.app_image != true + run: | + sudo apt-get -y install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5 + - name: Install Ninja uses: urkle/action-get-ninja@v1 - - name: Download linuxdeploy family - if: runner.os == 'Linux' + - name: Download linuxdeploy family for AppImage on Linux + if: matrix.app_image == true run: | wget "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage" wget "https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage" wget "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage" - name: Download JREs for AppImage on Linux - if: runner.os == 'Linux' + if: matrix.app_image == true shell: bash run: | ${{ github.workspace }}/.github/scripts/prepare_JREs.sh @@ -99,12 +121,12 @@ jobs: - name: Configure CMake if: runner.os != 'Linux' run: | - cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=Debug -G Ninja + cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -G Ninja - name: Configure CMake on Linux if: runner.os == 'Linux' run: | - cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug -DLauncher_LAYOUT=lin-system -G Ninja + cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DLauncher_LAYOUT=lin-system -G Ninja - name: Build run: | @@ -115,16 +137,16 @@ jobs: run: | cmake --install ${{ env.BUILD_DIR }} - - name: Install for AppImage on Linux + - name: Install on Linux if: runner.os == 'Linux' run: | DESTDIR=${{ env.INSTALL_DIR }} cmake --install ${{ env.BUILD_DIR }} - name: Bundle AppImage - if: runner.os == 'Linux' + if: matrix.app_image == true shell: bash run: | - export OUTPUT="PolyMC-${{ github.sha }}-x86_64.AppImage" + export OUTPUT="PolyMC-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage" chmod +x linuxdeploy-*.AppImage @@ -145,13 +167,13 @@ jobs: - name: Run windeployqt if: runner.os == 'Windows' run: | - windeployqt --no-translations "${{ env.INSTALL_DIR }}/polymc.exe" + windeployqt --no-translations --no-system-d3d-compiler --no-opengl-sw "${{ env.INSTALL_DIR }}/polymc.exe" - name: Run macdeployqt if: runner.os == 'macOS' run: | cd ${{ env.INSTALL_DIR }} - macdeployqt "PolyMC.app" -executable="PolyMC.app/Contents/MacOS/polymc" -always-overwrite -use-debug-libs + macdeployqt "PolyMC.app" -executable="PolyMC.app/Contents/MacOS/polymc" -always-overwrite - name: chmod binary on macOS if: runner.os == 'macOS' @@ -162,25 +184,38 @@ jobs: if: runner.os == 'macOS' run: | cd ${{ env.INSTALL_DIR }} - tar -czf ../polymc.tar.gz * + tar -czf ../PolyMC.tar.gz * + + - name: tar on Linux + if: runner.os == 'Linux' && matrix.app_image != true + run: | + cd ${{ env.INSTALL_DIR }} + tar -czf ../PolyMC.tar.gz * + + - name: Upload Linux tar.gz + if: runner.os == 'Linux' && matrix.app_image != true + uses: actions/upload-artifact@v2 + with: + name: PolyMC-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }} + path: PolyMC.tar.gz - name: Upload AppImage for Linux - if: runner.os == 'Linux' + if: matrix.app_image == true uses: actions/upload-artifact@v2 with: - name: PolyMC-${{ github.sha }}-x86_64.AppImage - path: PolyMC-${{ github.sha }}-x86_64.AppImage + name: PolyMC-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage + path: PolyMC-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage - name: Upload package for Windows if: runner.os == 'Windows' uses: actions/upload-artifact@v2 with: - name: polymc-${{ runner.os }}-${{ github.sha }}-portable + name: PolyMC-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }} path: ${{ env.INSTALL_DIR }}/** - name: Upload package for macOS if: runner.os == 'macOS' uses: actions/upload-artifact@v2 with: - name: polymc-${{ runner.os }}-${{ github.sha }}-portable - path: polymc.tar.gz + name: PolyMC-${{ runner.os }}-${{ env.VERSION }}-${{ inputs.build_type }} + path: PolyMC.tar.gz |