vsts-npm-auth无法在VSTS内部版本上获取身份验证令牌

nkhmeac6  于 2023-01-31  发布在  其他
关注(0)|答案(5)|浏览(160)

我尝试使用vsts-npm-auth来获取VSTS包存储库的身份验证令牌。
npm install -g vsts-npm-auth vsts-npm-auth -config path-to-my\.npmrc
它成功地为我提供了一个身份验证令牌。我现在尝试在VSTS上重新创建这个步骤,因此我创建了powershell脚本auth-vsts.ps1

$npmrcFile = "$PSScriptRoot\path-to-my\.npmrc";
npm install -g vsts-npm-auth;
vsts-npm-auth -config $npmrcFile;

并将其添加为powershell任务。但是,该任务失败,如下所示

2017-05-30T09:37:41.1082686Z ##[section]Starting: auth-vsts
2017-05-30T09:37:41.1092712Z ==============================================================================
2017-05-30T09:37:41.1092712Z Task         : PowerShell
2017-05-30T09:37:41.1092712Z Description  : Run a PowerShell script
2017-05-30T09:37:41.1092712Z Version      : 1.2.3
2017-05-30T09:37:41.1092712Z Author       : Microsoft Corporation
2017-05-30T09:37:41.1092712Z Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=613736)
2017-05-30T09:37:41.1092712Z ==============================================================================
2017-05-30T09:37:41.1112679Z ##[command]. 'd:\a\1\s\auth-vsts.ps1' 
2017-05-30T09:37:47.3792461Z C:\NPM\Modules\vsts-npm-auth -> C:\NPM\Modules\node_modules\vsts-npm-auth\bin\vsts-npm-auth.exe
2017-05-30T09:37:47.3792461Z C:\NPM\Modules
2017-05-30T09:37:47.3802239Z `-- vsts-npm-auth@0.25.0 
2017-05-30T09:37:47.3802239Z 
2017-05-30T09:37:47.3802239Z 
2017-05-30T09:37:47.3802239Z vsts-npm-auth v0.25.0.0 
2017-05-30T09:37:47.3802239Z -----------------------
2017-05-30T09:37:47.3802239Z Creating npmrcFile. Path: D:\a\1\s\.npmrc
2017-05-30T09:37:47.3802239Z Getting new credentials for source:https://our-domain/_packaging/SharedLib/npm/registry/, scope:vso.packaging_write vso.drop_write
2017-05-30T09:37:49.8729702Z Caught exception: The prompt option is invalid because the process is not interactive.
2017-05-30T09:37:49.8729702Z Parameter name: PromptType
2017-05-30T09:37:49.8729702Z Caught exception: The prompt option is invalid because the process is not interactive.
2017-05-30T09:37:49.8729702Z Parameter name: PromptType
2017-05-30T09:37:49.8729702Z Couldn't get an authentication token for //our-domain/_packaging/SharedLib/npm/registry/:_authToken.
2017-05-30T09:37:50.1769711Z ##[error]Process completed with exit code 1.
2017-05-30T09:37:50.1809715Z ##[section]Finishing: auth-vsts

这个错误没有说明为什么它不能获得凭证。你知道这是为什么吗?

eit6fx6z

eit6fx6z1#

我在尝试通过Visual Studio Code的powershell终端执行时遇到了这个问题

vsts-npm-auth -config .npmrc

但是通过 * 简单控制台运行相同的命令解决了这个问题 *,我被重定向到身份验证窗口。
可以建议,由于内部限制powershell禁用打开另一个窗口。

xmd2e60i

xmd2e60i2#

错误指出了无法获取凭据的原因:

The prompt option is invalid because the process is not interactive.

这可能是由于生成代理未在交互模式下运行,从而导致无法提示凭据对话框。如果使用的是托管生成代理,则生成代理将作为服务运行,无法更改为交互模式。
但是,这里的问题是,如果您希望在构建步骤中使用提要,则在构建过程中提示凭据对话框是没有意义的,因为构建步骤无法自动输入所需的凭据。但一般工作流应该是将本地计算机中生成的.npmrc文件上载到源代码管理,以便npm可以使用该文件中的auth标记安装/将包发布到VSTS源。

yi0zb3m4

yi0zb3m43#

vsts认证系统有时会弹出一个浏览器窗口来认证用户,如果你运行命令的终端不是交互式的(例如ssh终端,vscode终端),它就不能弹出那个窗口,认证就会失败。

5w9g7ksd

5w9g7ksd4#

这对我很有效
npx vsts-npm-身份验证-配置npmrc

cuxqih21

cuxqih215#

在项目中,可以打开终端并运行

vsts-npm-auth -F -C .npmrc

这个脚本刷新npm令牌,在这里我设置了两个参数:-F强制刷新(如果未设置,则仅当令牌已过期时才刷新令牌),而**-C**fileName定义配置文件。

相关问题