214 строки
6.6 KiB
YAML
214 строки
6.6 KiB
YAML
trigger:
|
|
branches:
|
|
include:
|
|
- "*"
|
|
paths:
|
|
exclude:
|
|
- CHANGELOG.md
|
|
tags:
|
|
include:
|
|
- "v*"
|
|
exclude:
|
|
- "*-*"
|
|
|
|
stages:
|
|
- stage: Build
|
|
jobs:
|
|
- job: Package_Module
|
|
displayName: 'Package Module'
|
|
pool:
|
|
vmImage: 'windows-2019'
|
|
steps:
|
|
- task: GitVersion@5
|
|
name: gitVersion
|
|
displayName: 'Evaluate Next Version'
|
|
inputs:
|
|
runtime: 'full'
|
|
configFilePath: 'GitVersion.yml'
|
|
|
|
- task: PowerShell@2
|
|
name: package
|
|
displayName: 'Build & Package Module'
|
|
inputs:
|
|
filePath: './build.ps1'
|
|
arguments: '-ResolveDependency -tasks pack'
|
|
pwsh: true
|
|
env:
|
|
ModuleVersion: $(gitVersion.NuGetVersionV2)
|
|
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Build Artifact'
|
|
inputs:
|
|
pathToPublish: 'output/'
|
|
artifactName: 'output'
|
|
publishLocation: 'Container'
|
|
|
|
- stage: Test
|
|
dependsOn: Build
|
|
jobs:
|
|
- job: Test_HQRM
|
|
displayName: 'High Quality Resource Module'
|
|
pool:
|
|
vmImage: 'windows-2019'
|
|
timeoutInMinutes: 0
|
|
steps:
|
|
- task: DownloadBuildArtifacts@0
|
|
displayName: 'Download Build Artifact'
|
|
inputs:
|
|
buildType: 'current'
|
|
downloadType: 'single'
|
|
artifactName: 'output'
|
|
downloadPath: '$(Build.SourcesDirectory)'
|
|
- task: PowerShell@2
|
|
name: test
|
|
displayName: 'Run HQRM Test'
|
|
inputs:
|
|
filePath: './build.ps1'
|
|
arguments: '-Tasks hqrmtest'
|
|
pwsh: false
|
|
- task: PublishTestResults@2
|
|
displayName: 'Publish Test Results'
|
|
condition: succeededOrFailed()
|
|
inputs:
|
|
testResultsFormat: 'NUnit'
|
|
testResultsFiles: 'output/testResults/NUnit*.xml'
|
|
testRunTitle: 'HQRM'
|
|
|
|
- job: Test_Unit
|
|
displayName: 'Unit'
|
|
pool:
|
|
vmImage: 'windows-2019'
|
|
timeoutInMinutes: 0
|
|
steps:
|
|
- task: DownloadBuildArtifacts@0
|
|
displayName: 'Download Build Artifact'
|
|
inputs:
|
|
buildType: 'current'
|
|
downloadType: 'single'
|
|
artifactName: 'output'
|
|
downloadPath: '$(Build.SourcesDirectory)'
|
|
|
|
- task: PowerShell@2
|
|
name: test
|
|
displayName: 'Run Unit Test'
|
|
inputs:
|
|
filePath: './build.ps1'
|
|
arguments: "-Tasks test -PesterScript 'tests/Unit'"
|
|
pwsh: false
|
|
|
|
- task: PublishTestResults@2
|
|
displayName: 'Publish Test Results'
|
|
condition: succeededOrFailed()
|
|
inputs:
|
|
testResultsFormat: 'NUnit'
|
|
testResultsFiles: 'output/testResults/NUnit*.xml'
|
|
testRunTitle: 'Unit (Windows Server Core)'
|
|
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Publish Test Artifact'
|
|
condition: succeededOrFailed()
|
|
inputs:
|
|
pathToPublish: 'output/testResults/'
|
|
artifactName: 'testResults'
|
|
publishLocation: 'Container'
|
|
|
|
- job: Test_Integration
|
|
displayName: 'Integration'
|
|
pool:
|
|
vmImage: 'windows-2019'
|
|
timeoutInMinutes: 0
|
|
steps:
|
|
- task: DownloadBuildArtifacts@0
|
|
displayName: 'Download Build Artifact'
|
|
inputs:
|
|
buildType: 'current'
|
|
downloadType: 'single'
|
|
artifactName: 'output'
|
|
downloadPath: '$(Build.SourcesDirectory)'
|
|
|
|
- task: PowerShell@2
|
|
name: configureWinRM
|
|
displayName: 'Configure WinRM'
|
|
inputs:
|
|
targetType: 'inline'
|
|
script: 'winrm quickconfig -quiet'
|
|
pwsh: false
|
|
|
|
- task: PowerShell@2
|
|
name: test
|
|
displayName: 'Run Integration Test'
|
|
inputs:
|
|
filePath: './build.ps1'
|
|
arguments: "-Tasks test -PesterScript 'tests/Integration' -CodeCoverageThreshold 0"
|
|
pwsh: false
|
|
|
|
- task: PublishTestResults@2
|
|
displayName: 'Publish Test Results'
|
|
condition: succeededOrFailed()
|
|
inputs:
|
|
testResultsFormat: 'NUnit'
|
|
testResultsFiles: 'output/testResults/NUnit*.xml'
|
|
testRunTitle: 'Integration (Windows Server Core)'
|
|
|
|
- job: Code_Coverage
|
|
displayName: 'Publish Code Coverage'
|
|
dependsOn: Test_Unit
|
|
condition: succeededOrFailed()
|
|
pool:
|
|
vmImage: 'ubuntu-latest'
|
|
timeoutInMinutes: 0
|
|
steps:
|
|
- pwsh: |
|
|
$repositoryOwner,$repositoryName = $env:BUILD_REPOSITORY_NAME -split '/'
|
|
echo "##vso[task.setvariable variable=RepositoryOwner;isOutput=true]$repositoryOwner"
|
|
echo "##vso[task.setvariable variable=RepositoryName;isOutput=true]$repositoryName"
|
|
name: dscBuildVariable
|
|
displayName: 'Set Environment Variables'
|
|
- task: DownloadBuildArtifacts@0
|
|
displayName: 'Download Build Artifact'
|
|
inputs:
|
|
buildType: 'current'
|
|
downloadType: 'single'
|
|
artifactName: 'output'
|
|
downloadPath: '$(Build.SourcesDirectory)'
|
|
|
|
- task: DownloadBuildArtifacts@0
|
|
displayName: 'Download Test Artifact'
|
|
inputs:
|
|
buildType: 'current'
|
|
downloadType: 'single'
|
|
artifactName: 'testResults'
|
|
downloadPath: '$(Build.SourcesDirectory)/output'
|
|
|
|
- stage: Deploy
|
|
dependsOn: Test
|
|
condition: |
|
|
and(
|
|
succeeded(),
|
|
or(
|
|
eq(variables['Build.SourceBranch'], 'refs/heads/master'),
|
|
startsWith(variables['Build.SourceBranch'], 'refs/tags/')
|
|
)
|
|
)
|
|
jobs:
|
|
- job: Deploy_Module
|
|
displayName: 'Deploy Module'
|
|
pool:
|
|
vmImage: 'windows-2019'
|
|
steps:
|
|
- task: DownloadBuildArtifacts@0
|
|
displayName: 'Download Build Artifact'
|
|
inputs:
|
|
buildType: 'current'
|
|
downloadType: 'single'
|
|
artifactName: 'output'
|
|
downloadPath: '$(Build.SourcesDirectory)'
|
|
- task: PowerShell@2
|
|
name: publishRelease
|
|
displayName: 'Publish Release'
|
|
inputs:
|
|
filePath: './build.ps1'
|
|
arguments: '-tasks publish'
|
|
env:
|
|
GalleryApiToken: $(GalleryApiToken)
|