是否可以将工件从一个组织迁移到另一个组织?

问题描述 投票:0回答:1

我有点不知道是否可能,我的前辈目前的任务是从一个 azure devops 组织迁移项目范围的提要。 我通过 REST API 尝试过,但得到的只是空的 .nupkg 包文件。

有没有可能的方法来解决这个问题,也许是本机解决方案?

azure azure-devops nuget migration azure-artifacts
1个回答
0
投票

我可以使用 NuGet - 获取包版本NuGet - 下载包 REST API 成功将 .nupkg 包文件下载到文件夹(这里是

C:\Users\Administrator\Desktop\1\package
)。

这是我的样本:

$PAT=""
$orgname=""
$projectname=""
$feedname=""
$PATGetBytes = [System.Text.Encoding]::ASCII.GetBytes(":$PAT")
$Authentication = [System.Convert]::ToBase64String($PATGetBytes)
$Headers = @{Authorization = ("Basic {0}" -f $Authentication) }
$Uri = "https://feeds.dev.azure.com/"+$orgname+"/"+$projectname+"/_apis/packaging/Feeds/"+$feedname+"/packages?api-version=7.0"
$response = Invoke-RestMethod -Uri $Uri -Method 'GET' -Headers $headers -ContentType 'application/json-patch+json'
$response | ConvertTo-Json
$packagenames=$response.value.name
$packageversions=$response.value.versions.version

for ( $index = 0; $index -lt $packagenames.count; $index++)
{
        $packagename=$packagenames[$index]
        $packageversion=$packageversions[$index]
        echo $packagename $packageversion
        $filename = "C:\Users\Administrator\Desktop\1\package\"
        $filename=$filename+$packagename+"."+$packageversion+".nupkg"
        $Uri2= "https://pkgs.dev.azure.com/"+$orgname+"/"+$projectname+"/_apis/packaging/feeds/"+$feedname+"/nuget/packages/"+$packagename+"/versions/"+$packageversion+"/content?api-version=7.0-preview"
        Invoke-RestMethod -Uri $Uri2 -Method 'GET' -Headers $headers -ContentType "application/zip" -OutFile $filename
}

然后我可以使用 nuget push 命令将它们推送到新的 feed。 如果在管道中运行 powershell,则可以将 NuGet 推送任务与目标源位置的服务连接结合使用。 (我用

$filename = "$(Build.ArtifactStagingDirectory)\"
替换管道中powershell脚本中的那个)

© www.soinside.com 2019 - 2024. All rights reserved.