Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 1 addition & 10 deletions .ci/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,6 @@ pr:
include:
- master

parameters:
- name: DSCVersion
default: '3.2.0-rc.1'
type: string

resources:
repositories:
- repository: ComplianceRepo
Expand All @@ -24,6 +19,7 @@ resources:

variables:
- group: GithubTestingFeedCreds
- group: InstallDSC

stages:
- stage: Build
Expand Down Expand Up @@ -127,34 +123,29 @@ stages:
jobName: TestPkgWin
displayName: PowerShell Core on Windows
imageName: windows-latest
DSCVersion: ${{ parameters.DSCVersion }}

- template: test.yml
parameters:
jobName: TestPkgWinPS
displayName: Windows PowerShell on Windows
imageName: windows-latest
powershellExecutable: powershell
DSCVersion: ${{ parameters.DSCVersion }}

- template: test.yml
parameters:
jobName: TestPkgUbuntu
displayName: PowerShell Core on Ubuntu
imageName: ubuntu-latest
DSCVersion: ${{ parameters.DSCVersion }}

- template: test.yml
parameters:
jobName: TestPkgWinMacOS
displayName: PowerShell Core on macOS
imageName: macOS-latest
DSCVersion: ${{ parameters.DSCVersion }}

- template: test.yml
parameters:
jobName: TestPkgWinAzAuth
displayName: AzAuth PowerShell Core on Windows
imageName: windows-latest
useAzAuth: true
DSCVersion: ${{ parameters.DSCVersion }}
66 changes: 47 additions & 19 deletions .ci/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,14 @@ parameters:
powershellExecutable: pwsh
buildDirectory: '.'
useAzAuth: false
DSCVersion: '3.2.0-rc.1'

jobs:
- job: ${{ parameters.jobName }}
pool:
vmImage: ${{ parameters.imageName }}
displayName: ${{ parameters.displayName }}
variables:
- group: InstallDSC
steps:
- ${{ parameters.powershellExecutable }}: |
Install-Module -Name 'Microsoft.PowerShell.SecretManagement' -force -SkipPublisherCheck -AllowClobber
Expand Down Expand Up @@ -97,39 +98,64 @@ jobs:
condition: eq(${{ parameters.useAzAuth }}, false)

- pwsh: |
$version = '${{ parameters.DSCVersion }}'
$packageName = "DSC-$version"
$ext = 'tar.gz'
$executableName = 'dsc'
$executableExt = if ($IsWindows) { '.exe' } else { '' }
$repo = "PowerShell/DSC"
$api = "https://api.github.com/repos/$repo/releases"

$uri = if ($IsWindows) {
$ext = 'zip'
"https://github.com/PowerShell/DSC/releases/download/v$version/DSC-$version-x86_64-pc-windows-msvc.zip"
} elseif ($IsLinux) {
"https://github.com/PowerShell/DSC/releases/download/v$version/DSC-$version-x86_64-linux.tar.gz"
$headers = @{
"User-Agent" = "pwsh"
"Accept" = "application/vnd.github+json"
"Authorization" = "Bearer $env:GITHUB_TOKEN"
}
elseif ($IsMacOS) {
"https://github.com/PowerShell/DSC/releases/download/v$version/DSC-$version-x86_64-apple-darwin.tar.gz"

# Get releases
$releases = Invoke-RestMethod -Uri $api -Headers $headers -RetryIntervalSec 30 -MaximumRetryCount 10

# Pick latest by publish date (handles prerelease vs stable automatically)
$latest = $releases |
Sort-Object published_at -Descending |
Select-Object -First 1

Write-Host "Latest version: $($latest.tag_name) (prerelease=$($latest.prerelease))"

if ($IsWindows) {
$assetFilter = "x86_64-pc-windows-msvc"
}
elseif ($IsMacOs) {
$assetFilter = "x86_64-apple-darwin"
}
else {
throw "Unsupported OS platform"
$assetFilter = "x86_64-linux"
}

$destPath = Join-Path -Path $env:AGENT_TEMPDIRECTORY -ChildPath "$packageName.$ext"
$assets = $latest.assets |
Where-Object { $_.name -match $assetFilter }

Write-Host "Filtered assets: $($assets.Count)"

Write-Verbose -Verbose "Downloading DSC v3 from $uri to $destPath"
$selectedAsset = $assets | Select-Object -First 1
Comment thread
adityapatwardhan marked this conversation as resolved.

Write-Host "Selected asset: $($selectedAsset.name)"

$outFile = Join-Path $PWD $selectedAsset.name

Write-Host "Downloading $($selectedAsset.name)"

Invoke-WebRequest `
-Uri $selectedAsset.browser_download_url `
-Headers @{ "User-Agent"="pwsh" } `
-OutFile $outFile

Invoke-WebRequest -Uri $uri -OutFile $destPath

if ($IsWindows) {
Expand-Archive -Path $destPath -DestinationPath $env:AGENT_TEMPDIRECTORY -Force -Verbose
Expand-Archive -Path $outFile -DestinationPath $env:AGENT_TEMPDIRECTORY -Force -Verbose
}
else {
tar -xzf $destPath -C $env:AGENT_TEMPDIRECTORY
tar -xzf $outFile -C $env:AGENT_TEMPDIRECTORY
}

$executableName = 'dsc'
$executableExt = if ($IsWindows) { '.exe' } else { '' }

$executableFileName = $executableName + $executableExt

$executable = Get-ChildItem -Path $env:AGENT_TEMPDIRECTORY -File -Recurse -Verbose | Where-Object { $_.Name -eq $executableFileName } | Select-Object -First 1
Expand All @@ -145,6 +171,8 @@ jobs:
Write-Host "##$vstsCommandString"

displayName: 'Install latest DSC v3'
env:
GITHUB_TOKEN: $(GITHUB_TOKEN)

- pwsh: |
Get-ChildItem -Path env: | Out-String -width 9999 -Stream | Write-Verbose -Verbose
Expand Down
Loading