mirror of
https://github.com/aphrody-labs/PowerShell.git
synced 2026-10-17 12:45:47 +00:00
Fix the Sync PSGalleryModules to Artifacts build (#12277)
Merging this to unblock daily build
This commit is contained in:
1 parent
5f89a10f5b
commit
eb3e4a8781
2 files changed
+39
-56
No files matched your search
@@ -8,7 +8,11 @@ queue:
|
||||
name: Hosted VS2017
|
||||
steps:
|
||||
- pwsh: |
|
||||
Install-Module -Name PowerShellGet -MinimumVersion 2.0.1 -Force
|
||||
$minVer = [version]"2.2.3"
|
||||
$curVer = Get-Module PowerShellGet -ListAvailable | Select-Object -First 1 | ForEach-Object Version
|
||||
if (-not $curVer -or $curVer -lt $minVer) {
|
||||
Install-Module -Name PowerShellGet -MinimumVersion 2.2.3 -Force
|
||||
}
|
||||
displayName: Update PSGet and PackageManagement
|
||||
condition: succeededOrFailed()
|
||||
|
||||
|
||||
@@ -66,17 +66,20 @@ function SyncGalleryToAzArtifacts {
|
||||
}
|
||||
|
||||
# Check if Az package version is less that gallery version
|
||||
if (CompareVersions -lt -ReferencePackage $foundPackageOnAz -DifferencePackage $foundPackageOnGallery) {
|
||||
$pkgOnAzVersion = [semver]::new($foundPackageOnAz.Version)
|
||||
$pkgOnGalleryVersion = [semver]::new($foundPackageOnGallery.Version)
|
||||
|
||||
if ($pkgOnAzVersion -lt $pkgOnGalleryVersion) {
|
||||
Write-Verbose -Verbose "Module needs to be updated $($package.Name) - $($foundPackageOnGallery.Version)"
|
||||
$modulesToUpdate += $foundPackageOnGallery
|
||||
} elseif (CompareVersions -lt -ReferencePackage $foundPackageOnGallery -DifferencePackage $foundPackageOnAz) {
|
||||
} elseif ($pkgOnGalleryVersion -lt $pkgOnAzVersion) {
|
||||
Write-Warning "Newer version found on Az Artifacts - $($foundPackageOnAz.Name) - $($foundPackageOnAz.Version)"
|
||||
} else {
|
||||
Write-Verbose -Verbose "Module is in sync - $($package.Name)"
|
||||
}
|
||||
}
|
||||
|
||||
"Gallery Packages:`n"
|
||||
"`nGallery Packages:"
|
||||
$galleryPackages
|
||||
|
||||
"`nAz Artifacts Packages:`n"
|
||||
@@ -90,66 +93,42 @@ function SyncGalleryToAzArtifacts {
|
||||
Save-Package -Provider NuGet -Source $galleryUrl -Name $package.Name -RequiredVersion $package.Version -Path $Destination
|
||||
}
|
||||
|
||||
# Remove dependent packages downloaded by Save-Module if there are already present in AzArtifacts feed.
|
||||
try {
|
||||
$null = Register-PackageSource -Name local -Location $Destination -ProviderName NuGet -Force
|
||||
$packageNamesToKeep = @()
|
||||
$savedPackages = Find-Package -Source local -AllVersions -AllowPreReleaseVersion
|
||||
if ($modulesToUpdate.Length -gt 0)
|
||||
{
|
||||
# Remove dependent packages downloaded by Save-Package if there are already present in AzArtifacts feed.
|
||||
try {
|
||||
$null = Register-PackageSource -Name local -Location $Destination -ProviderName NuGet -Force
|
||||
$packageNamesToKeep = @()
|
||||
$savedPackages = Find-Package -Source local -AllVersions -AllowPreReleaseVersion
|
||||
|
||||
Write-Verbose -Verbose "Saved packages:"
|
||||
$savedPackages | Out-String | Write-Verbose -Verbose
|
||||
Write-Verbose -Verbose "Saved packages:"
|
||||
$savedPackages | Out-String | Write-Verbose -Verbose
|
||||
|
||||
foreach($package in $savedPackages) {
|
||||
$pkgVersion = NormalizeVersion -version $package.Version
|
||||
$foundMatch = $azArtifactsPackages | Where-Object { $_.Name -eq $package.Name -and (NormalizeVersion -version $_.Version) -eq $pkgVersion }
|
||||
foreach($package in $savedPackages) {
|
||||
$pkgVersion = NormalizeVersion -version $package.Version
|
||||
$foundMatch = $azArtifactsPackages | Where-Object { $_.Name -eq $package.Name -and (NormalizeVersion -version $_.Version) -eq $pkgVersion }
|
||||
|
||||
if(-not $foundMatch) {
|
||||
Write-Verbose "Keeping package $($package.PackageFileName)" -Verbose
|
||||
$packageNamesToKeep += "{0}*.nupkg" -f $package.Name
|
||||
if(-not $foundMatch) {
|
||||
Write-Verbose "Keeping package $($package.PackageFileName)" -Verbose
|
||||
$packageNamesToKeep += "{0}*.nupkg" -f $package.Name
|
||||
}
|
||||
}
|
||||
|
||||
if ($packageNamesToKeep.Length -gt 0) {
|
||||
## Removing only if we do have some packages to keep,
|
||||
## otherwise the '$Destination' folder will be removed.
|
||||
Remove-Item -Path $Destination -Exclude $packageNamesToKeep -Recurse -Force -Verbose
|
||||
}
|
||||
|
||||
Write-Verbose -Verbose "Packages kept for upload"
|
||||
Get-ChildItem $Destination | Out-String | Write-Verbose -Verbose
|
||||
}
|
||||
finally {
|
||||
Unregister-PackageSource -Name local -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
|
||||
Remove-Item -Path $Destination -Exclude $packageNamesToKeep -Recurse -Force -Verbose
|
||||
|
||||
Write-Verbose -Verbose "Packages kept for upload"
|
||||
Get-ChildItem $Destination | Out-String | Write-Verbose -Verbose
|
||||
}
|
||||
finally {
|
||||
Unregister-PackageSource -Name local -Force -ErrorAction SilentlyContinue
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Function CompareVersions {
|
||||
param (
|
||||
[Microsoft.PackageManagement.Packaging.SoftwareIdentity]
|
||||
$ReferencePackage,
|
||||
[Microsoft.PackageManagement.Packaging.SoftwareIdentity]
|
||||
$DifferencePackage,
|
||||
[Parameter(Mandatory = $true, ParameterSetName='lt')]
|
||||
[switch]
|
||||
$lt,
|
||||
[Parameter(Mandatory = $true, ParameterSetName='gt')]
|
||||
[switch]
|
||||
$gt
|
||||
)
|
||||
|
||||
if ($ReferencePackage.Version -eq $DifferencePackage.Version) {
|
||||
return $false
|
||||
}
|
||||
|
||||
$latest = SortPackage -p @($ReferencePackage,$DifferencePackage) | Select-Object -First 1
|
||||
|
||||
if ($gt.IsPresent) {
|
||||
return $ReferencePackage -eq $latest
|
||||
} elseif ($lt.IsPresent) {
|
||||
return $DifferencePackage -eq $latest
|
||||
} else {
|
||||
throw "Unknown parameter set"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Function SortPackage {
|
||||
param(
|
||||
[Parameter(ValueFromPipeline = $true)]
|
||||
|
||||
Reference in new issue
Block a user