Skip to content

Commit eb3e4a8

Browse files
authored
Fix the Sync PSGalleryModules to Artifacts build (PowerShell#12277)
Merging this to unblock daily build
1 parent 5f89a10 commit eb3e4a8

2 files changed

Lines changed: 38 additions & 55 deletions

File tree

tools/releaseBuild/azureDevOps/AzArtifactFeed/PSGalleryToAzArtifacts.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@ queue:
88
name: Hosted VS2017
99
steps:
1010
- pwsh: |
11-
Install-Module -Name PowerShellGet -MinimumVersion 2.0.1 -Force
11+
$minVer = [version]"2.2.3"
12+
$curVer = Get-Module PowerShellGet -ListAvailable | Select-Object -First 1 | ForEach-Object Version
13+
if (-not $curVer -or $curVer -lt $minVer) {
14+
Install-Module -Name PowerShellGet -MinimumVersion 2.2.3 -Force
15+
}
1216
displayName: Update PSGet and PackageManagement
1317
condition: succeededOrFailed()
1418

tools/releaseBuild/azureDevOps/AzArtifactFeed/SyncGalleryToAzArtifacts.psm1

Lines changed: 33 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -66,17 +66,20 @@ function SyncGalleryToAzArtifacts {
6666
}
6767

6868
# Check if Az package version is less that gallery version
69-
if (CompareVersions -lt -ReferencePackage $foundPackageOnAz -DifferencePackage $foundPackageOnGallery) {
69+
$pkgOnAzVersion = [semver]::new($foundPackageOnAz.Version)
70+
$pkgOnGalleryVersion = [semver]::new($foundPackageOnGallery.Version)
71+
72+
if ($pkgOnAzVersion -lt $pkgOnGalleryVersion) {
7073
Write-Verbose -Verbose "Module needs to be updated $($package.Name) - $($foundPackageOnGallery.Version)"
7174
$modulesToUpdate += $foundPackageOnGallery
72-
} elseif (CompareVersions -lt -ReferencePackage $foundPackageOnGallery -DifferencePackage $foundPackageOnAz) {
75+
} elseif ($pkgOnGalleryVersion -lt $pkgOnAzVersion) {
7376
Write-Warning "Newer version found on Az Artifacts - $($foundPackageOnAz.Name) - $($foundPackageOnAz.Version)"
7477
} else {
7578
Write-Verbose -Verbose "Module is in sync - $($package.Name)"
7679
}
7780
}
7881

79-
"Gallery Packages:`n"
82+
"`nGallery Packages:"
8083
$galleryPackages
8184

8285
"`nAz Artifacts Packages:`n"
@@ -90,66 +93,42 @@ function SyncGalleryToAzArtifacts {
9093
Save-Package -Provider NuGet -Source $galleryUrl -Name $package.Name -RequiredVersion $package.Version -Path $Destination
9194
}
9295

93-
# Remove dependent packages downloaded by Save-Module if there are already present in AzArtifacts feed.
94-
try {
95-
$null = Register-PackageSource -Name local -Location $Destination -ProviderName NuGet -Force
96-
$packageNamesToKeep = @()
97-
$savedPackages = Find-Package -Source local -AllVersions -AllowPreReleaseVersion
96+
if ($modulesToUpdate.Length -gt 0)
97+
{
98+
# Remove dependent packages downloaded by Save-Package if there are already present in AzArtifacts feed.
99+
try {
100+
$null = Register-PackageSource -Name local -Location $Destination -ProviderName NuGet -Force
101+
$packageNamesToKeep = @()
102+
$savedPackages = Find-Package -Source local -AllVersions -AllowPreReleaseVersion
98103

99-
Write-Verbose -Verbose "Saved packages:"
100-
$savedPackages | Out-String | Write-Verbose -Verbose
104+
Write-Verbose -Verbose "Saved packages:"
105+
$savedPackages | Out-String | Write-Verbose -Verbose
101106

102-
foreach($package in $savedPackages) {
103-
$pkgVersion = NormalizeVersion -version $package.Version
104-
$foundMatch = $azArtifactsPackages | Where-Object { $_.Name -eq $package.Name -and (NormalizeVersion -version $_.Version) -eq $pkgVersion }
107+
foreach($package in $savedPackages) {
108+
$pkgVersion = NormalizeVersion -version $package.Version
109+
$foundMatch = $azArtifactsPackages | Where-Object { $_.Name -eq $package.Name -and (NormalizeVersion -version $_.Version) -eq $pkgVersion }
105110

106-
if(-not $foundMatch) {
107-
Write-Verbose "Keeping package $($package.PackageFileName)" -Verbose
108-
$packageNamesToKeep += "{0}*.nupkg" -f $package.Name
111+
if(-not $foundMatch) {
112+
Write-Verbose "Keeping package $($package.PackageFileName)" -Verbose
113+
$packageNamesToKeep += "{0}*.nupkg" -f $package.Name
114+
}
109115
}
110-
}
111-
112-
Remove-Item -Path $Destination -Exclude $packageNamesToKeep -Recurse -Force -Verbose
113-
114-
Write-Verbose -Verbose "Packages kept for upload"
115-
Get-ChildItem $Destination | Out-String | Write-Verbose -Verbose
116-
}
117-
finally {
118-
Unregister-PackageSource -Name local -Force -ErrorAction SilentlyContinue
119-
}
120-
121-
}
122116

123-
Function CompareVersions {
124-
param (
125-
[Microsoft.PackageManagement.Packaging.SoftwareIdentity]
126-
$ReferencePackage,
127-
[Microsoft.PackageManagement.Packaging.SoftwareIdentity]
128-
$DifferencePackage,
129-
[Parameter(Mandatory = $true, ParameterSetName='lt')]
130-
[switch]
131-
$lt,
132-
[Parameter(Mandatory = $true, ParameterSetName='gt')]
133-
[switch]
134-
$gt
135-
)
136-
137-
if ($ReferencePackage.Version -eq $DifferencePackage.Version) {
138-
return $false
139-
}
140-
141-
$latest = SortPackage -p @($ReferencePackage,$DifferencePackage) | Select-Object -First 1
117+
if ($packageNamesToKeep.Length -gt 0) {
118+
## Removing only if we do have some packages to keep,
119+
## otherwise the '$Destination' folder will be removed.
120+
Remove-Item -Path $Destination -Exclude $packageNamesToKeep -Recurse -Force -Verbose
121+
}
142122

143-
if ($gt.IsPresent) {
144-
return $ReferencePackage -eq $latest
145-
} elseif ($lt.IsPresent) {
146-
return $DifferencePackage -eq $latest
147-
} else {
148-
throw "Unknown parameter set"
123+
Write-Verbose -Verbose "Packages kept for upload"
124+
Get-ChildItem $Destination | Out-String | Write-Verbose -Verbose
125+
}
126+
finally {
127+
Unregister-PackageSource -Name local -Force -ErrorAction SilentlyContinue
128+
}
149129
}
150130
}
151131

152-
153132
Function SortPackage {
154133
param(
155134
[Parameter(ValueFromPipeline = $true)]

0 commit comments

Comments
 (0)