Update codecov/codecov-action action to v4 #524
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
release: | |
types: [ published ] | |
concurrency: | |
group: '${{github.workflow}} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' | |
cancel-in-progress: true | |
env: | |
# Disable the .NET logo in the console output. | |
DOTNET_NOLOGO: true | |
# Disable the .NET first time experience to skip caching NuGet packages and speed up the build. | |
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true | |
# Disable sending .NET CLI telemetry to Microsoft. | |
DOTNET_CLI_TELEMETRY_OPTOUT: true | |
BUILD_ARTIFACT_PATH: ${{github.workspace}}/build-artifacts | |
jobs: | |
build: | |
name: Build (${{matrix.os}}, MongoDB ${{matrix.mongodb}}) | |
runs-on: ${{matrix.os}} | |
strategy: | |
matrix: | |
os: [windows-latest, macOS-latest] | |
mongodb: ['4.4', '5.0', '6.0'] | |
include: | |
- os: ubuntu-20.04 | |
mongodb: '4.4' | |
ubuntu: 'focal' | |
- os: ubuntu-20.04 | |
mongodb: '5.0' | |
ubuntu: 'focal' | |
- os: ubuntu-latest | |
mongodb: '6.0' | |
ubuntu: 'jammy' | |
steps: | |
- name: Configure MongoDB (MacOS) | |
if: matrix.os == 'macOS-latest' | |
run: | | |
brew tap mongodb/brew | |
brew update | |
brew install mongodb-community@${{matrix.mongodb}} | |
brew services start mongodb-community@${{matrix.mongodb}} | |
- name: Configure MongoDB (Ubuntu (20.04)) | |
if: matrix.os == 'ubuntu-20.04' | |
run: sudo apt remove mongodb-org | |
- name: Configure MongoDB (Ubuntu (All)) | |
if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu-20.04' | |
run: | | |
wget -qO - https://www.mongodb.org/static/pgp/server-${{matrix.mongodb}}.asc | gpg --dearmor | sudo tee /usr/share/keyrings/mongodb.gpg > /dev/null | |
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb.gpg ] https://repo.mongodb.org/apt/ubuntu ${{matrix.ubuntu}}/mongodb-org/${{matrix.mongodb}} multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-${{matrix.mongodb}}.list | |
sudo apt update | |
sudo apt install mongodb-org | |
sudo systemctl start mongod | |
- name: Configure MongoDB (Windows) | |
if: matrix.os == 'windows-latest' | |
shell: powershell | |
run: | | |
choco uninstall mongodb mongodb.install | |
$latestPackageVersion = Get-LatestChocoPackageVersion -TargetVersion ${{matrix.mongodb}} -PackageName "mongodb.install" | |
choco install mongodb.portable --version=$latestPackageVersion | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup dotnet SDK | |
uses: actions/setup-dotnet@v3 | |
with: | |
dotnet-version: | | |
6.0.x | |
7.0.x | |
- name: Install dependencies | |
run: dotnet restore | |
- name: Build | |
run: dotnet build --no-restore -c Release | |
- name: Test with Coverage | |
run: dotnet test --no-restore --logger trx --results-directory ${{env.BUILD_ARTIFACT_PATH}}/coverage --collect "XPlat Code Coverage" --settings CodeCoverage.runsettings /p:SkipBuildVersioning=true | |
- name: Pack | |
run: dotnet pack --no-build -c Release /p:PackageOutputPath=${{env.BUILD_ARTIFACT_PATH}} | |
- name: Publish artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{matrix.os}} | |
path: ${{env.BUILD_ARTIFACT_PATH}} | |
coverage: | |
name: Process code coverage | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download coverage reports | |
uses: actions/download-artifact@v3 | |
- name: Install ReportGenerator tool | |
run: dotnet tool install -g dotnet-reportgenerator-globaltool | |
- name: Prepare coverage reports | |
run: reportgenerator -reports:*/coverage/*/coverage.cobertura.xml -targetdir:./ -reporttypes:Cobertura | |
- name: Upload coverage report | |
uses: codecov/[email protected] | |
with: | |
file: Cobertura.xml | |
fail_ci_if_error: false | |
- name: Save combined coverage report as artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: coverage-report | |
path: Cobertura.xml | |
push-to-github-packages: | |
name: 'Push GitHub Packages' | |
needs: build | |
if: github.ref == 'refs/heads/main' || github.event_name == 'release' | |
environment: | |
name: 'GitHub Packages' | |
url: https://github.com/TurnerSoftware/MongoFramework/packages | |
permissions: | |
packages: write | |
runs-on: ubuntu-latest | |
steps: | |
- name: 'Download build' | |
uses: actions/download-artifact@v3 | |
with: | |
name: 'ubuntu-latest' | |
- name: 'Add NuGet source' | |
run: dotnet nuget add source https://nuget.pkg.github.com/TurnerSoftware/index.json --name GitHub --username Turnerj --password ${{secrets.GITHUB_TOKEN}} --store-password-in-clear-text | |
- name: 'Upload NuGet package' | |
run: dotnet nuget push *.nupkg --api-key ${{secrets.GH_PACKAGE_REGISTRY_API_KEY}} --source GitHub --skip-duplicate | |
push-to-nuget: | |
name: 'Push NuGet Packages' | |
needs: build | |
if: github.event_name == 'release' | |
environment: | |
name: 'NuGet' | |
url: https://www.nuget.org/packages/MongoFramework | |
runs-on: ubuntu-latest | |
steps: | |
- name: 'Download build' | |
uses: actions/download-artifact@v3 | |
with: | |
name: 'ubuntu-latest' | |
- name: 'Upload NuGet package' | |
run: dotnet nuget push *.nupkg --source https://api.nuget.org/v3/index.json --skip-duplicate --api-key ${{secrets.NUGET_API_KEY}} |