@@ -5,13 +5,14 @@ parameters:
55 powershellExecutable : pwsh
66 buildDirectory : ' .'
77 useAzAuth : false
8- DSCVersion : ' 3.2.0-rc.1'
98
109jobs :
1110- job : ${{ parameters.jobName }}
1211 pool :
1312 vmImage : ${{ parameters.imageName }}
1413 displayName : ${{ parameters.displayName }}
14+ variables :
15+ - group : InstallDSC
1516 steps :
1617 - ${{ parameters.powershellExecutable }} : |
1718 Install-Module -Name 'Microsoft.PowerShell.SecretManagement' -force -SkipPublisherCheck -AllowClobber
@@ -97,39 +98,64 @@ jobs:
9798 condition : eq(${{ parameters.useAzAuth }}, false)
9899
99100 - pwsh : |
100- $version = '${{ parameters.DSCVersion }}'
101- $packageName = "DSC-$version"
102- $ext = 'tar.gz'
103- $executableName = 'dsc'
104- $executableExt = if ($IsWindows) { '.exe' } else { '' }
101+ $repo = "PowerShell/DSC"
102+ $api = "https://api.github.com/repos/$repo/releases"
105103
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"
104+ $headers = @{
105+ "User-Agent" = "pwsh"
106+ "Accept" = "application/vnd.github+json"
107+ "Authorization" = "Bearer $env:GITHUB_TOKEN"
111108 }
112- elseif ($IsMacOS) {
113- "https://github.com/PowerShell/DSC/releases/download/v$version/DSC-$version-x86_64-apple-darwin.tar.gz"
114109
110+ # Get releases
111+ $releases = Invoke-RestMethod -Uri $api -Headers $headers -RetryIntervalSec 30 -MaximumRetryCount 10
112+
113+ # Pick latest by publish date (handles prerelease vs stable automatically)
114+ $latest = $releases |
115+ Sort-Object published_at -Descending |
116+ Select-Object -First 1
117+
118+ Write-Host "Latest version: $($latest.tag_name) (prerelease=$($latest.prerelease))"
119+
120+ if ($IsWindows) {
121+ $assetFilter = "x86_64-pc-windows-msvc"
122+ }
123+ elseif ($IsMacOs) {
124+ $assetFilter = "x86_64-apple-darwin"
115125 }
116126 else {
117- throw "Unsupported OS platform "
127+ $assetFilter = "x86_64-linux "
118128 }
119129
120- $destPath = Join-Path -Path $env:AGENT_TEMPDIRECTORY -ChildPath "$packageName.$ext"
130+ $assets = $latest.assets |
131+ Where-Object { $_.name -match $assetFilter }
132+
133+ Write-Host "Filtered assets: $($assets.Count)"
121134
122- Write-Verbose -Verbose "Downloading DSC v3 from $uri to $destPath"
135+ $selectedAsset = $assets | Select-Object -First 1
136+
137+ Write-Host "Selected asset: $($selectedAsset.name)"
138+
139+ $outFile = Join-Path $PWD $selectedAsset.name
140+
141+ Write-Host "Downloading $($selectedAsset.name)"
142+
143+ Invoke-WebRequest `
144+ -Uri $selectedAsset.browser_download_url `
145+ -Headers @{ "User-Agent"="pwsh" } `
146+ -OutFile $outFile
123147
124- Invoke-WebRequest -Uri $uri -OutFile $destPath
125148
126149 if ($IsWindows) {
127- Expand-Archive -Path $destPath -DestinationPath $env:AGENT_TEMPDIRECTORY -Force -Verbose
150+ Expand-Archive -Path $outFile -DestinationPath $env:AGENT_TEMPDIRECTORY -Force -Verbose
128151 }
129152 else {
130- tar -xzf $destPath -C $env:AGENT_TEMPDIRECTORY
153+ tar -xzf $outFile -C $env:AGENT_TEMPDIRECTORY
131154 }
132155
156+ $executableName = 'dsc'
157+ $executableExt = if ($IsWindows) { '.exe' } else { '' }
158+
133159 $executableFileName = $executableName + $executableExt
134160
135161 $executable = Get-ChildItem -Path $env:AGENT_TEMPDIRECTORY -File -Recurse -Verbose | Where-Object { $_.Name -eq $executableFileName } | Select-Object -First 1
@@ -145,6 +171,8 @@ jobs:
145171 Write-Host "##$vstsCommandString"
146172
147173 displayName: 'Install latest DSC v3'
174+ env:
175+ GITHUB_TOKEN: $(GITHUB_TOKEN)
148176
149177 - pwsh : |
150178 Get-ChildItem -Path env: | Out-String -width 9999 -Stream | Write-Verbose -Verbose
0 commit comments