簡體   English   中英

在 GitHub 操作工作流程中未使用語義發布-monorepo 找到存儲庫

[英]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 URL 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,因為在 setup-node 操作中使用 registry-url 會創建一個默認使用NODE_AUTH_TOKEN的 .npmrc 文件。
  • 這里有一個幾乎類似的問題但是將.git添加到他的存儲庫 url 似乎已經為他解決了
  • Github 文檔說我應該能夠使用 PAT 或 GITHUB_TOKEN 作為 .npmrc 文件中的身份驗證令牌,所以這不應該是問題

我查看了語義發布、語義發布-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM