NodeJS 无法在使用GNUB_TOKEN或PAT的私有GH注册中心中发布范围内的NPM包

jw5wzhpr  于 12个月前  发布在  Node.js
关注(0)|答案(1)|浏览(89)

bounty将在3天内过期。回答此问题可获得+100声望奖励。Onkeltem正在寻找来自信誉良好的来源的**答案 *。

我在一个私有GitHub存储库中,我需要在npm.pkg.github.com中发布我的范围包。
我没有创建一个组织(因为为什么?),所以它只是一个私有的仓库,代表一个有作用域的monorepo。
首先,我尝试将secrets.GITHUB_TOKEN沿着与actions/setup-node@v3一起使用,但没有成功:

npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://npm.pkg.github.com/@myscope%2fmypackage - Permission permission_denied: The requested installation does not exist.
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy, or
npm ERR! 403 on a server you do not have access to.

字符串
第二,我尝试使用PAT,但现在我得到这个错误:

npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://npm.pkg.github.com/@myscope%2fmypackage - Permission permission_denied: create_package
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy, or
npm ERR! 403 on a server you do not have access to.


你知道这里出了什么问题吗?

ny6fqffe

ny6fqffe1#

如果您可以共享您放入yaml文件中的代码(GHA本身),那么就有可能为您提供给予更好的帮助。
于是我在个人账户和单位账户都做了这样的事情,发现了以下规律:

  • 软件包作用域必须是用户/组织名称. like @mycompany/package-name
  • 当你设置节点时,值得使用那里的范围,比如scope: '@mycompany'
  • secrets.GITHUB_TOKEN应该足以在具有某些附加权限的情况下执行此操作

了解我们的内部注册表验证器GHA:

name: Publish packages

on:
    workflow_dispatch:
    release:
        types: [created]

jobs:
    publish-github-registry:
        runs-on: ubuntu-latest
        permissions:
          contents: read
          packages: write
        steps:
            - uses: actions/checkout@v3
            - uses: actions/setup-node@v3
              with:
                node-version: 18
                registry-url: 'https://npm.pkg.github.com'
                scope: '@company'
            - run: yarn install
              working-directory: packages/package-path
            - run: yarn build
              working-directory: packages/package-name
            - run: yarn publish packages/package-name --access restricted
              env:
                NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

字符串
请注意,这是一个初始脚本,这就是为什么我添加了working-directory。它在正确的nx或turbo monorepos中没有意义(甚至是反模式)。给定的包将只能私人访问,这是另一回事-您需要设置.npmrc才能使用它(或推送到公共注册表ofc)。

相关问题