summaryrefslogblamecommitdiffstats
path: root/.github/workflows/ci.yml
blob: 7404806b74e1131207b7860f369865b14c24f0ee (plain) (tree)










































































                                                                                                                                                                                                                                                                                                                     
name: CI

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  build:  
    strategy:
      matrix:
        platform:
          - name: Win64
            os: windows-latest
            cmake_param: -DCMAKE_GENERATOR_PLATFORM=x64
          - name: Win32
            os: windows-latest
            cmake_param: -DCMAKE_GENERATOR_PLATFORM=Win32
          - name: Linux
            os: ubuntu-latest
            cmake_param: -GNinja
          - name: MacOS
            os: macos-latest
            cmake_param: -GNinja
        build_type: [Debug, Release]
    name: Build (${{ matrix.platform.name }}-${{ matrix.build_type }})
    runs-on: ${{ matrix.platform.os }}

    steps:
    - uses: actions/checkout@v2
    - uses: seanmiddleditch/gha-setup-ninja@master
    - name: Prepare Linux
      if: ${{ runner.os == 'Linux' }}
      run: sudo apt install libgl1-mesa-dev libglu1-mesa-dev
    - name: Set up cache
      uses: actions/cache@v2
      with:
        path: ~/cpm-cache
        key: ${{ runner.os }}-cpm-${{ hashFiles('**/') }}
        restore-keys: |
          ${{ runner.os }}-cpm-
    - name: Configure CMake
      run: cmake -B ${{ github.workspace }}/build ${{ matrix.platform.cmake_param }} -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} -DCPM_SOURCE_CACHE=~/cpm-cache -DOPTICK_ENABLED=OFF
    - name: Build
      run: cmake --build ${{ github.workspace }}/build --config ${{ matrix.build_type }} --target AltCraft 
    - name: Upload debug symbols artifacts
      uses: actions/upload-artifact@v2
      if: ${{ runner.os == 'Windows' }}
      with:
        name: symbols-${{ matrix.platform.name }}-${{ matrix.build_type }}
        path: ${{ github.workspace }}/build/**/*.pdb
    - name: Copy binaries for packaging
      run: mkdir $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/package && find $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/build -type f \( -name "*.exe" -o -name "*.dll" -o -name "*.dylib" -o -name "*.so" \) -exec cp {} $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/package \;
      shell: bash
    - name: Finish binaries
      run: cp $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/build/AltCraft $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/package/AltCraft || rm -f $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/package/CompilerIdC*.exe
      shell: bash
    - name: Download MC:JE assets
      run: curl https://launcher.mojang.com/v1/objects/0f275bc1547d01fa5f56ba34bdc87d981ee12daf/client.jar --output $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/client.jar && unzip $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/client.jar -d $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/mc-assets
      shell: bash
    - name: Copy AC and MC assets
      run: cp -r $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/mc-assets/assets $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/package && cp -r $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/cwd/* $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/package
      shell: bash
    - name: Download and copy fonts
      run: mkdir $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/package/assets/altcraft/fonts && curl -L https://github.com/google/fonts/raw/main/apache/opensans/OpenSans%5Bwdth%2Cwght%5D.ttf --output $(echo "${{ github.workspace }}"|sed 's/\\/\//g')/package/assets/altcraft/fonts/OpenSans-Regular.ttf
      shell: bash
    - name: Upload package artifacts
      uses: actions/upload-artifact@v2
      with:
        name: AltCraft-${{ matrix.platform.name }}-${{ matrix.build_type }}
        path: ${{ github.workspace }}/package