28
loading...
This website collects cookies to deliver better user experience
trigger:
- main
trigger:
- feature/*
- bugfix/*
variables:
buildConfiguration: 'Release'
vmImageName: 'vs2017-win2016'
functionAppName: 'famyhealthfitbitbody'
azureSubscription: '<azureSubscription-id-or-name>'
workingDirectory: '$(System.DefaultWorkingDirectory)/MyHealth.Fitbit.Body'
projectName: 'MyHealth.Fitbit.Body'
stages:
- stage: Build
displayName: Build Stage
jobs:
- job: Build
displayName: Build MyHealth.Fitbit.Body
pool:
vmImage: $(vmImageName)
steps:
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: 'restore'
feedsToUse: 'select'
vstsFeed: '<feed-id>'
projects: '**/*.csproj'
- task: DotNetCoreCLI@2
displayName: Build
inputs:
command: 'build'
projects: '**/*.csproj'
arguments: --configuration $(buildConfiguration)
- task: DotNetCoreCLI@2
displayName: Run Unit Tests
inputs:
command: 'test'
projects: '**/*UnitTests/*.csproj'
arguments: '--configuration $(buildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=$(Build.SourcesDirectory)/TestResults/Coverage/'
publishTestResults: true
- script: |
dotnet tool install -g dotnet-reportgenerator-globaltool
reportgenerator -reports:$(Build.SourcesDirectory)/TestResults/Coverage/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/CodeCoverage -reporttypes:HtmlInline_AzurePipelines;Cobertura
displayName: Create Code coverage report
- task: PublishCodeCoverageResults@1
displayName: 'Publish Code Coverage'
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(Build.SourcesDirectory)/**/coverage.cobertura.xml'
reportDirectory: '$(Build.SourcesDirectory)/TestResults/Coverage/'
- task: DotNetCoreCLI@2
displayName: Publish
inputs:
command: 'publish'
publishWebProjects: false
projects: '**/*.csproj'
arguments: '--configuration $(buildConfiguration) --output $(build.artifactstagingdirectory)'
zipAfterPublish: True
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
- stage: Deploy
displayName: 'Deploy MyHealth.Fitbit.Body'
dependsOn: Build
condition: succeeded()
jobs:
- deployment: Deploy
displayName: Deploy MyHealth.Fitbit.Body
environment: Production
pool:
vmImage: $(vmImageName)
steps:
- task: AzureKeyVault@1
inputs:
azureSubscription: '$(azureSubscription)'
KeyVaultName: '<key-vault-name>'
SecretsFilter: '*'
RunAsPreJob: false
- task: AzureRmWebAppDeployment@4
displayName: 'Deploy Azure Function'
inputs:
azureSubscription: '$(azureSubscription)'
appType: functionApp
WebAppName: $(functionAppName)
package: '$(Pipeline.Workspace)/drop/MyHealth.Fitbit.Body.zip'
appSettings: '-FUNCTIONS_WORKER_RUNTIME "dotnet" -FUNCTIONS_EXTENSION_VERSION "~3" -KeyVaultName "<key-vault-name>" -AccessTokenName "<secret-name>" -ServiceBusConnectionString "$(<secret-value>)" -APPINSIGHTS_INSTRUMENTATIONKEY "<some-key>" -ExceptionQueue "myhealthexceptionqueue" -BodyTopic "myhealthbodytopic" -WEBSITE_TIME_ZONE "New Zealand Standard Time"'
enableCustomDeployment: true
RemoveAdditionalFilesFlag: true
trigger:
- main
variables:
buildConfiguration: 'Release'
vmImageName: 'vs2017-win2016'
functionAppName: 'famyhealthfitbitbody'
azureSubscription: '<azureSubscription-id-or-name>'
workingDirectory: '$(System.DefaultWorkingDirectory)/MyHealth.Fitbit.Body'
projectName: 'MyHealth.Fitbit.Body'
stages:
- stage: Build
displayName: Build Stage
jobs:
- job: Build
displayName: Build MyHealth.Fitbit.Body
pool:
vmImage: $(vmImageName)
steps:
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: 'restore'
feedsToUse: 'select'
vstsFeed: '<artifact-feed-id>'
projects: '**/*.csproj'
- task: DotNetCoreCLI@2
displayName: Build
inputs:
command: 'build'
projects: '**/*.csproj'
arguments: --configuration $(buildConfiguration)
- task: DotNetCoreCLI@2
displayName: Run Unit Tests
inputs:
command: 'test'
projects: '**/*UnitTests/*.csproj'
arguments: '--configuration $(buildConfiguration) /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=$(Build.SourcesDirectory)/TestResults/Coverage/'
publishTestResults: true
- script: |
dotnet tool install -g dotnet-reportgenerator-globaltool
reportgenerator -reports:$(Build.SourcesDirectory)/TestResults/Coverage/coverage.cobertura.xml -targetdir:$(Build.SourcesDirectory)/CodeCoverage -reporttypes:HtmlInline_AzurePipelines;Cobertura
displayName: Create Code coverage report
- task: PublishCodeCoverageResults@1
displayName: 'Publish Code Coverage'
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(Build.SourcesDirectory)/**/coverage.cobertura.xml'
reportDirectory: '$(Build.SourcesDirectory)/TestResults/Coverage/'
- task: DotNetCoreCLI@2
displayName: Publish
inputs:
command: 'publish'
publishWebProjects: false
projects: '**/*.csproj'
arguments: '--configuration $(buildConfiguration) --output $(build.artifactstagingdirectory)'
zipAfterPublish: True
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact'
inputs:
PathtoPublish: '$(build.artifactstagingdirectory)'
- stage: Deploy
displayName: 'Deploy MyHealth.Fitbit.Body'
dependsOn: Build
condition: succeeded()
jobs:
- deployment: Deploy
displayName: Deploy MyHealth.Fitbit.Body
environment: Production
pool:
vmImage: $(vmImageName)
strategy:
runOnce:
deploy:
steps:
- task: AzureKeyVault@1
inputs:
azureSubscription: '$(azureSubscription)'
KeyVaultName: '<key-vault-name>'
SecretsFilter: '*'
RunAsPreJob: false
- task: AzureRmWebAppDeployment@4
displayName: 'Deploy Azure Function'
inputs:
azureSubscription: '$(azureSubscription)'
appType: functionApp
WebAppName: $(functionAppName)
package: '$(Pipeline.Workspace)/drop/MyHealth.Fitbit.Body.zip'
appSettings: '-FUNCTIONS_WORKER_RUNTIME "dotnet" -FUNCTIONS_EXTENSION_VERSION "~3" -KeyVaultName "<key-vault-name>" -AccessTokenName "<secret-name>" -ServiceBusConnectionString "$(<secret-value>)" -APPINSIGHTS_INSTRUMENTATIONKEY "<some-key>" -ExceptionQueue "myhealthexceptionqueue" -BodyTopic "myhealthbodytopic" -WEBSITE_TIME_ZONE "New Zealand Standard Time"'
enableCustomDeployment: true
RemoveAdditionalFilesFlag: true