1
1
name : Build and Publish Preview Release
2
2
3
- # This workflow builds the module and creates a preview release on GitHub
4
- # It triggers automatically when:
5
- # - The module version contains "preview" (checked on every push)
6
- # - Manually triggered via workflow_dispatch (useful when module is not found on PowerShell Gallery)
7
- #
8
- # To trigger a preview release:
9
- # 1. Set ModuleVersion in dbatools.library.psd1 to include "preview" (e.g., '2025.7.11-preview')
10
- # 2. OR manually trigger the workflow from GitHub Actions tab
11
-
12
3
on :
13
4
push :
14
- # Runs on any branch, checks module version for "preview"
15
5
pull_request :
16
6
workflow_dispatch :
17
- # Manual trigger for when module is not available on PowerShell Gallery
18
7
inputs :
19
8
dbatools_branch :
20
9
description : ' dbatools branch to use (default: development)'
21
10
required : false
22
11
default : ' development'
23
12
13
+ env :
14
+ TENANTID : ${{ secrets.TENANTID }}
15
+ CLIENTID : ${{ secrets.CLIENTID }}
16
+ CLIENTSECRET : ${{ secrets.CLIENTSECRET }}
17
+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
18
+ CLIENT_GUID_SECRET : ${{ secrets.CLIENT_GUID_SECRET }}
19
+ CLIENT_GUID : ${{ secrets.CLIENT_GUID }}
20
+ SMODefaultModuleName : dbatools
21
+
24
22
jobs :
25
- # Setup job - downloads dependencies once for all other jobs
26
23
setup-dependencies :
27
24
runs-on : ubuntu-latest
28
25
steps :
54
51
name : appveyor-repo
55
52
path : appveyor-lab
56
53
57
- # Windows build job - builds complete library with all components
58
54
build-library :
59
55
runs-on : windows-latest
60
56
needs : setup-dependencies
78
74
run : .\build\build.ps1 -BuildZip
79
75
80
76
- name : Make sqlpackage executable
77
+ if : runner.os != 'Windows'
81
78
shell : pwsh
82
79
run : |
83
80
chmod +x ./artifacts/dbatools.library/core/lib/dac/linux/sqlpackage || true
@@ -129,7 +126,6 @@ jobs:
129
126
name : dbatools-library-zip
130
127
path : artifacts/dbatools.library.zip
131
128
132
- # Test matrix - tests on all platforms with proper dependencies and environment
133
129
test-matrix :
134
130
name : Test on ${{ matrix.os }}
135
131
runs-on : ${{ matrix.os }}
@@ -151,26 +147,14 @@ jobs:
151
147
shell : pwsh
152
148
working-directory : ${{ github.workspace }}
153
149
154
- env :
155
- TENANTID : ${{ secrets.TENANTID }}
156
- CLIENTID : ${{ secrets.CLIENTID }}
157
- CLIENTSECRET : ${{ secrets.CLIENTSECRET }}
158
- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
159
- CLIENT_GUID_SECRET : ${{ secrets.CLIENT_GUID_SECRET }}
160
- CLIENT_GUID : ${{ secrets.CLIENT_GUID }}
161
- SMODefaultModuleName : dbatools
162
-
163
150
steps :
164
151
- uses : actions/checkout@v4
165
152
166
153
- name : Setup docker images (Linux only)
167
154
if : matrix.os == 'ubuntu-latest'
168
155
run : |
169
- # create a shared network
170
156
docker network create localnet
171
- # Expose engine and endpoint then setup a shared path for migrations
172
157
docker run -p 1433:1433 --volume shared:/shared:z --name mssql1 --hostname mssql1 --network localnet -d dbatools/sqlinstance
173
- # Expose second engine and endpoint on different port
174
158
docker run -p 14333:1433 --volume shared:/shared:z --name mssql2 --hostname mssql2 --network localnet -d dbatools/sqlinstance2
175
159
176
160
- name : Install local SQL engine via mssqlsuite (Windows only)
@@ -258,12 +242,10 @@ jobs:
258
242
Write-Host "Running integration tests with ${{ matrix.script }} (Windows PowerShell)"
259
243
$null = Invoke-Pester ${{ matrix.script }} -Output Detailed -PassThru
260
244
261
- # Release job - creates GitHub release
262
245
create-preview-release :
263
246
needs : test-matrix
264
247
runs-on : windows-latest
265
248
if : github.event_name == 'workflow_dispatch' || github.event_name == 'push'
266
-
267
249
steps :
268
250
- name : Checkout code
269
251
uses : actions/checkout@v4
@@ -312,7 +294,7 @@ jobs:
312
294
"branch=$branch" >> $env:GITHUB_OUTPUT
313
295
314
296
- name : Create Preview Release
315
- uses : softprops/action-gh-release@v1
297
+ uses : softprops/action-gh-release@v2
316
298
with :
317
299
tag_name : v${{ steps.get_version.outputs.version }}
318
300
name : Preview Release v${{ steps.get_version.outputs.version }}
0 commit comments