Skip to content

Custom Report - Add Description #456

Custom Report - Add Description

Custom Report - Add Description #456

name: DBA Dash CI with Folder Source/Destination
on:
push:
workflow_dispatch:
jobs:
build:
name: Build
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
language: [csharp]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
dotnet-quality: 'ga'
- name: Check SDK version
run: dotnet --list-sdks
- name: Build
run: dotnet build -c CLI
- name: Build GUI
run: dotnet build DBADashGUI -o DBADashBuild\DBADashGUIOnly
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.3
- name: Build DB
run: msbuild dbadashdb -property:Configuration=CLI
- name: Get Version
id: GetVersion
shell: powershell
run: |
$path = [System.IO.Path]::Combine((Get-Location),"DBADashBuild\CLI\DBADash.dll")
$version = [System.Reflection.Assembly]::LoadFrom($path).GetName().Version
$version.ToString(3)
Write-Output "BUILD_NUMBER=$($version.ToString(3))" >> $env:GITHUB_OUTPUT
- name: Get Build Reference
id: GetBuildReference
shell: powershell
run: |
Invoke-WebRequest -Uri 'https://dataplat.github.io/assets/dbatools-buildref-index.json' -OutFile 'DBADashBuild\CLI\BuildReference.json'
- name: Zip
shell: powershell
run: |
$zipPath = "DBADash_${{steps.GetVersion.outputs.BUILD_NUMBER}}.zip"
Compress-Archive -Path "DBADashBuild\CLI\*" -DestinationPath $zipPath
$guiZipPath = "DBADash_GUI_Only_${{steps.GetVersion.outputs.BUILD_NUMBER}}.zip"
Compress-Archive -Path "DBADashBuild\DBADashGUIOnly\*" -DestinationPath $guiZipPath
- name: Install SQL
uses: potatoqualitee/mssqlsuite@v1.7
with:
install: sqlengine
collation: Latin1_General_BIN
- name: Check SQL Install
run: |
sqlcmd -S localhost -U sa -P dbatools.I0 -d tempdb -Q "SELECT @@version as Version;"
sqlcmd -S localhost -U sa -P dbatools.I0 -d tempdb -Q "SELECT SERVERPROPERTY('Collation') AS Collation;"
- name: Install Service to Read from Folder
shell: powershell
run: |
$ErrorActionPreference = "Stop"
$zipPath = "DBADash_${{steps.GetVersion.outputs.BUILD_NUMBER}}.zip"
$ServiceName = "DBADashReadFromFolder"
$InstallPath = "C:\$ServiceName"
$DBADashFolderDestination = "C:\Dump"
md $DBADashFolderDestination
"Extract to $InstallPath"
Expand-Archive -Path $zipPath -DestinationPath $InstallPath -Force -ErrorAction Stop
Set-Location $InstallPath
./dbadashconfig -a SetServiceName --ServiceName $ServiceName
./dbadashconfig -c $DBADashFolderDestination -a Add
./dbadashconfig -c "Data Source=localhost;UID=sa;pwd=dbatools.I0;Initial Catalog=DBADashDB_FromFolder;Encrypt=True;TrustServerCertificate=True;" -a SetDestination
"Install Service"
./DBADashService install --localsystem
"Start Service"
net start $ServiceName
"Wait 60 sec"
Start-Sleep -s 60
"Get Logs"
Get-ChildItem -Path "$InstallPath\Logs" | Get-Content
exit 0
- name: Install Service to Write to Folder
shell: powershell
run: |
$ErrorActionPreference = "Stop"
$zipPath = "DBADash_${{steps.GetVersion.outputs.BUILD_NUMBER}}.zip"
$ServiceName = "DBADashWriteToFolder"
$InstallPath = "C:\$ServiceName"
$DBADashFolderDestination = "C:\Dump"
"Extract to $InstallPath"
Expand-Archive -Path $zipPath -DestinationPath $InstallPath -Force -ErrorAction Stop
Set-Location $InstallPath
"Configure"
./dbadashconfig -a SetServiceName --ServiceName $ServiceName
./dbadashconfig -c "Data Source=localhost;UID=sa;pwd=dbatools.I0;Initial Catalog=DBADashDB_Direct;Encrypt=True;TrustServerCertificate=True;" -a AddDestination
./dbadashconfig -c $DBADashFolderDestination -a AddDestination
./dbadashconfig -c "Data Source=localhost;UID=sa;pwd=dbatools.I0;Encrypt=True;TrustServerCertificate=True;" -a Add --PlanCollectionEnabled --SlowQueryThresholdMs 1000 --SchemaSnapshotDBs "*"
"Install Service"
./DBADashService install --localsystem
"Start Service"
net start $ServiceName
"Wait 60 sec"
Start-Sleep -s 60
"Get Logs"
Get-ChildItem -Path "$InstallPath\Logs" | Get-Content
exit 0
- name: Wait 5min
shell: powershell
run: |
"Wait 5min"
Start-Sleep -s 300
- name: Output Log (DBADashWriteToFolder)
shell: powershell
run: |
./Scripts/Get-LogContent -LogPath "C:\DBADashWriteToFolder\Logs"
- name: Output Log (DBADashReadFromFolder)
shell: powershell
run: |
./Scripts/Get-LogContent -LogPath "C:\DBADashReadFromFolder\Logs"
- name: Output CollectionErrorLog FromFolder
shell: powershell
run: |
Invoke-Sqlcmd -ServerInstance $params.ServerInstance -Database "DBADashDB_FromFolder" -Query "SELECT * FROM dbo.CollectionErrorLog" -TrustServerCertificate | Format-Table
- name: Output CollectionErrorLog Direct
shell: powershell
run: |
Invoke-Sqlcmd -ServerInstance $params.ServerInstance -Database "DBADashDB_Direct" -Query "SELECT * FROM dbo.CollectionErrorLog" -TrustServerCertificate | Format-Table
- name: Output Table Counts FromFolder
shell: powershell
run: |
./Scripts/Get-TableCounts -ServerInstance "LOCALHOST" -Database "DBADashDB_FromFolder"
- name: Output Table Counts Direct
shell: powershell
run: |
./Scripts/Get-TableCounts -ServerInstance "LOCALHOST" -Database "DBADashDB_Direct"
- name: Run Pester Tests FromFolder
shell: powershell
run: |
Install-Module Pester -Force
Import-Module Pester -PassThru
$container = New-PesterContainer -Path 'Scripts\CI_Workflow.Tests.ps1' -Data @{ Database = "DBADashDB_FromFolder" }
Invoke-Pester -Container $container -Output Detailed
- name: Run Pester Tests Direct
shell: powershell
run: |
$container = New-PesterContainer -Path 'Scripts\CI_Workflow.Tests.ps1' -Data @{ Database = "DBADashDB_Direct" }
Invoke-Pester -Container $container -Output Detailed
- name: Output Log and Check for Errors (DBADashWriteToFolder)
shell: powershell
run: |
./Scripts/Get-LogContent -LogPath "C:\DBADashWriteToFolder\Logs" -ThrowError
- name: Output Log and Check for Errors (DBADashReadFromFolder)
shell: powershell
run: |
./Scripts/Get-LogContent -LogPath "C:\DBADashReadFromFolder\Logs" -ThrowError