从Github操作检索Github注册表npm包

从Github操作检索Github注册表npm包,npm,yarnpkg,github-actions,github-package-registry,Npm,Yarnpkg,Github Actions,Github Package Registry,我已经成功地将@myorganization/my super lib部署为GH npm包。现在我想在另一个GH项目中使用它 这是一个私有库,也是一个私有项目(记住这一点很重要,因为这一点与公共项目没有关系) 在本地,没有问题,只需在我的npm配置中添加正确的authtoken配置和我的个人令牌 现在,当使用Github操作时,我不确定令牌访问库包的优雅解决方案是什么。文档上说使用个人的,但是如果我离开组织怎么办?我也可以为此使用专门的技术帐户,但这似乎不是“正确”的解决方案 有谁有更好的主意吗

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

这是一个私有库,也是一个私有项目(记住这一点很重要,因为这一点与公共项目没有关系)

在本地,没有问题,只需在我的npm配置中添加正确的authtoken配置和我的个人令牌

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

有谁有更好的主意吗


评论后编辑:起初我认为我可以简单地使用GITHUB_令牌,但它仅限于访问当前存储库,考虑到这一点,从安全角度来看这是合乎逻辑的。

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

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

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

要使用Github操作安装私有Github软件包,您还需要

  • 操作/设置-node@v1
    :定义包注册表的范围
  • npm安装
    :与
    read,repo
    access一起使用。此令牌应由任何可以访问您使用的私有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 }}

更新:
回购示例:

  • 我提到的个人访问令牌可以由任何有权访问私有注册表的帐户创建。对于orgs来说,最好是在github上创建一个管理员配置文件/帐户,其唯一目的是管理此类令牌或/和orgs对第三方应用程序的github身份验证
由于某些原因,在尝试从GitHub软件包注册表安装私有软件包时,这会为我产生404错误。是的,您的GitHub_令牌仅具有对当前存储库的访问权限。我将用这个更新我的问题。根据我与GitHub产品经理的Twitter线程(),他们知道这里应该有一个更好的选择。但现在,您必须使用标准注册表项,并按照文档中概述的步骤创建一个项并将其添加到repo机密存储中。Twitter线程与这个答案相结合应该有助于实现这一目标。我希望很快就能开始测试它。谢谢,到时候我会按照秘钥教程来做。无法让它工作。我创建了一个包:读取秘密令牌,将其添加到机密中,但是
npm ci
访问我甚至不拥有的包时失败:
npm ERR!401未经授权-获取https://npm.pkg.github.com/onekiloparsec/babel-helper-vue-jsx-merge-props -无法通过令牌检索用户
我添加了作者自己找到的答案(请参见注释),以便更快地查找。祈祷不久会有更好的选择:-)投票来缓解标签混淆。你描述的是我的现状,而不是回答问题:)顺便说一句,问题的标题有点误导。我在寻找实现标题所述的方法时发现了这个问题:
从Github操作中检索Github注册表npm包
,由于此处的现有解决方案不起作用,我发布了我的解决方案。我会留下我的答案,因为它可能会帮助来到这里的人们,不管他们是否想使用个人代币。好吧,这是一个有效的观点,删除我的反对票。对于你的问题,你也可以看看这个,因为我们的构建有很多链式动作,我使用一个模板.nprmc,一个用秘密替换占位符的动作,然后不必为每个步骤填充环境变量。
    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 }}