build: update Premake5 #74
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build | |
| on: | |
| push: | |
| branches: | |
| - "**" | |
| tags: | |
| - '[0-9]+.[0-9]+.[0-9]+' | |
| pull_request: | |
| branches: | |
| - "**" | |
| types: [opened, synchronize, reopened] | |
| concurrency: | |
| group: ${{ github.ref }} | |
| cancel-in-progress: true | |
| env: | |
| PREMAKE_VERSION: "5.0.0-beta7" | |
| jobs: | |
| build-windows: | |
| name: Build Windows | |
| runs-on: windows-2022 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| configuration: | |
| - release | |
| compiler: | |
| - msvc | |
| - clang | |
| arch: | |
| - x86 | |
| - x64 | |
| - arm64 | |
| include: | |
| - arch: x86 | |
| platform: Win32 | |
| - arch: x64 | |
| platform: x64 | |
| - arch: arm64 | |
| platform: arm64 | |
| steps: | |
| - name: Check out files | |
| uses: actions/checkout@main | |
| with: | |
| submodules: true | |
| fetch-depth: 0 | |
| lfs: false | |
| - name: Add msbuild to PATH | |
| uses: microsoft/setup-msbuild@main | |
| - name: Install Premake5 | |
| uses: diamante0018/setup-premake@master | |
| with: | |
| version: ${{ env.PREMAKE_VERSION }} | |
| - name: Generate project files (clang) | |
| if: matrix.compiler == 'clang' | |
| run: premake5 --cc=${{matrix.compiler}} vs2022 | |
| - name: Generate project files (msvc) | |
| if: matrix.compiler == 'msvc' | |
| run: premake5 vs2022 | |
| - name: Set up problem matching | |
| uses: ammaraskar/msvc-problem-matcher@master | |
| - name: Build ${{matrix.arch}} ${{matrix.configuration}} ${{matrix.compiler}} binaries | |
| run: msbuild /m /p:Configuration=${{matrix.configuration}} /p:Platform=${{matrix.platform}} build/iw4-validator.sln | |
| - name: Upload ${{matrix.arch}} ${{matrix.configuration}} ${{matrix.compiler}} binaries | |
| uses: actions/upload-artifact@main | |
| with: | |
| name: windows-${{matrix.arch}}-${{matrix.configuration}}-${{matrix.compiler}} | |
| path: | | |
| build/bin/${{matrix.arch}}/${{matrix.configuration}}/iw4-validator.exe | |
| build/bin/${{matrix.arch}}/${{matrix.configuration}}/iw4-validator.pdb | |
| build-linux: | |
| name: Build Linux | |
| runs-on: ubuntu-latest | |
| container: ubuntu:noble | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| configuration: | |
| - release | |
| arch: | |
| - x86 | |
| - amd64 | |
| - arm64 | |
| steps: | |
| - name: Install g++ and multilib | |
| run: | | |
| apt-get update | |
| apt-get install -y wget tar git make gcc g++ gcc-multilib g++-multilib | |
| - name: Check out files | |
| uses: actions/checkout@main | |
| with: | |
| submodules: true | |
| fetch-depth: 0 | |
| lfs: false | |
| - name: Install dependencies (arm64) | |
| if: matrix.arch == 'arm64' | |
| run: | | |
| apt-get update | |
| apt-get install -y crossbuild-essential-arm64 | |
| - name: Install dependencies (x86) | |
| if: matrix.arch == 'x86' | |
| run: | | |
| dpkg --add-architecture i386 | |
| apt-get update | |
| apt-get -y install gcc-multilib g++-multilib | |
| - name: Install Premake5 | |
| uses: diamante0018/setup-premake@master | |
| with: | |
| version: ${{ env.PREMAKE_VERSION }} | |
| - name: Generate project files | |
| run: premake5 gmake | |
| - name: Set up problem matching | |
| uses: ammaraskar/gcc-problem-matcher@master | |
| - name: Set up CC environment variable | |
| if: matrix.arch == 'arm64' | |
| run: | | |
| echo "CC=aarch64-linux-gnu-gcc" >> $GITHUB_ENV | |
| - name: Set up CXX environment variable | |
| if: matrix.arch == 'arm64' | |
| run: | | |
| echo "CXX=aarch64-linux-gnu-g++" >> $GITHUB_ENV | |
| - name: Build ${{matrix.arch}} ${{matrix.configuration}} binaries | |
| run: | | |
| make -C build config=${{matrix.configuration}}_${{matrix.arch}} -j$(nproc) | |
| - name: Upload ${{matrix.arch}} ${{matrix.configuration}} binaries | |
| uses: actions/upload-artifact@main | |
| with: | |
| name: linux-${{matrix.arch}}-${{matrix.configuration}} | |
| path: | | |
| build/bin/${{matrix.arch}}/${{matrix.configuration}}/iw4-validator | |
| deploy: | |
| name: Deploy artifacts | |
| needs: [build-linux, build-windows] | |
| runs-on: ubuntu-latest | |
| if: github.ref_type == 'tag' | |
| steps: | |
| - name: Setup main environment | |
| run: echo "ALTERWARE_MASTER_PATH=${{ secrets.ALTERWARE_MASTER_SSH_PATH }}" >> $GITHUB_ENV | |
| - name: Download Release binaries | |
| uses: actions/download-artifact@main | |
| with: | |
| name: windows-x64-release | |
| # Set up committer info and GPG key | |
| - name: Install SSH key | |
| uses: shimataro/ssh-key-action@v2.7.0 | |
| with: | |
| key: ${{ secrets.ALTERWARE_MASTER_SSH_PRIVATE_KEY }} | |
| known_hosts: 'just-a-placeholder-so-we-dont-get-errors' | |
| - name: Add known hosts | |
| run: ssh-keyscan -H ${{ secrets.ALTERWARE_MASTER_SSH_ADDRESS }} >> ~/.ssh/known_hosts | |
| - name: Upload iw4-validator binary | |
| run: rsync -avz iw4-validator.exe ${{ secrets.ALTERWARE_MASTER_SSH_USER }}@${{ secrets.ALTERWARE_MASTER_SSH_ADDRESS }}:${{ env.ALTERWARE_MASTER_PATH }}/tools/ |