TeamCity 和 NPM 通过 OAuth 令牌登录
TeamCity and NPM login via OAuth token
我正在尝试将 TeamCity Server (Windows) 与我的私有 NPM 存储库集成。我已经创建了一个 OAuth 令牌。
但是我找不到任何关于如何单独或通过 TeamCity 使用 NPM 登录令牌的示例?
已解决!
在 PowerShell 中(运行 作为管理员)运行 这个:
npm 登录 --registry=https://registry.npmjs.org/
--scope=@your_npm_handle
(注意。将上面命令中的 your_npm_handle 替换为您的私有 NPM 句柄!)
- 出现提示时输入您的用户名、密码和 NPM e-mail
您现在应该会看到成功登录 NPM
现在运行:
npm 配置设置 always-auth 真
如果你现在运行:
npm 配置编辑
您应该在文件 .npmrc 中看到类似这样的内容/3 行代码
@your_npm_handle=https://registry.npmjs.org/
//registry.npmjs.org/:_authToken=xxxx-xxxx-xxxx-xxxx
always-auth=true
请记住:要对您的 AUTH 令牌 ID 使用占位符,并将实际的 AUTH 令牌放在 .env 文件中,并且仅引用。在 .npmrc 文件中)。将此:authToken=xxxx-xxxx-xxxx-xxxx 替换为:authToken=${NPM_TOKEN} 并在您的 .env 文件中添加:NPM_TOKEN=xxxx-xxxx-xxxx-xxxx
将此 .npmrc 文件添加到项目的根目录中。
提交并发布 .npmrc 文件到源代码管理(不是 .env 文件!)
TeamCity 现在将下载 .npmrc 文件以及您的源代码的其余部分,并且 运行 成功,因为它将使用 NPM 配置文件,从而能够访问您的私有文件NPM 回购并下载所有你私有的@packages。
记得激活 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
)
我正在尝试将 TeamCity Server (Windows) 与我的私有 NPM 存储库集成。我已经创建了一个 OAuth 令牌。 但是我找不到任何关于如何单独或通过 TeamCity 使用 NPM 登录令牌的示例?
已解决!
在 PowerShell 中(运行 作为管理员)运行 这个:
npm 登录 --registry=https://registry.npmjs.org/ --scope=@your_npm_handle
(注意。将上面命令中的 your_npm_handle 替换为您的私有 NPM 句柄!)
- 出现提示时输入您的用户名、密码和 NPM e-mail
您现在应该会看到成功登录 NPM
现在运行:
npm 配置设置 always-auth 真
如果你现在运行:
npm 配置编辑
您应该在文件 .npmrc 中看到类似这样的内容/3 行代码
@your_npm_handle=https://registry.npmjs.org/
//registry.npmjs.org/:_authToken=xxxx-xxxx-xxxx-xxxx
always-auth=true
请记住:要对您的 AUTH 令牌 ID 使用占位符,并将实际的 AUTH 令牌放在 .env 文件中,并且仅引用。在 .npmrc 文件中)。将此:authToken=xxxx-xxxx-xxxx-xxxx 替换为:authToken=${NPM_TOKEN} 并在您的 .env 文件中添加:NPM_TOKEN=xxxx-xxxx-xxxx-xxxx
将此 .npmrc 文件添加到项目的根目录中。
提交并发布 .npmrc 文件到源代码管理(不是 .env 文件!)
TeamCity 现在将下载 .npmrc 文件以及您的源代码的其余部分,并且 运行 成功,因为它将使用 NPM 配置文件,从而能够访问您的私有文件NPM 回购并下载所有你私有的@packages。
记得激活 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
)