【问题标题】:Retrieve a Github Registry npm package from a Github Action从 Github Action 中检索 Github Registry npm 包
【发布时间】:2019-10-29 13:44:15
【问题描述】:

我已成功将 @myorganization/my-super-lib 部署为 GH npm 包。现在我想在另一个 GH 项目中使用它。

这是一个私有库,也是一个私有项目(重要的是要记住,因为这一点与公共库没有实际意义)。

在本地,没问题,只需在我的 npm 配置中使用我的个人令牌添加正确的 authtoken 配置即可。

现在,当使用 Github Actions 时,我不确定令牌访问库包的优雅解决方案是什么。文档说要使用个人文档,但是如果我离开组织怎么办?我也可以为此使用专门的技术帐户,但这似乎不是“正确”的解决方案。

有人有更好的主意吗?

在cmets之后编辑:一开始我以为我可以简单地使用GITHUB_TOKEN,但是它被限制为只能访问当前存储库,从安全角度考虑这是合乎逻辑的。

【问题讨论】:

标签: npm yarnpkg github-actions github-package-registry


【解决方案1】:

currently 没有比使用个人访问令牌更好的选择,即:

  • 从具有读取权限的帐户创建个人 read:packages 访问令牌
  • 将该令牌作为“秘密”插入到存储库(您在其中执行 Github 操作)
  • 通过 Github Actions Workflow 中的 Secrets 访问令牌,以验证并安装存储在 Github Registry 中的依赖项

【讨论】:

  • 我添加了作者自己找到的答案(参见 cmets),以便更快地找到。祈祷很快就会有更好的选择:-)
【解决方案2】:

要使用 Github 操作来安装 私人 github 包,您还需要在

  • actions/setup-node@v1:定义包注册表的范围
  • npm install:使用 personal access tokenread, repo 访问权限。此令牌应由有权访问您使用的私有 github 包的任何 github 帐户创建,并存储为使用该操作的 repo 的秘密。

注意:--ignore-scripts 是一个可选标志,可针对可能窃取您的个人访问令牌的恶意脚本添加额外保护

示例:

    steps:
      - uses: actions/checkout@v2

      - uses: actions/setup-node@v1
        with:
          node-version: '12.x'
          registry-url: 'https://npm.pkg.github.com'
          scope: '@antecha'

      - run: npm install --ignore-scripts
        env:
          NODE_AUTH_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}

更新:
示例回购:https://github.com/antecha/survey

  • 我提到的个人访问令牌可以由有权访问私有注册表的 ANY 帐户创建。对于组织来说,最好是在 github 上创建一个 admin-profile/account,仅用于管理此类令牌或/和组织对 3rd 方应用程序的 github 身份验证。

【讨论】:

  • 你是在描述我目前的情况,而不是回答问题:)
  • 顺便说一句,问题标题有点误导。当我正在寻找一种方法来做标题所说的事情时,我发现了这个问题:Retrieve a Github Registry npm package from a Github Action 并且由于这里的现有解决方案不起作用,我发布了我的。我会留下我的答案,因为无论他们是否愿意使用个人令牌,它都可能对来到这里的人有所帮助
  • 嗯,这是一个有效的观点,消除了我的反对意见。对于你的问题,你也可以看看这个stackoverflow.com/questions/58522363/… 由于我们的构建有很多链式的纱线动作,我使用模板.nprmc,一个用秘密替换占位符的动作,然后不必填写环境变量每一步。
【解决方案3】:

我个人使用该脚本 (.github/workflows/my-super-workflow-file.yml)

name: CI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v1
      - name: Setup node
        uses: actions/setup-node@v1
        with:
          node-version: '10.x'
          registry-url: 'https://npm.pkg.github.com'
      - run: npm install --ignore-scripts
        env:
          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - run: npm test

【讨论】:

  • 由于某种原因,当我尝试从 GitHub 包注册表安装私有包时,这会产生 404 错误。
  • 是的,您的 GITHUB_TOKEN 仅具有对当前存储库的访问权限。我会用这个更新我的问题。
  • 根据我与 GitHub 产品经理的 Twitter 帖子 (twitter.com/char_fish/status/1191442780729556993?s=21),他们知道这里应该有更好的选择。但是现在您必须使用标准注册表项并按照该文档中概述的步骤创建一个密钥并将其添加到存储库机密存储中。该 Twitter 线程与此答案相结合应该有助于使其正常工作。希望我能尽快进行测试。
  • 谢谢,那我就按照秘钥教程来吧。
  • 无法正常工作。我创建了一个包:读取秘密令牌,将其添加到秘密中,但随后npm ci 无法访问我什至不拥有的包:npm ERR! 401 Unauthorized - GET https://npm.pkg.github.com/onekiloparsec/babel-helper-vue-jsx-merge-props - could not retrieve user by token
猜你喜欢
  • 2023-02-15
  • 2020-01-02
  • 2022-10-14
  • 2022-06-17
  • 2020-07-26
  • 2021-04-25
  • 2021-11-02
  • 2021-09-02
  • 2021-01-01
相关资源
最近更新 更多