Skip to content

Add support for Windows x64 and arm64 builds #2121

Add support for Windows x64 and arm64 builds

Add support for Windows x64 and arm64 builds #2121

name: ci
on:
workflow_dispatch:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
# ================================
# Windows
# ================================
windows:
name: Windows
runs-on: windows-latest
strategy:
matrix:
runtime: [win-x86, win-x64, win-arm64]
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/[email protected]
with:
dotnet-version: 8.0.x
- name: Install dependencies
run: dotnet restore
- name: Build
run: |
dotnet build src/windows/Installer.Windows/Installer.Windows.csproj `
--configuration=Release `
--runtime=${{ matrix.runtime }}
- name: Test
# GitHub's hosted runners are x64 so can test x64 and x86, but not arm64
if: matrix.runtime != 'win-arm64'
run: |
dotnet test --verbosity normal `
--configuration=WindowsRelease `
--runtime=${{ matrix.runtime }}
- name: Prepare artifacts
shell: bash
run: |
mkdir -p artifacts/bin
mv out/windows/Installer.Windows/bin/Release/net472/${{ matrix.runtime }}/gcm*.exe artifacts/
mv out/windows/Installer.Windows/bin/Release/net472/${{ matrix.runtime }} artifacts/bin/
cp out/windows/Installer.Windows/bin/Release/net472/${{ matrix.runtime }}.sym/* artifacts/bin/${{ matrix.runtime }}/
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.runtime }}
path: |
artifacts
# ================================
# Linux
# ================================
linux:
name: Linux
runs-on: ubuntu-latest
strategy:
matrix:
runtime: [ linux-x64, linux-arm64, linux-arm ]
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/[email protected]
with:
dotnet-version: 8.0.x
- name: Install dependencies
run: dotnet restore
- name: Build
run: |
dotnet build src/linux/Packaging.Linux/*.csproj \
--configuration=Release --no-self-contained \
--runtime=${{ matrix.runtime }}
- name: Test
run: |
dotnet test --verbosity normal --configuration=LinuxRelease
- name: Prepare artifacts
run: |
mkdir -p artifacts
mv out/linux/Packaging.Linux/Release/deb/*.deb artifacts/
mv out/linux/Packaging.Linux/Release/tar/*.tar.gz artifacts/
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.runtime }}
path: |
artifacts
# ================================
# macOS
# ================================
osx:
name: macOS
runs-on: macos-latest
strategy:
matrix:
runtime: [ osx-x64, osx-arm64 ]
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/[email protected]
with:
dotnet-version: 8.0.x
- name: Install dependencies
run: dotnet restore
- name: Build
run: |
dotnet build src/osx/Installer.Mac/*.csproj \
--configuration=Release --no-self-contained \
--runtime=${{ matrix.runtime }}
- name: Test
run: |
dotnet test --verbosity normal --configuration=MacRelease
- name: Prepare artifacts
run: |
mkdir -p artifacts/bin
mv out/osx/Installer.Mac/pkg/Release/payload "artifacts/bin/${{ matrix.runtime }}"
cp out/osx/Installer.Mac/pkg/Release/payload.sym/* "artifacts/bin/${{ matrix.runtime }}/"
mv out/osx/Installer.Mac/pkg/Release/gcm*.pkg artifacts/
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.runtime }}
path: |
artifacts