Node.js 通过shell/pyhthon/powershell脚本将AzureDevops提要视图中的npm包从@local升级到@pre-release升级到@release?

Node.js 通过shell/pyhthon/powershell脚本将AzureDevops提要视图中的npm包从@local升级到@pre-release升级到@release?,node.js,bash,powershell,azure-devops,azure-artifacts,Node.js,Bash,Powershell,Azure Devops,Azure Artifacts,如何通过shell/python/PowerShell脚本在Azure DevOps提要视图中从@local到@pre-release到@release升级npm包?您可以尝试编写一个脚本,但有两个扩展已经做到了这一点: (一) (二) 如何在Azure DevOps源视图中将npm包从@local升级到 @通过shell/python/PowerShell脚本预发布到@release 正如Shayki Abramczyk在上文中所说的那样,已经有了做这项工作的扩展。但如果您确实想要一个可用的P

如何通过shell/python/PowerShell脚本在Azure DevOps提要视图中从
@local
@pre-release
@release
升级npm包?

您可以尝试编写一个脚本,但有两个扩展已经做到了这一点:

(一)

(二)

如何在Azure DevOps源视图中将npm包从@local升级到 @通过shell/python/PowerShell脚本预发布到@release

正如Shayki Abramczyk在上文中所说的那样,已经有了做这项工作的扩展。但如果您确实想要一个可用的PS脚本,我的脚本如下:

$token = "Enter your Pat here"

$url = "https://pkgs.dev.azure.com/OrgName/ProjectName/_apis/packaging/feeds/FeedID/npm/packagesbatch?api-version=5.1-preview.1"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))

$JSON = @'
{
  "data": {
    "viewId": "Release"
  },
  "operation": 0,
  "packages": [{
    "id": "YourPackageName",
    "version": "PackageVersion",
    "protocolType": "Npm"
  }]
}
'@

$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -ContentType application/json -body $JSON
注意:

$token
中输入您自己的PAT,并用您自己的PAT替换
OrgName、ProjectName、FeedID、YourPackageName、PackageVersion
,您可以在viewID中设置
预发布/发布
,以将Azure DevOps提要视图中的npm包从
@local
升级到
@pre Release

如果您需要任何进一步的帮助,请告诉我:)

更新1:

如果要使用bash在linux环境中运行它,请尝试使用以下脚本:

curl --header 'Content-Type: application/json' -X Post --user PAT:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx\
https://pkgs.dev.azure.com/YourOrgName/YourProjectName/_apis/packaging/feeds/YourFeedName/npm/packagesbatch?api-version=5.1-preview.1 \
--data '{ "data": {"viewId":"Release"},"operation": 0,"packages": [{"id": "YourPackageName","version": "YourPackageVersion","protocolType": "Npm"}]}'

要生成PAT:

谢谢您的帮助,我只想知道一件事,我们可以用SHELL脚本也这样做吗?嗯,我想我们可以在SHELL脚本中这样做,因为我知道bash可以直接调用curl命令。但是shell脚本中的语法与powershell中的不同,因此可能需要一些时间来处理。当我成功的时候我会回来…@ParminderSingh你可以在我的更新中尝试脚本1,别忘了用你自己的pat、orgName、projectName、packageName、PackageVersion替换那些未定义的脚本。。。当我使用bash task+ubantu代理来测试它时,它在我这边工作。如果我的回答有助于解决你的问题,请考虑。看到它只是一个提醒:-(这些插件将适用于多个软件包以及多个版本)嗨,朋友,这个问题有任何更新吗?如果这个问题仍然阻止你,请随时告诉我:)@Lance Li MSFT谢谢你的提问实际上,我已经尝试了升级软件包任务,但在我的场景中它不会起作用。因为,我需要在参数中传递具有多个版本的多个包。另外,我们不能用脚本来做这件事,因为我们不想在脚本中传递令牌或凭据,它应该自动带来令牌或凭据。所以我正在研究定制的升级任务,它应该以多个包和多个版本作为参数