Skip to content

Commit cbf0983

Browse files
Discover and install DSC dynamically for CI tests
1 parent 1c84d34 commit cbf0983

2 files changed

Lines changed: 69 additions & 30 deletions

File tree

.ci/ci.yml

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,6 @@ pr:
1010
include:
1111
- master
1212

13-
parameters:
14-
- name: DSCVersion
15-
default: '3.2.0-rc.1'
16-
type: string
17-
1813
resources:
1914
repositories:
2015
- repository: ComplianceRepo
@@ -127,34 +122,29 @@ stages:
127122
jobName: TestPkgWin
128123
displayName: PowerShell Core on Windows
129124
imageName: windows-latest
130-
DSCVersion: ${{ parameters.DSCVersion }}
131125

132126
- template: test.yml
133127
parameters:
134128
jobName: TestPkgWinPS
135129
displayName: Windows PowerShell on Windows
136130
imageName: windows-latest
137131
powershellExecutable: powershell
138-
DSCVersion: ${{ parameters.DSCVersion }}
139132

140133
- template: test.yml
141134
parameters:
142135
jobName: TestPkgUbuntu
143136
displayName: PowerShell Core on Ubuntu
144137
imageName: ubuntu-latest
145-
DSCVersion: ${{ parameters.DSCVersion }}
146138

147139
- template: test.yml
148140
parameters:
149141
jobName: TestPkgWinMacOS
150142
displayName: PowerShell Core on macOS
151143
imageName: macOS-latest
152-
DSCVersion: ${{ parameters.DSCVersion }}
153144

154145
- template: test.yml
155146
parameters:
156147
jobName: TestPkgWinAzAuth
157148
displayName: AzAuth PowerShell Core on Windows
158149
imageName: windows-latest
159150
useAzAuth: true
160-
DSCVersion: ${{ parameters.DSCVersion }}

.ci/test.yml

Lines changed: 69 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ parameters:
55
powershellExecutable: pwsh
66
buildDirectory: '.'
77
useAzAuth: false
8-
DSCVersion: '3.2.0-rc.1'
98

109
jobs:
1110
- job: ${{ parameters.jobName }}
@@ -97,39 +96,89 @@ jobs:
9796
condition: eq(${{ parameters.useAzAuth }}, false)
9897

9998
- pwsh: |
100-
$version = '${{ parameters.DSCVersion }}'
101-
$packageName = "DSC-$version"
102-
$ext = 'tar.gz'
103-
$executableName = 'dsc'
104-
$executableExt = if ($IsWindows) { '.exe' } else { '' }
105-
106-
$uri = if ($IsWindows) {
107-
$ext = 'zip'
108-
"https://github.com/PowerShell/DSC/releases/download/v$version/DSC-$version-x86_64-pc-windows-msvc.zip"
109-
} elseif ($IsLinux) {
110-
"https://github.com/PowerShell/DSC/releases/download/v$version/DSC-$version-x86_64-linux.tar.gz"
99+
# $version = '${{ parameters.DSCVersion }}'
100+
# $packageName = "DSC-$version"
101+
# $ext = 'tar.gz'
102+
# $executableName = 'dsc'
103+
# $executableExt = if ($IsWindows) { '.exe' } else { '' }
104+
105+
# $uri = if ($IsWindows) {
106+
# $ext = 'zip'
107+
# "https://github.com/PowerShell/DSC/releases/download/v$version/DSC-$version-x86_64-pc-windows-msvc.zip"
108+
# } elseif ($IsLinux) {
109+
# "https://github.com/PowerShell/DSC/releases/download/v$version/DSC-$version-x86_64-linux.tar.gz"
110+
# }
111+
# elseif ($IsMacOS) {
112+
# "https://github.com/PowerShell/DSC/releases/download/v$version/DSC-$version-x86_64-apple-darwin.tar.gz"
113+
114+
# }
115+
# else {
116+
# throw "Unsupported OS platform"
117+
# }
118+
119+
# $destPath = Join-Path -Path $env:AGENT_TEMPDIRECTORY -ChildPath "$packageName.$ext"
120+
121+
# Write-Verbose -Verbose "Downloading DSC v3 from $uri to $destPath"
122+
123+
# Invoke-WebRequest -Uri $uri -OutFile $destPath
124+
125+
$repo = "PowerShell/DSC"
126+
$api = "https://api.github.com/repos/$repo/releases"
127+
128+
$headers = @{
129+
"User-Agent" = "pwsh"
130+
"Accept" = "application/vnd.github+json"
111131
}
112-
elseif ($IsMacOS) {
113-
"https://github.com/PowerShell/DSC/releases/download/v$version/DSC-$version-x86_64-apple-darwin.tar.gz"
114132
133+
# Get releases
134+
$releases = Invoke-RestMethod -Uri $api -Headers $headers
135+
136+
# Pick latest by publish date (handles prerelease vs stable automatically)
137+
$latest = $releases |
138+
Sort-Object published_at -Descending |
139+
Select-Object -First 1
140+
141+
Write-Host "Latest version: $($latest.tag_name) (prerelease=$($latest.prerelease))"
142+
143+
if ($IsWindows) {
144+
$assetFilter = "windows-msvc" # adjust as needed
145+
}
146+
elseif ($IsMacOs) {
147+
$assetFilter = "apple-darwin" # adjust as needed
115148
}
116149
else {
117-
throw "Unsupported OS platform"
150+
$assetFilter = "linux" # adjust as needed
118151
}
119152
120-
$destPath = Join-Path -Path $env:AGENT_TEMPDIRECTORY -ChildPath "$packageName.$ext"
153+
$assets = $latest.assets |
154+
Where-Object { $_.name -match $assetFilter }
121155
122-
Write-Verbose -Verbose "Downloading DSC v3 from $uri to $destPath"
156+
Write-Host "Filtered assets: $($assets.Count)"
157+
158+
$selectedAsset = $assets | Select-Object -First 1
159+
160+
Write-Host "Selected asset: $($selectedAsset.name)"
161+
162+
$outFile = Join-Path $PWD $selectedAsset.name
163+
164+
Write-Host "Downloading $($selectedAsset.name)"
165+
166+
Invoke-WebRequest `
167+
-Uri $selectedAsset.browser_download_url `
168+
-Headers @{ "User-Agent"="pwsh" } `
169+
-OutFile $outFile
123170
124-
Invoke-WebRequest -Uri $uri -OutFile $destPath
125171
126172
if ($IsWindows) {
127-
Expand-Archive -Path $destPath -DestinationPath $env:AGENT_TEMPDIRECTORY -Force -Verbose
173+
Expand-Archive -Path $outFile -DestinationPath $env:AGENT_TEMPDIRECTORY -Force -Verbose
128174
}
129175
else {
130-
tar -xzf $destPath -C $env:AGENT_TEMPDIRECTORY
176+
tar -xzf $outFile -C $env:AGENT_TEMPDIRECTORY
131177
}
132178
179+
$executableName = 'dsc'
180+
$executableExt = if ($IsWindows) { '.exe' } else { '' }
181+
133182
$executableFileName = $executableName + $executableExt
134183
135184
$executable = Get-ChildItem -Path $env:AGENT_TEMPDIRECTORY -File -Recurse -Verbose | Where-Object { $_.Name -eq $executableFileName } | Select-Object -First 1

0 commit comments

Comments
 (0)