136 lines
5.5 KiB
YAML
136 lines
5.5 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.UserManager/e-suite.Modules.UserManager.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
|
|
packagesdirectory: '..\packages'
|
|
|
|
- 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: '80' # 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 |