trigger:
branches:
include:
- master
- feature*
name: 1.0.0.$(Rev:.r)
parameters:
- name: WebApiProjectsToBuild
type: object
default:
- WebApi
- name: UnitTestProjects
type: object
default:
- WebApi.UnitTest
- name: IntegrationTestProjects
type: object
default:
- WebApi.IntegrationTest
variables:
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
counter: $[counter('buildCounter',0)]
branchSourcePath: $[replace(variables['Build.SourceBranch'], 'refs/heads/', '')]
disable.coverage.autogenerate: 'true'
stages:
- stage: BuildStage
jobs:
- job: BuildJob
pool:
vmImage: 'windows-latest'
steps:
- checkout: self
clean: true
fetchDepth: 1 # Fetch only one commit
- powershell: |
$SourceBranch = "$(Build.SourceBranch)"
$VersionTag=""
$dateVersion= Get-Date -Format "yyyy.M.d"
$Version = "$dateVersion.$(counter)"
Write-Host "SourceBranch : $SourceBranch"
If($SourceBranch -like "*feature*") {
$VersionTag = "-feature"
}
Write-Host "New version: $Version"
Write-Host "Set environment variable FullBuildNumber to ($Version)"
Write-Host "##vso[task.setvariable variable=FullBuildNumber;]$Version$VersionTag"
Write-Host "##vso[build.updatebuildnumber]$Version"
Write-Host "##vso[task.setvariable variable=BuildVersion;isOutput=true]$Version$VersionTag"
displayName: 'Rewrite build version'
name: SetBuildVersion
- task: UseDotNet@2
displayName: Install .NET
inputs:
version: '8.x'
- task: NuGetAuthenticate@1
displayName: Authenticate with Azure Artifacts
- ${{ each project in parameters.UnitTestProjects}}:
- task: DotNetCoreCLI@2
displayName: Run ${{project}} tests
inputs:
command: test
testRunTitle: ${{project}}
publishWebProjects: false
projects: '**/${{ project }}.csproj'
arguments: '--configuration $(buildConfiguration) --logger trx --collect "XPlat Code Coverage"'
publishTestResults: true
- ${{ each project in parameters.IntegrationTestProjects}}:
- task: DotNetCoreCLI@2
displayName: Run ${{project}} tests
inputs:
command: test
testRunTitle: ${{project}}
publishWebProjects: false
projects: '**/${{ project }}.csproj'
arguments: '--configuration $(buildConfiguration) --logger trx --collect "XPlat Code Coverage"'
publishTestResults: true
- ${{ each project in parameters.WebApiProjectsToBuild }}:
- task: DotNetCoreCLI@2
displayName: Build ${{project}} project
inputs:
command: publish
publishWebProjects: false
projects: '**/${{ project }}.csproj'
arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)\WebApps\${{project}}'
zipAfterPublish: true
- task: DotNetCoreCLI@2
displayName: New Manifest for tools
inputs:
command: custom
custom: 'new '
arguments: tool-manifest
- task: DotNetCoreCLI@2
displayName : Install EF Tool
inputs:
command: custom
custom: 'tool '
arguments: install dotnet-ef
- task: DotNetCoreCLI@2
displayName: Make migration script
inputs:
command: custom
custom: 'ef '
arguments: migrations script -i -p src/SqlDataProvider/SqlDataProvider.csproj -v -s src/SqlDataProvider/SqlDataProvider.csproj -o migrationScript.sql
- task: PublishBuildArtifacts@1
displayName : Publish migration script
inputs:
pathToPublish: migrationScript.sql
artifactName: 'Database Migration'
- task: PublishPipelineArtifact@1
displayName: 'Publish WebApps deployable artifacts'
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)\WebApps'
artifactName: WebApps
publishLocation: 'pipeline'
- task: reportgenerator@5
displayName: Generate Code Coverage Report
inputs:
reports: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'
targetdir: '$(Agent.TempDirectory)/CoverageResults'
reporttypes: 'HtmlInline_AzurePipelines;Cobertura'
- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage report'
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: '$(Agent.TempDirectory)/CoverageResults/Cobertura.xml'
reportDirectory: '$(Agent.TempDirectory)/CoverageResults'
Like this:
Like Loading...
Related