TeamCity 和 NPM 通过 OAuth 令牌登录

TeamCity and NPM login via OAuth token

我正在尝试将 TeamCity Server (Windows) 与我的私有 NPM 存储库集成。我已经创建了一个 OAuth 令牌。 但是我找不到任何关于如何单独或通过 TeamCity 使用 NPM 登录令牌的示例?

已解决!

  1. 在 PowerShell 中(运行 作为管理员)运行 这个:

    npm 登录 --registry=https://registry.npmjs.org/ --scope=@your_npm_handle

(注意。将上面命令中的 your_npm_handle 替换为您的私有 NPM 句柄!)

  1. 出现提示时输入您的用户名、密码和 NPM e-mail

您现在应该会看到成功登录 NPM

  1. 现在运行:

    npm 配置设置 always-auth 真

  2. 如果你现在运行:

    npm 配置编辑

您应该在文件 .npmrc 中看到类似这样的内容/3 行代码

@your_npm_handle=https://registry.npmjs.org/
//registry.npmjs.org/:_authToken=xxxx-xxxx-xxxx-xxxx
always-auth=true
  1. 请记住:要对您的 AUTH 令牌 ID 使用占位符,并将实际的 AUTH 令牌放在 .env 文件中,并且仅引用。在 .npmrc 文件中)。将此:authToken=xxxx-xxxx-xxxx-xxxx 替换为:authToken=${NPM_TOKEN} 并在您的 .env 文件中添加:NPM_TOKEN=xxxx-xxxx-xxxx-xxxx

  2. 将此 .npmrc 文件添加到项目的根目录中。

  3. 提交并发布 .npmrc 文件到源代码管理(不是 .env 文件!)

  4. TeamCity 现在将下载 .npmrc 文件以及您的源代码的其余部分,并且 运行 成功,因为它将使用 NPM 配置文件,从而能够访问您的私有文件NPM 回购并下载所有你私有的@packages。

  5. 记得激活 F2A 到您的 NPM 帐户 + 到您的 NPM AUTH 令牌。

请注意,此解决方案仅适用于多台机器,只要 none 台机器不会使该单个 AUTH 令牌无效即可。在这种情况下,为每台机器使用单独的 AUTH 令牌设置,或者每次都使用 NPM LOGIN。

我在处理类似的事情时偶然发现了这个,我想分享一下,因为接受的答案非常不安全:

a) 你不应该将你的 token/keys 推入版本控制。时期。这是一个安全漏洞。

b) 您无需通过 npm login 登录即可取回您的密钥。您应该登录 npmjs.com,在那里您会看到名为“访问令牌”的部分。在那里,您可以创建用于这种情况的标记,并将它们也标记为 read-only。 (或者您也可以使用命令行创建令牌)

c) Teamcity 提供“参数”。您可以在那里设置一个秘密以在构建期间使用。您可以在根目录或项目级别执行此操作。创建一个“环境”参数并将其标记为 read-only 和密码以确保安全。

d) 例如,如果你有一个 docker 构建,将其作为 --build-arg NPM_TOKEN=%env.yourTokenName% 作为附加参数传递,然后 ${NPM_TOKEN} 可以在你的 .npmrc 文件中使用,如果你在您的 Dockerfile 中正确设置它 (ARG NPM_TOKEN)