为什么我无法再在 GitHub 工作流程中推送标签,如何解决这个问题?

问题描述 投票:0回答:2

我的团队有一个 GitHub 发布工作流程,可以在推送时自动标记我们的产品分支。去年它一直运行良好,最近一次成功是在 2022 年 5 月 2 日。这个工作流程在 2022 年 5 月 11 日失败了,现在我不知道它是如何工作的。 5 月 5 日发布了 git 的新版本,但我查看了这些更改,没有什么是显而易见的。

错误是:

Run git push --tags
  git push --tags
  shell: /usr/bin/bash -e {0}
  env:
    pythonLocation: /opt/hostedtoolcache/Python/3.8.12/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.8.12/x64/lib
To github.com:ORGANIZATION/PACKAGE.git
 ! [remote rejected] PACKAGE/v0.3.13 -> PACKAGE/v0.3.13 (shallow update not allowed)
error: failed to push some refs to 'github.com:ORGANIZATION/PACKAGE.git'
Error: Process completed with exit code 1.

以下是失败的工作流程步骤的最小示例:

  check:
    runs-on: ubuntu-latest
    needs: correct_repository
    steps:
      - name: Check out code
        uses: actions/checkout@v2
        with:
          ssh-key: ${{ secrets.DEPLOY_MACHINE_SSH }}
      - name: Set up Python 3.8
        uses: actions/setup-python@v2
        with:
          python-version: 3.8
      - name: Install bump2version
        run: python -m pip install bump2version
      - name: Extract package version
        id: package
        run: |
          echo -n "::set-output name=version::"
          bump2version --dry-run --list patch | grep ^current_version | sed -r s,"^.*=",,
      - name: Tag package
        run: git tag PACKAGE/v${{ steps.package.outputs.version }}
      - name: Publish tags
        run: git push --tags 
    outputs:
      package-version: ${{ steps.package.outputs.version }}

实际的步骤有点复杂,但是当我通过从工作流日志中按顺序复制粘贴 shell 命令来本地模拟时,上面的操作失败了。

据我所知,默认情况下 actions/checkout 会对存储库进行浅层克隆,深度为 1,并且已经这样做了相当长一段时间(最后一次成功运行指定深度 1)。您不应该能够从浅层克隆中推送,因为尚不清楚“推入/从浅层回购”应该如何表现

此工作流程应该失败是有道理的,但是:

  • 为什么它在 git 2.36.1 版本之前就成功了(或者该版本无关)?
  • 如果我想从工作流程中推送标签,建议的结帐参数是什么?
  • 这是否有机会在 actions/checkout@v3 中修复?
git github-actions git-tag shallow-clone
2个回答
2
投票

好吧,感谢上面评论中的 @torek@TonyArra 指出了解决方案,并让我放心,实际上可能发生了哪些变化,导致工作流程开始崩溃。最终修复以增加为操作/结帐配置的获取深度:

      - name: Check out code
        uses: actions/checkout@v2
        with:
          ssh-key: ${{ secrets.CMU_DELPHI_DEPLOY_MACHINE_SSH }}
          fetch-depth: 5

0
投票

在版本 4 中,您必须使用 PATssh 密钥。 (用法)

- name: Checkout Repo
  uses: actions/checkout@v4
  with:
    token: ${{ secrets.PAT }}

创建一个 PAT 并将其添加到 secrets

© www.soinside.com 2019 - 2024. All rights reserved.