我正在创建一个 GitHub Actions 工作流来构建 npm 包并将其发布到 GitHub 包。repo 是一个带有多个包的 monorepo,所以我使用了 semantic-release-monorepo 工具。但是,发布步骤失败了,我不知道为什么。
我的 GitHub Actions 工作流文件如下(略删)
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
env:
GH_TOKEN: ${{ secrets.MY_PAT }}
steps:
- name: Checkout repo
uses: actions/checkout@v2
run: |
yarn install
yarn build
- name: Setup node for publishing to Github packages
uses: actions/setup-node@v2
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
node-version: "12.x"
registry-url: "https://npm.pkg.github.com"
- name: Yarn publish packages
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
yarn publish-packages
yarn publish-packages
运行一个脚本,该脚本执行 lerna 命令以进行语义释放
lerna exec --concurrency 1 -- npx --no-install semantic-release -e semantic-release-monorepo
我已确保每个包的 repo package.json 和 package.json 都具有正确的存储库 url https://github.com/owner/repo.git
,. 我的个人访问令牌有权回购、写入和删除包。
无论我更改什么配置,该步骤都会失败并显示以下消息:
命令“git push --dry-run --no-verify https://[secure]@github.com/xxx/xxx.git HEAD:develop”失败并显示错误消息远程:找不到存储库。26 致命:未找到存储库“https://github.com/xxx/xxx.git/”。
第二条消息是
EGITNOPERMISSION: '语义发布无法将版本标签推送到
develop
带有 URL 的远程 Git 存储库上 的分支https://[secure]@github.com/xxx/xxx.git
我尝试过的其他事情:
- 在阅读GH 文档“GitHub Packages only support scoped npm packages”后,将 scope="@xxx" 添加到 setup-node 步骤
- 根据语义发布文档,我尝试将 GH_TOKEN、GITHUB_TOKEN 和 NPM_TOKEN 设置为我的 PAT 或秘密中的 GITHUB_TOKEN 的每个组合。我相信文档说只支持 PAT。此外,不应要求 NPM_TOKEN,因为将 registry-url 与 setup-node 操作一起使用会创建一个
NODE_AUTH_TOKEN
默认使用的 .npmrc 文件。 - 这里有一个几乎类似的问题,但添加
.git
到他的存储库 url 似乎已经为他解决了这个问题 - Github 文档说我应该能够使用 PAT 或 GITHUB_TOKEN 作为 .npmrc 文件中的身份验证令牌,所以这不应该是问题
我浏览了有关语义发布、语义发布-monorepo、GitHub Actions 和 GitHub Packages 的文档。如果我需要包含任何其他信息,请告诉我。