99 - main
1010 paths-ignore :
1111 - .vscode/*
12- - ' **.md'
12+ - " **.md"
1313 pull_request :
1414 paths-ignore :
1515 - .vscode/*
16- - ' **.md'
16+ - " **.md"
1717
1818 # Run CI once per day (at 06:00 UTC)
1919 schedule :
@@ -27,10 +27,9 @@ concurrency:
2727env :
2828 SQLINSTANCE : " localhost"
2929 DATABASE : " tsqlt"
30- INSTALLER_FILE : " install_dba-multitool.sql"
31- SAMPLE_DATABASE : " WideWorldImporters"
32- SP_DOC_FILE : " WideWorldImporters.md"
3330 COVERAGE_HTML_FILE : " coverage.html"
31+ COBERTURA_FILE : " cobertura.xml"
32+ SAMPLE_DATABASE : " WideWorldImporters"
3433
3534jobs :
3635 integration :
5251 ref : ${{ github.head_ref }}
5352
5453 - name : Install SQL Server
54+ continue-on-error : true
55+ id : mssqlsuite
56+ uses :
potatoqualitee/[email protected] 57+ with :
58+ install : sqlengine
59+ sa-password : L0wlydb4
60+
61+ - name : Retry SQL Server install
62+ if : steps.mssqlsuite.outcome == 'failure'
5563 uses :
potatoqualitee/[email protected] 5664 with :
5765 install : sqlengine
@@ -63,21 +71,18 @@ jobs:
6371 modules-to-cache : dbatools
6472 shell : powershell
6573
66- - name : Create database
67- run : |
68- $null = New-DbaDatabase -SqlInstance $Env:SQLINSTANCE -Database $Env:DATABASE
69-
7074 - name : Install tSQLt
7175 uses : lowlydba/tsqlt-installer@v1
7276 with :
7377 sql-instance : ${{ env.SQLINSTANCE }}
7478 database : ${{ env.DATABASE }}
7579 version : " latest"
80+ create : true
7681
7782 - name : Install multitool
7883 run : |
7984 foreach ($script in (Get-ChildItem -Path "." -Filter "sp_*.sql").Name) {
80- Invoke-DbaQuery -SqlInstance $Env:SQLINSTANCE -Database $Env:DATABASE -File $script
85+ Invoke-DbaQuery -SqlInstance $Env:SQLINSTANCE -Database $Env:DATABASE -File $script -EnableException
8186 }
8287
8388 - name : Run Pester tests with SQLCover
@@ -86,38 +91,40 @@ jobs:
8691 sql-instance : ${{ env.SQLINSTANCE }}
8792 database : ${{ env.DATABASE }}
8893
94+ - name : Restore sample database
95+ uses : ./.github\actions\mssql-sample-db
96+ with :
97+ sql-instance : ${{ env.SQLINSTANCE }}
98+ database : ${{ env.SAMPLE_DATABASE }}
99+
100+ - name : Generate sp_doc sample
101+ env :
102+ SQL_VERSION : ${{ matrix.sql_server }}
103+ run : |
104+ Write-Output "Generating '$Env:SAMPLE_DATABASE' markdown sample."
105+ $Query = "EXEC sp_doc @DatabaseName = '$Env:SAMPLE_DATABASE';"
106+ Invoke-DbaQuery -SqlInstance $Env:SQLINSTANCE -Database $Env:DATABASE -Query $Query -As SingleValue -EnableException | Out-File "$($Env:SAMPLE_DATABASE)-$($Env:SQL_VERSION).md"
107+
108+ - name : Upload sp_doc sample artifact
109+ uses : actions/upload-artifact@v3
110+ with :
111+ name : sp_doc-sample
112+ path : " ${{ env.SAMPLE_DATABASE }}-${{ matrix.sql_server}}.md"
113+
114+ # Only do cov report on latest SQL Server version
89115 - name : Produce the coverage report
90116 uses : insightsengineering/coverage-action@v2
117+ id : cov-report
118+ if : ${{ matrix.sql_server == 2019 }}
91119 with :
92- path : " cobertura.xml "
120+ path : ${{ env.COBERTURA_FILE }}
93121 threshold : 90
94122 fail : false
95123 publish : true
96- diff : true
97- diff-branch : main
98-
99- - name : Create sp_doc sample artifact
100- run : |
101- $Url = "https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak"
102- $BackupPath = Join-Path -Path $Env:RUNNER_TEMP -ChildPath "$Env:SAMPLE_DATABASE-Full.bak"
103-
104- Write-Output "Downloading $Env:SAMPLE_DATABASE."
105- Invoke-WebRequest -Uri $Url -OutFile $BackupPath
106- $null = Restore-DbaDatabase -SqlInstance $Env:SQLINSTANCE -DatabaseName $Env:SAMPLE_DATABASE -Path $BackupPath -WithReplace
107-
108- Write-Output "Generating $Env:SAMPLE_DATABASE markdown sample."
109- $Query = "EXEC sp_doc @DatabaseName = '$Env:SAMPLE_DATABASE';"
110- Invoke-DbaQuery -SqlInstance $Env:SQLINSTANCE -Database $Env:Database -Query $Query -As SingleValue | Out-File $Env:SP_DOC_FILE
111- Get-ChildItem -Path "." -Filter $Env:SP_DOC_FILE
112124
113125 - name : Upload HTML coverage artifact
114126 uses : actions/upload-artifact@v3
127+ if : steps.cov-report.outcome == 'success'
115128 with :
116129 name : html-coverage
117130 path : ${{ env.COVERAGE_HTML_FILE }}
118-
119- - name : Upload sp_doc sample artifact
120- uses : actions/upload-artifact@v3
121- with :
122- name : sp_doc-sample
123- path : ${{ env.SP_DOC_FILE }}
0 commit comments