Skip to content

feature: logic for handling assembly replacement via config #286

feature: logic for handling assembly replacement via config

feature: logic for handling assembly replacement via config #286

Workflow file for this run

name: .NET Core
on:
push:
branches: [ main ]
pull_request:
types: [opened, synchronize, reopened, closed]
branches: [ main ]
jobs:
build:
runs-on: windows-2022
outputs:
nbgv: ${{ steps.nbgv.outputs.SemVer2 }}
env:
DOTNET_CLI_TELEMETRY_OPTOUT: 1
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
DOTNET_NOLOGO: true
DOTNET_GENERATE_ASPNET_CERTIFICATE: false
solutionpath: src\Vetuviem.sln
unittestprojectpath: src\Vetuviem.UnitTests\Vetuviem.UnitTests.csproj
steps:
#- name: Get Latest Visual Studio Version
# shell: bash
# run: |
# dotnet tool update -g dotnet-vs
# vs where release
# vs update release Enterprise
# vs modify release Enterprise +mobile +desktop +uwp +web
# vs where release
- name: Checkout code
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
with:
fetch-depth: 0
#- name: Setup .NET Core 3.1
# uses: actions/setup-dotnet@v3
# with:
# dotnet-version: 3.1.x
#- name: Setup .NET 5
# uses: actions/setup-dotnet@v3
# with:
# dotnet-version: 5.0.x
- name: Setup .NET 8
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
- name: Install DotNet workloads
shell: bash
run: |
dotnet workload install android ios tvos macos maui wasm-tools
dotnet workload list
- name: Install Windows SDK 10.0.16299
shell: pwsh
run: |
Invoke-WebRequest -Uri https://go.microsoft.com/fwlink/p/?linkid=864422 -OutFile winsdk.exe
$startInfo = New-Object System.Diagnostics.ProcessStartInfo
$startInfo.FileName = "winsdk.exe"
$startInfo.Arguments = "/norestart /quiet"
$process = New-Object System.Diagnostics.Process
$process.StartInfo = $startInfo
$process.Start()
$process.WaitForExit()
- name: NBGV
id: nbgv
uses: dotnet/nbgv@master
with:
setAllVars: true
- name: Install dotnet tools
run: |
dotnet tool install --global dotMorten.OmdGenerator
dotnet tool install --global ConfigValidate
dotnet tool install --global dotnet-outdated-tool
dotnet tool install --global snitch
dotnet tool install --global dotnet-sonarscanner
dotnet tool install --global JetBrains.ReSharper.GlobalTools --version 2021.2.2
- name: Prepare Artifact Directory
run: |
mkdir artifacts
mkdir artifacts\nupkg
mkdir artifacts\outdated
mkdir artifacts\snitch
mkdir artifacts\omd
mkdir artifacts\docfx
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v2.0.0
- name: Restore Packages
run: |
dotnet restore ${{ env.solutionpath }} /bl:artifacts\\binlog\\restore.binlog
- name: Run Build
run: |
dotnet build ${{ env.solutionpath }} --configuration Release --no-restore /bl:artifacts\\binlog\\build.binlog /p:ContinuousIntegrationBuild=true
- name: Run Unit Tests
run: |
dotnet test ${{ env.unittestprojectpath }} --configuration Release --no-build /bl:artifacts\\binlog\\unittest.binlog --nologo --logger GitHubActions --blame-hang-timeout 60000 --results-directory artifacts\opencover --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover
- name: Upload Code Coverage
shell: bash
run: |
echo $PWD
bash <(curl -s https://codecov.io/bash) -X gcov -X coveragepy -t ${{ env.CODECOV_TOKEN }} -s '$PWD/artifacts/opencover' -f '*.xml'
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
- name: Produce Nuget Packages
run: |
dotnet pack ${{ env.solutionpath }} --configuration Release --no-build /bl:artifacts\\binlog\\pack.binlog --nologo /p:PackageOutputPath=..\..\artifacts\nuget /p:ContinuousIntegrationBuild=true
- name: List outdated packages
run: |
dotnet outdated -o artifacts\outdated\outdated.json src
# only store binlog on failure
- name: store binlogs
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: binlogs
path: artifacts/binlog
- name: store docfx
uses: actions/upload-artifact@v4
with:
name: docfx
path: artifacts/docfx
- name: store nuget packages
uses: actions/upload-artifact@v4
with:
name: nuget
path: artifacts/nuget/vetuviem.*.nupkg
- name: store omd
uses: actions/upload-artifact@v4
with:
name: omd
path: artifacts/omd
- name: store outdated
uses: actions/upload-artifact@v4
with:
name: outdated
path: artifacts/outdated
- name: store snitch
uses: actions/upload-artifact@v4
with:
name: snitch
path: artifacts/snitch
- name: store resharper dupfinder
uses: actions/upload-artifact@v4
with:
name: dupfinder
path: artifacts/dupfinder
release:
runs-on: ubuntu-latest
needs: build
if: contains(github.event.pull_request.labels.*.name, 'release') && github.event_name == 'pull_request' && github.event.action == 'closed' && github.event.pull_request.merged == true
env:
DOTNET_CLI_TELEMETRY_OPTOUT: 1
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
DOTNET_NOLOGO: true
DOTNET_GENERATE_ASPNET_CERTIFICATE: false
steps:
- name: Checkout
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4
with:
fetch-depth: 0
- name: Download NuGet Packages
uses: actions/download-artifact@v4
with:
name: nuget
- name: Changelog
uses: glennawatson/ChangeLog@v1
id: changelog
- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token
with:
tag_name: ${{ needs.build.outputs.nbgv }}
release_name: ${{ needs.build.outputs.nbgv }}
body: |
${{ steps.changelog.outputs.commitLog }}
- name: NuGet Push
env:
NUGET_AUTH_TOKEN: ${{ secrets.NUGET_API_KEY }}
SOURCE_URL: https://api.nuget.org/v3/index.json
run: |
dotnet nuget push -s ${{ env.SOURCE_URL }} -k ${{ env.NUGET_AUTH_TOKEN }} **/*.nupkg