diff --git a/eng/Publishing.props b/eng/Publishing.props index a5b86c8b8da..9b46fc8f629 100644 --- a/eng/Publishing.props +++ b/eng/Publishing.props @@ -34,15 +34,12 @@ - <_ArchiveFiles Include="$(ArtifactsPackagesDir)\**\aspire-cli-*.zip" /> - <_ArchiveFiles Include="$(ArtifactsPackagesDir)\**\aspire-cli-*.tar.gz" /> - - <_ArchiveFiles Include="$(_SignedArchivesDir)\**\aspire-cli-*.zip" /> - <_ArchiveFiles Include="$(_SignedArchivesDir)\**\aspire-cli-*.tar.gz" /> <_ExtensionFilesToPublish Include="$(ArtifactsPackagesDir)**\aspire-vscode-*.vsix" /> <_ExtensionManifestFiles Include="$(ArtifactsPackagesDir)**\aspire-vscode-*.manifest" /> <_ExtensionSignatureFiles Include="$(ArtifactsPackagesDir)**\aspire-vscode-*.signature.p7s" /> + <_CliToolPackagesToPublish Include="$(ArtifactsShippingPackagesDir)**\Aspire.Cli*.nupkg" + Exclude="$(ArtifactsShippingPackagesDir)**\*.symbols.nupkg" /> + <_CliPackProjects Include="$(RepoRoot)eng\clipack\Aspire.Cli.*.csproj" /> + <_ExpectedCliRids Include="@(_CliPackProjects->'%(Filename)'->Replace('Aspire.Cli.', ''))" /> + + + + <_ArchiveFiles Include="$(ArtifactsPackagesDir)\**\aspire-cli-*.zip" /> + <_ArchiveFiles Include="$(ArtifactsPackagesDir)\**\aspire-cli-*.tar.gz" /> + + <_ArchiveFiles Include="$(_SignedArchivesDir)\**\aspire-cli-*.zip" /> + <_ArchiveFiles Include="$(_SignedArchivesDir)\**\aspire-cli-*.tar.gz" /> + <_ArchiveFilesWithRid Include="@(_ArchiveFiles)"> $([System.Text.RegularExpressions.Regex]::Match(%(_ArchiveFiles.FileName), 'aspire-cli-(.*)-\d+.*').Groups[1].Value) - <_CliPackProjects Include="$(RepoRoot)eng\clipack\Aspire.Cli.*.csproj" /> - <_ExpectedRids Include="@(_CliPackProjects->'%(Filename)'->Replace('Aspire.Cli.', ''))" /> + <_MissingArchiveRids Include="@(_ExpectedCliRids)" Exclude="@(_ArchiveFilesWithRid -> '%(ExtractedRid)')" /> + <_UnexpectedArchiveRids Include="@(_ArchiveFilesWithRid -> '%(ExtractedRid)')" Exclude="@(_ExpectedCliRids)" /> + + + + <_CliRidSpecificToolPackageFiles Include="@(_CliToolPackagesToPublish)" + Condition="!$([System.Text.RegularExpressions.Regex]::IsMatch('%(_CliToolPackagesToPublish.FileName)', '^Aspire\.Cli\.\d'))" /> - <_MissingRids Include="@(_ExpectedRids)" Exclude="@(_ArchiveFilesWithRid -> '%(ExtractedRid)')" /> - <_UnexpectedRids Include="@(_ArchiveFilesWithRid -> '%(ExtractedRid)')" Exclude="@(_ExpectedRids)" /> + + <_CliRidSpecificToolPackageFilesWithRid Include="@(_CliRidSpecificToolPackageFiles)"> + + $([System.Text.RegularExpressions.Regex]::Match('%(_CliRidSpecificToolPackageFiles.FileName)', '^Aspire\.Cli\.(.*?)\.\d+.*').Groups[1].Value) + + + <_MissingCliPackageRids Include="@(_ExpectedCliRids)" Exclude="@(_CliRidSpecificToolPackageFilesWithRid -> '%(ExtractedRid)')" /> + <_UnexpectedCliPackageRids Include="@(_CliRidSpecificToolPackageFilesWithRid -> '%(ExtractedRid)')" Exclude="@(_ExpectedCliRids)" /> + <_CliPointerToolPackages Include="@(_CliToolPackagesToPublish)" Exclude="@(_CliRidSpecificToolPackageFilesWithRid)" /> - - + + + + + @@ -108,7 +132,7 @@ - + <_ExtensionFilesToPublish Remove="@(_ExtensionFilesToPublish)" /> @@ -149,6 +173,10 @@ true $(_UploadPathRoot)/$(_PackageVersion)/%(Filename)%(Extension) + + true + Package + false true @@ -168,5 +196,23 @@ $(_UploadPathRoot)/$(_PackageVersion)/%(Filename)%(Extension) + + + + + + <_PackageItemsToPush Include="@(ItemsToPushToBlobFeed)" Condition="'%(ItemsToPushToBlobFeed.Kind)' == 'Package'" /> + <_ShippingPackageItemsToPush Include="@(_PackageItemsToPush)" Condition="'%(_PackageItemsToPush.IsShipping)' == 'true'" /> + <_FlatBlobItemsToPush Include="@(ItemsToPushToBlobFeed)" Condition="'%(ItemsToPushToBlobFeed.Kind)' != 'Package' And '%(ItemsToPushToBlobFeed.PublishFlatContainer)' == 'true'" /> + <_ShippingFlatBlobItemsToPush Include="@(_FlatBlobItemsToPush)" Condition="'%(_FlatBlobItemsToPush.IsShipping)' == 'true'" /> + <_NonShippingFlatBlobItemsToPush Include="@(_FlatBlobItemsToPush)" Condition="'%(_FlatBlobItemsToPush.IsShipping)' != 'true'" /> + + + + + + + diff --git a/eng/pipelines/azure-pipelines-unofficial.yml b/eng/pipelines/azure-pipelines-unofficial.yml index dcd0c7ce260..910bd23d3bf 100644 --- a/eng/pipelines/azure-pipelines-unofficial.yml +++ b/eng/pipelines/azure-pipelines-unofficial.yml @@ -172,6 +172,36 @@ extends: # validation (Homebrew cask audit, WinGet manifest) against published URLs. targetPath: '$(Build.SourcesDirectory)/artifacts/signed-archives/$(_BuildConfig)' + - task: DownloadPipelineArtifact@2 + displayName: 🟣Download Native CLI Tool Packages + inputs: + itemPattern: | + **/Aspire.Cli*.nupkg + targetPath: '$(Build.SourcesDirectory)/artifacts/native-cli-packages/$(_BuildConfig)' + + - pwsh: | + $ErrorActionPreference = 'Stop' + $downloadRoot = "$(Build.SourcesDirectory)/artifacts/native-cli-packages/$(_BuildConfig)" + $shippingDir = "$(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/Shipping" + New-Item -ItemType Directory -Path $shippingDir -Force | Out-Null + + $packages = @(Get-ChildItem -Path $downloadRoot -Filter "Aspire.Cli*.nupkg" -File -Recurse | + Where-Object { $_.Name -notmatch '\.symbols\.' } | + Sort-Object FullName) + if ($packages.Count -eq 0) { + throw "No native CLI tool packages were downloaded to $downloadRoot." + } + + foreach ($packageGroup in $packages | Group-Object Name) { + $package = $packageGroup.Group[0] + if ($packageGroup.Count -gt 1) { + Write-Host "Using $($package.FullName) for duplicate package name $($packageGroup.Name)." + } + + Copy-Item -LiteralPath $package.FullName -Destination (Join-Path $shippingDir $package.Name) -Force + } + displayName: 🟣Stage Native CLI Tool Packages + - task: PowerShell@2 displayName: 🟣List artifacts packages contents inputs: diff --git a/eng/pipelines/azure-pipelines.yml b/eng/pipelines/azure-pipelines.yml index 543441fd527..ad0824a1d13 100644 --- a/eng/pipelines/azure-pipelines.yml +++ b/eng/pipelines/azure-pipelines.yml @@ -260,6 +260,36 @@ extends: # validation (Homebrew cask audit, WinGet manifest) against published URLs. targetPath: '$(Build.SourcesDirectory)/artifacts/signed-archives/$(_BuildConfig)' + - task: DownloadPipelineArtifact@2 + displayName: 🟣Download Native CLI Tool Packages + inputs: + itemPattern: | + **/Aspire.Cli*.nupkg + targetPath: '$(Build.SourcesDirectory)/artifacts/native-cli-packages/$(_BuildConfig)' + + - pwsh: | + $ErrorActionPreference = 'Stop' + $downloadRoot = "$(Build.SourcesDirectory)/artifacts/native-cli-packages/$(_BuildConfig)" + $shippingDir = "$(Build.SourcesDirectory)/artifacts/packages/$(_BuildConfig)/Shipping" + New-Item -ItemType Directory -Path $shippingDir -Force | Out-Null + + $packages = @(Get-ChildItem -Path $downloadRoot -Filter "Aspire.Cli*.nupkg" -File -Recurse | + Where-Object { $_.Name -notmatch '\.symbols\.' } | + Sort-Object FullName) + if ($packages.Count -eq 0) { + throw "No native CLI tool packages were downloaded to $downloadRoot." + } + + foreach ($packageGroup in $packages | Group-Object Name) { + $package = $packageGroup.Group[0] + if ($packageGroup.Count -gt 1) { + Write-Host "Using $($package.FullName) for duplicate package name $($packageGroup.Name)." + } + + Copy-Item -LiteralPath $package.FullName -Destination (Join-Path $shippingDir $package.Name) -Force + } + displayName: 🟣Stage Native CLI Tool Packages + - task: PowerShell@2 displayName: 🟣List artifacts packages contents inputs: