[英]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.