fix: copy va #423
Workflow file for this run
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-latest | |
| 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/alterware-master.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}}/alterware-master.exe | |
| build/bin/${{matrix.arch}}/${{matrix.configuration}}/alterware-master.pdb | |
| build-linux: | |
| name: Build Linux | |
| runs-on: ubuntu-latest | |
| container: ubuntu:noble | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| configuration: | |
| - release | |
| arch: | |
| - x86 | |
| - amd64 | |
| steps: | |
| - name: Install g++ and multilib | |
| run: | | |
| apt-get update | |
| apt-get install -y wget tar git make gcc-13 g++-13 gcc-13-multilib g++-13-multilib | |
| update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 13 | |
| update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 13 | |
| update-alternatives --set gcc /usr/bin/gcc-13 | |
| update-alternatives --set g++ /usr/bin/g++-13 | |
| - name: Check out files | |
| uses: actions/checkout@main | |
| with: | |
| submodules: true | |
| fetch-depth: 0 | |
| lfs: false | |
| - name: Install dependencies (x86) | |
| if: matrix.arch == 'x86' | |
| run: | | |
| dpkg --add-architecture i386 | |
| apt-get update | |
| apt-get install -y gcc-13-multilib g++-13-multilib | |
| - name: Install Premake5 | |
| uses: diamante0018/setup-premake@master | |
| with: | |
| version: ${{ env.PREMAKE_VERSION }} | |
| - name: Install Mold | |
| uses: rui314/setup-mold@staging | |
| - name: Generate project files | |
| working-directory: ${{ github.workspace }} | |
| run: premake5 gmake | |
| - name: Set up problem matching | |
| uses: ammaraskar/gcc-problem-matcher@master | |
| - name: Build ${{matrix.arch}} ${{matrix.configuration}} binaries | |
| working-directory: ${{ github.workspace }} | |
| 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}}/alterware-master | |
| prebuild-linux-arm64: | |
| name: Prebuild Linux | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out files | |
| uses: actions/checkout@main | |
| with: | |
| submodules: true | |
| fetch-depth: 0 | |
| lfs: false | |
| - name: Install Premake5 | |
| uses: diamante0018/setup-premake@master | |
| with: | |
| version: ${{ env.PREMAKE_VERSION }} | |
| - name: Generate project files | |
| run: premake5 --cc=clang gmake | |
| - name: Upload project files | |
| uses: actions/upload-artifact@main | |
| with: | |
| name: linux-project-files | |
| path: | | |
| build/ | |
| build-linux-arm64: | |
| name: Build Linux | |
| runs-on: ${{ matrix.os }} | |
| needs: prebuild-linux-arm64 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| configuration: | |
| - release | |
| arch: | |
| - arm64 | |
| include: | |
| - arch: arm64 | |
| os: ubuntu-24.04-arm | |
| steps: | |
| - name: Check out files | |
| uses: actions/checkout@main | |
| with: | |
| submodules: true | |
| fetch-depth: 0 | |
| lfs: false | |
| - name: Create the build directory | |
| run: mkdir -p build | |
| - name: Download project files | |
| uses: actions/download-artifact@main | |
| with: | |
| name: linux-project-files | |
| path: build/ | |
| - name: Build ${{matrix.arch}} ${{matrix.configuration}} binaries | |
| working-directory: ${{ github.workspace }} | |
| run: | | |
| pushd build | |
| make config=${{matrix.configuration}}_${{matrix.arch}} -j$(nproc) | |
| env: | |
| CC: clang | |
| CXX: clang++ | |
| - 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}}/alterware-master | |
| build-macos: | |
| name: Build macOS | |
| runs-on: macos-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| configuration: | |
| - release | |
| arch: | |
| - amd64 | |
| - arm64 | |
| steps: | |
| - name: Check out files | |
| uses: actions/checkout@main | |
| with: | |
| submodules: true | |
| fetch-depth: 0 | |
| lfs: false | |
| - 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: Build ${{matrix.arch}} ${{matrix.configuration}} binaries | |
| run: | | |
| pushd build | |
| make config=${{matrix.configuration}}_${{matrix.arch}} -j$(sysctl -n hw.logicalcpu) | |
| - name: Upload ${{matrix.arch}} ${{matrix.configuration}} binaries | |
| uses: actions/upload-artifact@main | |
| with: | |
| name: macos-${{matrix.arch}}-${{matrix.configuration}} | |
| path: | | |
| build/bin/${{matrix.arch}}/${{matrix.configuration}}/alterware-master | |
| deploy: | |
| name: Deploy artifacts | |
| needs: [build-windows, build-linux, build-linux-arm64, build-macos] | |
| runs-on: ubuntu-latest | |
| if: github.ref_type == 'tag' | |
| steps: | |
| - name: Setup main environment | |
| run: echo "ALTERWARE_MASTER_SERVER_PATH=${{ secrets.ALTERWARE_MASTER_SERVER_SSH_PATH }}" >> $GITHUB_ENV | |
| - name: Download Release binaries | |
| uses: actions/download-artifact@main | |
| with: | |
| name: linux-amd64-release | |
| - name: Install SSH key | |
| uses: shimataro/[email protected] | |
| with: | |
| key: ${{ secrets.ALTERWARE_MASTER_SERVER_SSH_PRIVATE_KEY }} | |
| known_hosts: 'just-a-placeholder-so-we-dont-get-errors' | |
| - name: Add known hosts | |
| run: ssh-keyscan -H ${{ secrets.ALTERWARE_MASTER_SERVER_SSH_ADDRESS }} >> ~/.ssh/known_hosts | |
| - name: Upload release binary | |
| run: rsync -avz alterware-master ${{ secrets.ALTERWARE_MASTER_SERVER_SSH_USER }}@${{ secrets.ALTERWARE_MASTER_SERVER_SSH_ADDRESS }}:${{ env.ALTERWARE_MASTER_SERVER_PATH }}/ | |
| - name: Publish changes | |
| run: ssh ${{ secrets.ALTERWARE_MASTER_SERVER_SSH_USER }}@${{ secrets.ALTERWARE_MASTER_SERVER_SSH_ADDRESS }} ${{ secrets.ALTERWARE_SSH_SERVER_PUBLISH_COMMAND }} | |
| docker: | |
| name: Create Docker Image | |
| needs: [build-windows, build-linux, build-linux-arm64, build-macos] | |
| runs-on: ubuntu-latest | |
| if: github.ref_type == 'tag' | |
| steps: | |
| - name: Check out files | |
| uses: actions/checkout@main | |
| with: | |
| sparse-checkout: | | |
| Dockerfile | |
| README.md | |
| sparse-checkout-cone-mode: false | |
| - name: Download Release binaries | |
| uses: actions/download-artifact@main | |
| - name: Compress Binaries | |
| run: | | |
| for dir in */; do | |
| if [[ $dir == *"windows"* ]]; then | |
| cd "$dir" && zip -r "../${dir%/}.zip" . && cd .. | |
| else | |
| tar -czvf "${dir%/}.tar.gz" -C "$dir" . | |
| fi | |
| done | |
| shell: bash | |
| - name: Setup QEMU | |
| uses: docker/[email protected] | |
| - name: Setup Docker Buildx | |
| uses: docker/[email protected] | |
| - name: Login to DockerHub | |
| uses: docker/[email protected] | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USER }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - id: meta | |
| uses: docker/[email protected] | |
| with: | |
| images: | | |
| alterware/master-server | |
| tags: | | |
| ${{ github.ref_name }} | |
| latest | |
| - name: Build and Push Docker Image | |
| id: build-and-push | |
| uses: docker/[email protected] | |
| with: | |
| context: . | |
| platforms: linux/amd64,linux/arm64 | |
| push: true | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| cache-from: type=gha | |
| cache-to: type=gha,mode=max |