Skip to content

Commit

Permalink
Create separate pipeline jobs for dbatools
Browse files Browse the repository at this point in the history
  • Loading branch information
johlju committed Apr 23, 2023
1 parent 070ed46 commit 6372e2a
Show file tree
Hide file tree
Showing 5 changed files with 249 additions and 47 deletions.
156 changes: 154 additions & 2 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ variables:
sourceFolderName: source
defaultBranch: main

# cSpell: ignore setvariable updatebuildnumber DSCSQLTEST hqrmtest quickconfig
# cSpell: ignore setvariable updatebuildnumber DSCSQLTEST hqrmtest quickconfig dbatools
stages:
- stage: Build
jobs:
Expand Down Expand Up @@ -173,7 +173,7 @@ stages:
vmImage: $(JOB_VMIMAGE)
timeoutInMinutes: 0
variables:
SMODefaultModuleName: 'dbatools'
SMODefaultModuleName: 'SqlServer'
steps:
- task: DownloadPipelineArtifact@2
displayName: 'Download Build Artifact'
Expand Down Expand Up @@ -241,6 +241,94 @@ stages:
testResultsFiles: '$(buildFolderName)/$(testResultFolderName)/NUnit*.xml'
testRunTitle: 'Integration ($(TEST_CONFIGURATION) / $(JOB_VMIMAGE))'

- job: Test_Integration_dbatools
displayName: 'Integration (dbatools)'
strategy:
matrix:
SQL2016_WIN2022:
JOB_VMIMAGE: 'windows-2022'
TEST_CONFIGURATION: 'Integration_SQL2016'
SQL2017_WIN2022:
JOB_VMIMAGE: 'windows-2022'
TEST_CONFIGURATION: 'Integration_SQL2017'
SQL2019_WIN2022:
JOB_VMIMAGE: 'windows-2022'
TEST_CONFIGURATION: 'Integration_SQL2019'
SQL2022_WIN2022:
JOB_VMIMAGE: 'windows-2022'
TEST_CONFIGURATION: 'Integration_SQL2022'
pool:
vmImage: $(JOB_VMIMAGE)
timeoutInMinutes: 0
variables:
SMODefaultModuleName: 'dbatools'
steps:
- task: DownloadPipelineArtifact@2
displayName: 'Download Build Artifact'
inputs:
buildType: 'current'
artifactName: $(buildArtifactName)
targetPath: '$(Build.SourcesDirectory)/$(buildFolderName)'
- task: PowerShell@2
name: configureWinRM
displayName: 'Configure WinRM'
inputs:
targetType: 'inline'
script: 'winrm quickconfig -quiet'
pwsh: false
# - powershell: |
# Import-Module -Name ./tests/TestHelpers/CommonTestHelper.psm1
# Remove-PowerShellModuleFromCI -Name @('SqlServer', 'SQLPS')
# Remove-Module -Name CommonTestHelper
# name: cleanCIWorker
# displayName: 'Clean CI worker'
- powershell: |
./build.ps1 -Tasks test -CodeCoverageThreshold 0 -PesterTag $(TEST_CONFIGURATION) -PesterPath @(
# Run the integration tests in a specific group order.
# Group 1
'tests/Integration/DSC_SqlSetup.Integration.Tests.ps1'
# Group 2
'tests/Integration/DSC_SqlAgentAlert.Integration.Tests.ps1'
'tests/Integration/DSC_SqlLogin.Integration.Tests.ps1'
'tests/Integration/DSC_SqlEndpoint.Integration.Tests.ps1'
'tests/Integration/DSC_SqlDatabaseMail.Integration.Tests.ps1'
'tests/Integration/DSC_SqlRSSetup.Integration.Tests.ps1'
'tests/Integration/DSC_SqlDatabaseDefaultLocation.Integration.Tests.ps1'
'tests/Integration/DSC_SqlDatabase.Integration.Tests.ps1'
'tests/Integration/DSC_SqlAlwaysOnService.Integration.Tests.ps1'
'tests/Integration/DSC_SqlAgentOperator.Integration.Tests.ps1'
'tests/Integration/DSC_SqlServiceAccount.Integration.Tests.ps1'
'tests/Integration/DSC_SqlAgentFailsafe.Integration.Tests.ps1'
'tests/Integration/DSC_SqlTraceFlag.Integration.Tests.ps1'
# Group 3
'tests/Integration/DSC_SqlRole.Integration.Tests.ps1'
'tests/Integration/DSC_SqlRS_Default.Integration.Tests.ps1'
'tests/Integration/DSC_SqlDatabaseUser.Integration.Tests.ps1'
'tests/Integration/DSC_SqlReplication.Integration.Tests.ps1'
'tests/Integration/DSC_SqlAudit.Integration.Tests.ps1'
# Group 4
'tests/Integration/DSC_SqlScript.Integration.Tests.ps1'
'tests/Integration/DSC_SqlDatabasePermission.Integration.Tests.ps1'
'tests/Integration/DSC_SqlPermission.Integration.Tests.ps1'
'tests/Integration/DSC_SqlWindowsFirewall.Integration.Tests.ps1'
# Group 5
'tests/Integration/DSC_SqlSecureConnection.Integration.Tests.ps1'
'tests/Integration/DSC_SqlScriptQuery.Integration.Tests.ps1'
'tests/Integration/DSC_SqlProtocol.Integration.Tests.ps1'
# Group 6 (tests makes changes that could make SQL Server to loose connectivity)
'tests/Integration/DSC_SqlProtocolTcpIp.Integration.Tests.ps1'
'tests/Integration/DSC_SqlDatabaseObjectPermission.Integration.Tests.ps1'
)
name: test
displayName: 'Run Integration Test'
- task: PublishTestResults@2
displayName: 'Publish Test Results'
condition: succeededOrFailed()
inputs:
testResultsFormat: 'NUnit'
testResultsFiles: '$(buildFolderName)/$(testResultFolderName)/NUnit*.xml'
testRunTitle: 'Integration (dbatools) ($(TEST_CONFIGURATION) / $(JOB_VMIMAGE))'

- job: Test_Integration_RS
displayName: 'Integration Reporting Services'
strategy:
Expand Down Expand Up @@ -316,6 +404,70 @@ stages:
testResultsFiles: '$(buildFolderName)/$(testResultFolderName)/NUnit*.xml'
testRunTitle: 'Integration RS ($(TEST_CONFIGURATION) / $(JOB_VMIMAGE))'

- job: Test_Integration_RS_dbatools
displayName: 'Integration Reporting Services (dbatools)'
strategy:
matrix:
SQL2016_WIN2022:
JOB_VMIMAGE: 'windows-2022'
TEST_CONFIGURATION: 'Integration_SQL2016'
SQL2017_WIN2022:
JOB_VMIMAGE: 'windows-2022'
TEST_CONFIGURATION: 'Integration_SQL2017'
SQL2019_WIN2022:
JOB_VMIMAGE: 'windows-2022'
TEST_CONFIGURATION: 'Integration_SQL2019'
SQL2022_WIN2022:
JOB_VMIMAGE: 'windows-2022'
TEST_CONFIGURATION: 'Integration_SQL2022'
variables:
SKIP_DATABASE_ENGINE_DEFAULT_INSTANCE: true
SKIP_ANALYSIS_MULTI_INSTANCE: true
SKIP_ANALYSIS_TABULAR_INSTANCE: true
SMODefaultModuleName: 'dbatools'
pool:
vmImage: $(JOB_VMIMAGE)
timeoutInMinutes: 0
steps:
- task: DownloadPipelineArtifact@2
displayName: 'Download Build Artifact'
inputs:
buildType: 'current'
artifactName: $(buildArtifactName)
targetPath: '$(Build.SourcesDirectory)/$(buildFolderName)'
- task: PowerShell@2
name: configureWinRM
displayName: 'Configure WinRM'
inputs:
targetType: 'inline'
script: 'winrm quickconfig -quiet'
pwsh: false
# - powershell: |
# Import-Module -Name ./tests/TestHelpers/CommonTestHelper.psm1
# Remove-PowerShellModuleFromCI -Name @('SqlServer', 'SQLPS')
# Remove-Module -Name CommonTestHelper
# name: cleanCIWorker
# displayName: 'Clean CI worker'
- powershell: |
./build.ps1 -Tasks test -CodeCoverageThreshold 0 -PesterTag $(TEST_CONFIGURATION) -PesterPath @(
# Run the integration tests in a specific group order.
# Group 1
'tests/Integration/DSC_SqlSetup.Integration.Tests.ps1'
# Group 2
'tests/Integration/DSC_SqlRSSetup.Integration.Tests.ps1'
# Group 3
'tests/Integration/DSC_SqlRS.Integration.Tests.ps1'
)
name: test
displayName: 'Run Reporting Services Integration Test'
- task: PublishTestResults@2
displayName: 'Publish Test Results'
condition: succeededOrFailed()
inputs:
testResultsFormat: 'NUnit'
testResultsFiles: '$(buildFolderName)/$(testResultFolderName)/NUnit*.xml'
testRunTitle: 'Integration RS (dbatools) ($(TEST_CONFIGURATION) / $(JOB_VMIMAGE))'

- job: Code_Coverage
displayName: 'Publish Code Coverage'
dependsOn: Test_Unit
Expand Down
14 changes: 13 additions & 1 deletion source/Public/Get-SqlDscPreferredModule.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,25 @@ function Get-SqlDscPreferredModule
(
[Parameter()]
[System.String[]]
$Name = @('dbatools', 'SQLPS'),
$Name,

[Parameter()]
[System.Management.Automation.SwitchParameter]
$Refresh
)

if (-not $PSBoundParameters.ContainsKey('Name'))
{
$Name = if ($env:SMODefaultModuleName)
{
@($env:SMODefaultModuleName, 'SQLPS')
}
else
{
@('SqlServer', 'SQLPS')
}
}

if ($Refresh.IsPresent)
{
# Only run on Windows that has Machine state.
Expand Down
14 changes: 13 additions & 1 deletion source/Public/Import-SqlDscPreferredModule.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,25 @@ function Import-SqlDscPreferredModule
(
[Parameter()]
[System.String]
$PreferredModule = 'dbatools',
$PreferredModule,

[Parameter()]
[System.Management.Automation.SwitchParameter]
$Force
)

if (-not $PSBoundParameters.ContainsKey('PreferredModule'))
{
$PreferredModule = if ($env:SMODefaultModuleName)
{
$env:SMODefaultModuleName
}
else
{
'SqlServer'
}
}

if ($Force.IsPresent)
{
Write-Verbose -Message $script:localizedData.PreferredModule_ForceRemoval
Expand Down
2 changes: 1 addition & 1 deletion tests/Integration/DSC_SqlSetup.Integration.Tests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ Describe "$($script:dscResourceName)_Integration" -Tag @('Integration_SQL2016',
}

Context ('When using configuration <_>') -ForEach @(
"$($script:dscResourceName)_InstallSqlServerModule_Config"
"$($script:dscResourceName)_InstallSMOModule_Config"
) {
BeforeAll {
$configurationName = $_
Expand Down
Loading

0 comments on commit 6372e2a

Please sign in to comment.