Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure devops 如何删除DevOps工件中的所有上游包?_Azure Devops_Nuget_Azure Artifacts - Fatal编程技术网

Azure devops 如何删除DevOps工件中的所有上游包?

Azure devops 如何删除DevOps工件中的所有上游包?,azure-devops,nuget,azure-artifacts,Azure Devops,Nuget,Azure Artifacts,我们不再希望在工件提要中使用上游源,但由于某些原因,即使在删除上游连接之后,包仍然存在。有没有办法删除这些包?我已尝试删除所有软件包上的最新版本,但这就是它的建议:它只删除第一个版本,而保留所有其他软件包版本不变。您可以设置哪个版本也适用于来自上游源的软件包 随着时间的推移,提要中托管的每个包的版本数可能会快速增长。您可以设置保留策略以自动删除旧包并节省存储空间 最大版本数:允许您选择要保留的软件包版本数 保留最近下载的软件包的天数。只有在未按此处设置的天数下载包时,才会删除包 我知道这并不

我们不再希望在工件提要中使用上游源,但由于某些原因,即使在删除上游连接之后,包仍然存在。有没有办法删除这些包?我已尝试删除所有软件包上的最新版本,但这就是它的建议:它只删除第一个版本,而保留所有其他软件包版本不变。

您可以设置哪个版本也适用于来自上游源的软件包

随着时间的推移,提要中托管的每个包的版本数可能会快速增长。您可以设置保留策略以自动删除旧包并节省存储空间

  • 最大版本数:允许您选择要保留的软件包版本数
  • 保留最近下载的软件包的天数。只有在未按此处设置的天数下载包时,才会删除包
我知道这并不理想,因为这也会影响您的软件包。但是,否则,您需要手动将它们全部删除。基本上,它们就像你自己的包裹一样。这就是你的问题所在

启用保留策略时,当满足以下两个条件时,将删除包的版本:

  • 该软件包的已发布版本数达到最大版本数限制,并且
  • 在保存最近下载的软件包的天数内,尚未下载该软件包的版本
您可以设置也适用于上游来源的包的

随着时间的推移,提要中托管的每个包的版本数可能会快速增长。您可以设置保留策略以自动删除旧包并节省存储空间

  • 最大版本数:允许您选择要保留的软件包版本数
  • 保留最近下载的软件包的天数。只有在未按此处设置的天数下载包时,才会删除包
我知道这并不理想,因为这也会影响您的软件包。但是,否则,您需要手动将它们全部删除。基本上,它们就像你自己的包裹一样。这就是你的问题所在

启用保留策略时,当满足以下两个条件时,将删除包的版本:

  • 该软件包的已发布版本数达到最大版本数限制,并且
  • 在保存最近下载的软件包的天数内,尚未下载该软件包的版本
如何删除DevOps工件中的所有上游包

事实上,目前还没有现成的方法来删除DevOps工件中的所有上游包(包括所有版本)

有一个关于它的关闭用户声音:。如果您对此功能感兴趣,可以打开新的用户语音建议;我愿意投你一票

作为解决方法,我们可以循环使用REST API()来删除上游包的所有版本:

DELETE https://pkgs.dev.azure.com/{organization}/{project}/_apis/packaging/feeds/{feedId}/nuget/packages/{packageName}/versions/{packageVersion}?api-version=6.0-preview.1
首先,我们需要通过restapi()和该提要()中的所有包获取NuGet提要的
FeedId

这里的一个重要问题是,我们需要确定这些包中哪些来自上游来源。REST API()有属性
directUpstreamSourceId

现在,我们可以根据该字段是否存在来判断包是否是上游源包

其次,在获得所有上游源包的
Id
之后,我们可以循环使用restapi()来获得包的所有版本

第三,在获得所有版本后,我们可以通过restapi()循环删除该包的所有版本

下面是我的PowerShell脚本,用于测试此功能:

$connectionToken="Your PAT Here"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
    
$PackagesUrl = "https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/packages?api-version=6.0-preview.1" 
    
Write-Host "URL: $PackagesUrl"
    
$PackagesInFeed = (Invoke-RestMethod -Uri $PackagesUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
    
$packagesId = $PackagesInFeed.value.id
    
$UpstreamSourceParameters= $PackagesInFeed.value.versions | Get-Member -MemberType Properties
    
$UpstreamSource = $UpstreamSourceParameters[0].name
    
Write-Host "The Upstream Source Parameter name: $UpstreamSource"
    
ForEach ($PI in $packagesId)
{
    if ($UpstreamSource -ne $null)
    {
          
        $PackageVersionUrl = "https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/packages/$($PI)/versions?api-version=6.0-preview.1"                 
        $PackageVersions = (Invoke-RestMethod -Uri $PackageVersionUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
    
        $PackageNameUrl = "https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/packages/$($PI)?api-version=6.0-preview.1"                 
        $PackageNames = (Invoke-RestMethod -Uri $PackageNameUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
            
        $VersionsId = $PackageVersions.value.version
    
        $packageName = $PackageNames.name
            
        Write-Host "Package Versions: $VersionsId"
    
        Write-Host "Package Name: $packageName"
    
        ForEach ($VI in $VersionsId)
        {
            $DeleteUrl = "https://pkgs.dev.azure.com/{organization}/{project}/_apis/packaging/feeds/{feedId}/nuget/packages/$($packageName)/versions/$($VI)?api-version=6.0-preview.1"                   
            $Member = (Invoke-RestMethod -Uri $DeleteUrl -Method DELETE -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
        }
   
    }
    elseif($targetTask.result -eq "Failed")
    {
        Write-Host ("This is package not from upstream source!")
    }
    
}
注意:如果提要范围是组织,请删除RESTAPI URL中的字段
/{project}

以下是我的测试结果。正如您在上一个屏幕截图中所看到的那样,初始编号是
317
。我中止了脚本以避免删除所有上游包

如何删除DevOps工件中的所有上游包

事实上,目前还没有现成的方法来删除DevOps工件中的所有上游包(包括所有版本)

有一个关于它的关闭用户声音:。如果您对此功能感兴趣,可以打开新的用户语音建议;我愿意投你一票

作为解决方法,我们可以循环使用REST API()来删除上游包的所有版本:

DELETE https://pkgs.dev.azure.com/{organization}/{project}/_apis/packaging/feeds/{feedId}/nuget/packages/{packageName}/versions/{packageVersion}?api-version=6.0-preview.1
首先,我们需要通过restapi()和该提要()中的所有包获取NuGet提要的
FeedId

这里的一个重要问题是,我们需要确定这些包中哪些来自上游来源。REST API()有属性
directUpstreamSourceId

现在,我们可以根据该字段是否存在来判断包是否是上游源包

其次,在获得所有上游源包的
Id
之后,我们可以循环使用restapi()来获得包的所有版本

第三,在获得所有版本后,我们可以通过restapi()循环删除该包的所有版本

下面是我的PowerShell脚本,用于测试此功能:

$connectionToken="Your PAT Here"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
    
$PackagesUrl = "https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/packages?api-version=6.0-preview.1" 
    
Write-Host "URL: $PackagesUrl"
    
$PackagesInFeed = (Invoke-RestMethod -Uri $PackagesUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
    
$packagesId = $PackagesInFeed.value.id
    
$UpstreamSourceParameters= $PackagesInFeed.value.versions | Get-Member -MemberType Properties
    
$UpstreamSource = $UpstreamSourceParameters[0].name
    
Write-Host "The Upstream Source Parameter name: $UpstreamSource"
    
ForEach ($PI in $packagesId)
{
    if ($UpstreamSource -ne $null)
    {
          
        $PackageVersionUrl = "https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/packages/$($PI)/versions?api-version=6.0-preview.1"                 
        $PackageVersions = (Invoke-RestMethod -Uri $PackageVersionUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
    
        $PackageNameUrl = "https://feeds.dev.azure.com/{organization}/{project}/_apis/packaging/Feeds/{feedId}/packages/$($PI)?api-version=6.0-preview.1"                 
        $PackageNames = (Invoke-RestMethod -Uri $PackageNameUrl -Method Get -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
            
        $VersionsId = $PackageVersions.value.version
    
        $packageName = $PackageNames.name
            
        Write-Host "Package Versions: $VersionsId"
    
        Write-Host "Package Name: $packageName"
    
        ForEach ($VI in $VersionsId)
        {
            $DeleteUrl = "https://pkgs.dev.azure.com/{organization}/{project}/_apis/packaging/feeds/{feedId}/nuget/packages/$($packageName)/versions/$($VI)?api-version=6.0-preview.1"                   
            $Member = (Invoke-RestMethod -Uri $DeleteUrl -Method DELETE -UseDefaultCredential -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)})
        }
   
    }
    elseif($targetTask.result -eq "Failed")
    {
        Write-Host ("This is package not from upstream source!")
    }
    
}
注意:如果提要范围是组织,请删除RESTAPI URL中的字段
/{project}

以下是我的测试结果。正如您在上一个屏幕截图中所看到的那样,初始编号是
317
。我中止了脚本以避免删除所有上游包


我很害怕。是否可以只设置其中一个?aka,只保留这么多版本,但保留包