name: Continuous Integration
on:
  push:
    branches:
      - master
  pull_request:
    branches: [master]
  workflow_dispatch:
jobs:
  build:
    name: Build
    strategy:
      fail-fast: false
      matrix:
        include:
          - os: ubuntu-latest
            platform: linux-x64
          - os: windows-latest
            platform: win-x64
          - os: macos-latest
            platform: osx-x64
          - os: macos-latest
            platform: osx-arm64
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout sources
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - name: Setup .NET
        uses: actions/setup-dotnet@v4
        with:
          dotnet-version: 8.0.x
      - name: Build
        run: dotnet build -c Release
      - name: Publish
        run: dotnet publish src/SourceGit.csproj -c Release -o publish -r ${{ matrix.platform }} -p:PublishAot=true -p:PublishTrimmed=true -p:TrimMode=link --self-contained
      - name: Upload Artifact
        uses: actions/upload-artifact@v4
        with:
          name: ${{ matrix.platform }}
          path: publish