使用 GitHub Actions 获取分支的倒数第二次提交 SHA

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

我正在尝试创建一个简单的回滚工作流程,它将获取“主”分支的先前 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 获取分支的前一个(倒数第二个)哈希值并将其设置为输出? 如有任何帮助,我们将不胜感激。

github-actions cicd rollback
1个回答
0
投票

根据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
应返回正确的提交哈希。

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