Backend/e-suite.Modules.RoleManager/azure-pipelines.yml
2026-01-20 21:50:10 +00:00

135 lines
5.4 KiB
YAML

# ASP.NET Core (.NET Framework)
# Build and test ASP.NET Core projects targeting the full .NET Framework.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core
#name: $(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)$(prerelease) # NOTE: rev resets when the default retention period expires
name: $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)$(prerelease) # NOTE: rev resets when the default retention period expires
trigger:
branches:
include:
- '*'
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
nugetProject: 'e-suite.Modules.RoleManager/e-suite.Modules.RoleManager.csproj'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
${{ if eq(variables['Build.SourceBranchName'], 'master') }}:
prerelease: ''
${{ elseif eq(variables['Build.SourceBranchName'], 'develop') }}:
prerelease: '-beta'
${{ else }}:
prerelease: '-alpha'
steps:
- task: NuGetToolInstaller@1
displayName: 'Install Nuget'
- task: NuGetCommand@2
displayName: 'Nuget Restore'
inputs:
restoreSolution: '$(solution)'
feedsToUse: config
includeNuGetOrg: true
- task: VSBuild@1
displayName: 'Build Solution'
inputs:
solution: '$(solution)'
msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
- task: VSTest@2
displayName: 'Run Tests'
inputs:
testAssemblyVer2: |
**\*Tests.dll
!**\obj\**
runOnlyImpactedTests: false
runInParallel: true
codeCoverageEnabled: true
runSettingsFile: .runsettings
platform: '$(BuildPlatform)'
configuration: '$(BuildConfiguration)'
- task: BuildQualityChecks@9
displayName: 'Check build quality'
inputs:
# ===== Warnings Policy Inputs =====
checkWarnings: true # Optional
warningFailOption: fixed # Optional; Valid values: build, fixed
warningThreshold: '0' # Optional
#forceFewerWarnings: false # Optional
#allowWarningVariance: false # Optional
#warningVariance: # Required if allowWarningVariance = true
#showStatistics: false # Optional
#evaluateTaskWarnings: true # Optional
#warningTaskSelectors: '/^((vs|ms)build|ant(\s+.+)?|gradle(w)?(\s+.+)?|grunt|gulp|maven(\s+.+)?|xamarin(android|ios)|xcode(\s+.+)?|cmake|build\s+.+)$/i' # Optional (alias: warningTaskFilters)
#warningSelectors: # Optional (alias: warningFilters)
#inclusiveSelection: false # Optional (alias: inclusiveFiltering)
#evaluateFileWarnings: false # Optional
#warningFilesFolder: # Optional
#warningFiles: # Required if evaluateFileWarnings = true
#fileWarningSelectors: # Required if evaluateFileWarnings = true (alias: warningFileFilters)
#warningFilesArtifact: # Required if evaluateFileWarnings = true and (warningFailOption = build or showStatistics = true)
# ===== Code Coverage Policy Inputs =====
checkCoverage: true # Optional
coverageFailOption: fixed # Optional; Valid values: build, fixed
coverageType: lines # Optional; Valid values: blocks, lines, branches, custom
#customCoverageType: # Required if coverageType = custom
#treat0of0as100: false # Optional
coverageThreshold: '70' # Optional
forceCoverageImprovement: true # Optional
#coverageUpperThreshold: '80' # Optional
#ignoreDecreaseAboveUpperThreshold: true # Optional
#useUncoveredElements: false # Optional
#allowCoverageVariance: false # Optional
#coverageVariance: # Required if allowCoverageVariance = true
#coverageDeltaType: percentage # Optional; Valid values: absolute, percentage
#coveragePrecision: '4' # Optional
#buildConfiguration: # Optional
#buildPlatform: # Optional
#explicitSelector: false # Optional (alias: explicitFilter)
# ===== Baseline Inputs =====
#includePartiallySucceeded: true # Optional
#fallbackOnPRTargetBranch: true # Optional
#baseDefinitionSelector: # Ignored - only used by UI editor
#baseDefinitionId: # Optional
#baseRepoId: # Ignored - only used by UI editor
#baseBranchRef: # Optional
# ===== Reporting Inputs =====
#runTitle: # Optional
#fileAnalysisTitle: # Optional
# ===== Advanced Inputs =====
#disableCertCheck: false # Optional
#createBuildIssues: true # Optional
- task: DotNetCoreCLI@2
displayName: "Package Nuget Artifact"
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
inputs:
command: 'pack'
arguments: '--configuration $(buildConfiguration)'
packagesToPack: '$(nugetProject)'
nobuild: true
versionEnvVar: 'build.BuildNumber'
versioningScheme: 'byEnvVar'
#versioningScheme: byBuildNumber # https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/dotnet-core-cli?view=azure-devops#yaml-snippet
- task: NuGetCommand@2
displayName: 'Publish Nuget Artifact'
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
inputs:
command: 'push'
feedsToUse: 'select'
packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
nuGetFeedType: 'internal'
publishVstsFeed: 'e-suite/e-suite'
versioningScheme: 'off'
allowPackageConflicts: true