mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
* Fixes #3784. SelfContained and NativeAot projects should use the local package in the release mode. * Run dotnet restore before build. * Using local_packages folder for CI. * Add build_release_consumer. * Remove build_release_consumer. * Fix folder for CI. * Fix System.Text.Json vulnerability. * Fix local_packageslocation. * Add package sources to the packageSourceMapping tag. * Using the original configuration. * Only add the Terminal.Gui pattern in the LocalPackages. * Fix the path folder separator with unit style. * Using pack instead of build. * Create LocalPackages Directory * Add local_packages source. * Using scripts to build release for NativeAot and SelfContained. * Trying to fix path. * Again. * Fix the path for the package, * Need to build before pack. * Needs also build before pack locally. * Fix build path.
120 lines
3.7 KiB
YAML
120 lines
3.7 KiB
YAML
name: Build & Test Terminal.Gui with .NET Core
|
|
|
|
on:
|
|
push:
|
|
branches: [ v2_release, v2_develop ]
|
|
paths-ignore:
|
|
- '**.md'
|
|
pull_request:
|
|
branches: [ v2_release, v2_develop ]
|
|
paths-ignore:
|
|
- '**.md'
|
|
|
|
jobs:
|
|
build_and_test_debug:
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
# Turn off fail-fast to let all runners run even if there are errors
|
|
fail-fast: true
|
|
matrix:
|
|
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
|
|
|
timeout-minutes: 10
|
|
steps:
|
|
|
|
# Build (Debug)
|
|
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup .NET Core
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: 8.x
|
|
dotnet-quality: 'ga'
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
dotnet restore
|
|
|
|
- name: Build Debug
|
|
run: dotnet build --configuration Debug --no-restore
|
|
|
|
# Test
|
|
# Note: The --blame and VSTEST_DUMP_PATH stuff is needed to diagnose the test runner crashing on ubuntu/mac
|
|
# See https://github.com/microsoft/vstest/issues/2952 for why the --blame stuff below is needed.
|
|
# Without it, the test runner crashes on ubuntu (but not Windows or mac)
|
|
|
|
- name: MacOS - Patch test runner settings to stop on fail
|
|
if: runner.os == 'macOS'
|
|
run: |
|
|
brew install gnu-sed
|
|
gsed -i 's/"stopOnFail": false/"stopOnFail": true/g' UnitTests/xunit.runner.json
|
|
|
|
- name: Windows/Linux - Patch test runner settings to stop on fail
|
|
if: runner.os != 'macOS'
|
|
run: |
|
|
sed -i 's/"stopOnFail": false/"stopOnFail": true/g' UnitTests/xunit.runner.json
|
|
|
|
- name: Set VSTEST_DUMP_PATH
|
|
shell: bash
|
|
run: echo "{VSTEST_DUMP_PATH}={logs/${{ runner.os }}/}" >> $GITHUB_ENV
|
|
|
|
- name: Test
|
|
run: |
|
|
dotnet test --verbosity normal --collect:"XPlat Code Coverage" --settings UnitTests/coverlet.runsettings --diag:logs/${{ runner.os }}/logs.txt --blame --blame-crash --blame-hang --blame-hang-timeout 60s --blame-crash-collect-always
|
|
|
|
# mv -v UnitTests/TestResults/*/*.* UnitTests/TestResults/
|
|
|
|
- name: Upload Test Logs
|
|
if: always()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-logs-${{ runner.os }}
|
|
path: |
|
|
logs/
|
|
UnitTests/TestResults/
|
|
|
|
|
|
build_release:
|
|
# Ensure that RELEASE builds are not broken
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup .NET Core
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: 8.x
|
|
dotnet-quality: 'ga'
|
|
|
|
- name: Build Release Terminal.Gui
|
|
run: dotnet build Terminal.Gui/Terminal.Gui.csproj --configuration Release
|
|
|
|
- name: Pack Release Terminal.Gui
|
|
run: dotnet pack Terminal.Gui/Terminal.Gui.csproj --configuration Release --output ./local_packages
|
|
|
|
- name: Build Release Solution
|
|
run: dotnet build --configuration Release
|
|
|
|
|
|
# Note: this step is currently not writing to the gist for some reason
|
|
# - name: Create Test Coverage Badge
|
|
# uses: simon-k/dotnet-code-coverage-badge@v1.0.0
|
|
# id: create_coverage_badge
|
|
# with:
|
|
# label: Unit Test Coverage
|
|
# color: brightgreen
|
|
# path: UnitTests/TestResults/coverage.opencover.xml
|
|
# gist-filename: code-coverage.json
|
|
# # https://gist.github.com/migueldeicaza/90ef67a684cb71db1817921a970f8d27
|
|
# gist-id: 90ef67a684cb71db1817921a970f8d27
|
|
# gist-auth-token: ${{ secrets.GIST_AUTH_TOKEN }}
|
|
|
|
# - name: Print Code Coverage
|
|
# run: |
|
|
# echo "Code coverage percentage: ${{steps.create_coverage_badge.outputs.percentage}}%"
|
|
# echo "Badge data: ${{steps.create_coverage_badge.outputs.badge}}"
|