mirror of
https://github.com/edgegamers/Gangs.git
synced 2025-12-05 20:40:30 -08:00
* Normalize paths * Update workflows * Update workflows * Update workflows * Update csproj build dirs * Update csproj build dirs * Fix bugs * Directories are hard * Dont zip zip * Rename to support CS# * Fix nightly file name * Debug * Try referencing class directly * Update dependabot * Update gitignore and command tests * More tests: * Basic gang creation working
130 lines
4.3 KiB
YAML
130 lines
4.3 KiB
YAML
name: .NET
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- 'Gangs*/**'
|
|
- '.github/workflows/nightly.yml'
|
|
- 'Core/**'
|
|
- 'Commands/**'
|
|
pull_request:
|
|
paths:
|
|
- 'Gangs*/**'
|
|
- '.github/workflows/nightly.yml'
|
|
- 'Core/**'
|
|
- 'Commands/**'
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
dotnet-version: [ 6.0.x, 7.0.x, 8.0.x, 9.0.x ] # Test on multiple .NET versions
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup .NET
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: ${{ matrix.dotnet-version }}
|
|
- name: Cache .NET packages
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.nuget/packages
|
|
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-nuget-
|
|
- name: Restore dependencies
|
|
run: dotnet restore
|
|
- name: Build
|
|
run: dotnet build --no-restore
|
|
|
|
test:
|
|
permissions:
|
|
pull-requests: write
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
dotnet-version: [ 8.0.x, 9.0.x ]
|
|
services:
|
|
mysql:
|
|
image: mysql:latest
|
|
env:
|
|
MYSQL_ALLOW_EMPTY_PASSWORD: yes
|
|
MYSQL_DATABASE: gangs
|
|
ports:
|
|
- 3306:3306
|
|
options: --health-cmd "mysqladmin ping --silent" --health-interval 10s
|
|
mariadb:
|
|
image: mariadb:latest
|
|
env:
|
|
MARIADB_ALLOW_EMPTY_ROOT_PASSWORD: yes
|
|
MARIADB_DATABASE: gangs
|
|
ports:
|
|
- 3307:3306
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Setup .NET
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: ${{ matrix.dotnet-version }}
|
|
- name: Cache .NET packages
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/.nuget/packages
|
|
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-nuget-
|
|
- name: Restore dependencies
|
|
run: dotnet restore
|
|
- name: Build
|
|
run: dotnet build --no-restore
|
|
- name: Test with MariaDB
|
|
env:
|
|
DB_CONNECTION_STRING: "Server=localhost;Port=3307;Database=gangs;User=root"
|
|
run: dotnet test GangsTest/GangsTest.csproj --no-build --verbosity normal
|
|
- name: Test with MySQL
|
|
env:
|
|
DB_CONNECTION_STRING: "Server=localhost;Port=3306;Database=gangs;User=root"
|
|
run: dotnet test GangsTest/GangsTest.csproj --no-build --verbosity normal
|
|
- name: Generate Code Coverage Report
|
|
env:
|
|
DB_CONNECTION_STRING: "Server=localhost;Port=3306;Database=gangs;User=root"
|
|
if: ${{ matrix.dotnet-version == '9.0.x' }}
|
|
run: dotnet test --no-build --verbosity normal --collect:"XPlat Code Coverage" --logger trx --results-directory coverage GangsTest/GangsTest.csproj
|
|
- name: Code Coverage Summary Report
|
|
uses: irongut/CodeCoverageSummary@v1.3.0
|
|
if: ${{ matrix.dotnet-version == '9.0.x' }}
|
|
with:
|
|
filename: 'coverage/*/coverage.cobertura.xml'
|
|
badge: true
|
|
format: 'markdown'
|
|
output: 'both'
|
|
thresholds: '33 75'
|
|
|
|
- name: Add Coverage PR Comment
|
|
uses: marocchino/sticky-pull-request-comment@v2
|
|
if: github.event_name == 'pull_request' && matrix.dotnet-version == '9.0.x'
|
|
with:
|
|
recreate: true
|
|
path: code-coverage-results.md
|
|
- name: Export Code Coverage
|
|
if: ${{ matrix.dotnet-version == '9.0.x' }}
|
|
run: echo "CODE_COVERAGE=$(tail -n 1 code-coverage-results.md | grep -oP '(?<=\*\*Summary\*\* \|\s\*\*)[0-9]+(?=%)')" >> $GITHUB_ENV
|
|
- name: Create Test Coverage Badge
|
|
uses: Schneegans/dynamic-badges-action@v1.7.0
|
|
id: create_coverage_badge
|
|
if: matrix.dotnet-version == '9.0.x' && github.ref_name == 'main'
|
|
with:
|
|
auth: ${{ secrets.GIST_AUTH_TOKEN }}
|
|
gistID: 72f982ea80cb7dabb6e91f21d6594ba8
|
|
filename: code-coverage.json
|
|
label: 'Code Coverage'
|
|
message: ${{ env.CODE_COVERAGE }}%
|
|
valColorRange: ${{ env.CODE_COVERAGE }}
|
|
maxColorRange: 100
|
|
minColorRange: 33
|
|
|
|
- name: Write to Job Summary
|
|
if: ${{ matrix.dotnet-version == '9.0.x' }}
|
|
run: cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY
|