[英]Repo not found using semantic-release-monorepo in GitHub Actions workflow
我正在创建 GitHub 操作工作流来构建 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
I have made sure the repo package.json as well as the package.json for every package has the correct repository url, https://github.com/owner/repo.git
. 我的个人访问令牌有权回购、写入和删除包。
无论我更改什么配置,该步骤都会失败并显示以下消息:
命令“git push --dry-run --no-verify https://[secure]@github.com/xxx/xxx.git HEAD:develop”失败,并显示错误消息 remote: Repository not found。 26 致命:未找到存储库“https://github.com/xxx/xxx.git/”。
第二条消息是
EGITNOPERMISSION: ' semantic-release cannot push the version tag to the branch
develop
on the remote Git repository with URLhttps://[secure]@github.com/xxx/xxx.git
我尝试过的其他事情:
NODE_AUTH_TOKEN
的 .npmrc 文件。.git
添加到他的存储库 url 似乎已经为他解决了我查看了语义发布、语义发布-monorepo、GitHub 操作和 GitHub 包的文档。 如果我需要包含任何其他信息,请告诉我。
经过更多的尝试和错误,我发现了原因。 如果我的理解是正确的,那么 Github 工作流程将在使用actions/checkout
签出 repo 的步骤中自动使用可用的 GITHUB_TOKEN 密码向 Github 进行身份验证。 然后,它保留了此步骤中的凭据并将其重新用于发布包的步骤,即使我将个人访问令牌作为环境变量注入该步骤。
最后,解决方法是在第一步中使用persist-credentials
选项,如下所示
steps:
- name: Checkout repo
uses: actions/checkout@v2
with:
persist-credentials: false
然后使用个人访问令牌在最后一步使用 GitHub 进行身份验证,就像我指出的那样,我认为这应该是我的问题中的正确方法,因为语义发布文档 state 仅支持 PAT 身份验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.