我的团队有一个 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)。您不应该能够从浅层克隆中推送,因为尚不清楚“推入/从浅层回购”应该如何表现。
此工作流程应该失败是有道理的,但是: