我正在尝试创建一个简单的回滚工作流程,它将获取“主”分支的先前 SHA 并部署带有该标签的 Docker 映像。 在我的本地计算机中,此命令有效 -
git rev-parse HEAD~1
并返回之前的 SHA。因此,我围绕它创建了一个工作流程来设置变量的输出,但现在我收到此错误 -
Run echo "prev_sha=$(git rev-parse HEAD~1)" >> "$GITHUB_OUTPUT"
fatal: ambiguous argument 'HEAD~1': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
这是工作流程 -
on: workflow_dispatch
jobs:
get_prev_sha:
name: get previous sha of main
runs-on: ubuntu-latest
outputs:
prev_sha: ${{ steps.prev_sha.outputs.prev_sha }}
steps:
- name: Checkout
uses: actions/checkout@v3
with:
ref: 'main'
- name: Get last commit SHA
id: prev_sha
run: |
echo "prev_sha=$(git rev-parse HEAD~1)" >> "$GITHUB_OUTPUT"
我唯一的问题是,如何使用 GitHub Actions 获取分支的前一个(倒数第二个)哈希值并将其设置为输出? 如有任何帮助,我们将不胜感激。
根据actions/checkout@v4的描述:
对于触发工作流程的 ref/SHA,默认情况下仅获取单个提交。设置
以获取所有分支和标签的所有历史记录。fetch-depth: 0
并且,这是fetch-depth
的
用法:
# Number of commits to fetch. 0 indicates all history for all branches and tags.
# Default: 1
fetch-depth: ''
因此,您可以使用
fetch-depth
仅获取最后两个提交,即 fetch-depth: 2
和 git rev-parse HEAD~1
应返回正确的提交哈希。