|
name: CI |
|
|
|
on: [push, pull_request] |
|
|
|
concurrency: |
|
group: ${{ github.workflow }}-${{ github.ref }} |
|
cancel-in-progress: true |
|
|
|
jobs: |
|
build: |
|
runs-on: ${{ matrix.os }} |
|
|
|
strategy: |
|
fail-fast: false |
|
matrix: |
|
os: [windows-latest, ubuntu-22.04, macos-14] |
|
|
|
steps: |
|
# Prerequisites |
|
- name: Install tools |
|
if: matrix.os == 'ubuntu-22.04' |
|
run: sudo apt-get -yq install mono-vbnc dos2unix |
|
- uses: actions/checkout@v6 |
|
with: |
|
submodules: true |
|
|
|
# Setup .NET |
|
- name: Setup .NET 10.0 |
|
uses: actions/setup-dotnet@v5 |
|
with: |
|
dotnet-version: '10.0.x' |
|
- name: Setup .NET 9.0 |
|
uses: actions/setup-dotnet@v5 |
|
with: |
|
dotnet-version: '9.0.x' |
|
- name: Setup .NET 8.0 |
|
uses: actions/setup-dotnet@v5 |
|
with: |
|
dotnet-version: '8.0.x' |
|
|
|
# CI debug information |
|
- name: Version Information |
|
run: | |
|
dotnet --info |
|
try { msbuild -version } catch { } |
|
try { mono --version } catch { } |
|
shell: pwsh |
|
|
|
# Build & package |
|
- name: Build |
|
run: pwsh make.ps1 |
|
- name: Package |
|
run: pwsh make.ps1 package |
|
|
|
# Upload package |
|
- uses: actions/upload-artifact@v7 |
|
with: |
|
name: packages-${{ matrix.os }} |
|
path: dist/Release/Packages |
|
|
|
test: |
|
runs-on: ${{ matrix.os }} |
|
|
|
strategy: |
|
fail-fast: false |
|
matrix: |
|
os: [windows-latest, ubuntu-22.04, macos-14] |
|
framework: ['net462', 'net8.0', 'net10.0'] |
|
|
|
steps: |
|
# Prerequisites |
|
- uses: actions/checkout@v6 |
|
with: |
|
submodules: true |
|
|
|
# Setup .NET |
|
- name: Setup .NET 10.0 |
|
uses: actions/setup-dotnet@v5 |
|
with: |
|
dotnet-version: '10.0.x' |
|
- name: Setup .NET 9.0 |
|
uses: actions/setup-dotnet@v5 |
|
with: |
|
dotnet-version: '9.0.x' |
|
- name: Setup .NET 8.0 |
|
uses: actions/setup-dotnet@v5 |
|
with: |
|
dotnet-version: '8.0.x' |
|
|
|
# Build & Test |
|
- name: Build |
|
run: pwsh make.ps1 |
|
- name: Test (${{ matrix.framework }}) |
|
run: ./make.ps1 -frameworks ${{ matrix.framework }} test-all |
|
shell: pwsh |