使用GitHub Actions检查分支是否与main同步

jum4pzuy  于 2023-05-05  发布在  Git
关注(0)|答案(1)|浏览(144)

如何在GitHub Actions脚本中添加内容,以确保分支与当前main分支保持同步,即以main为祖先?

我知道GitHub的repo设置页面有一个“合并前要求分支保持最新”选项。但是如果分支不是最新的,让GitHub Actions脚本快速失败仍然很有用,而不是花5-10分钟来设置我们的测试环境。

jvlzgdj9

jvlzgdj91#

以下是GitHub Actions脚本的示例部分:
1.当pull请求被打开、重新打开或有新的commit推送时运行,如果该pull请求将main作为其目标分支
1.检查当前提交是否有main作为祖先,如果没有则失败
1.在第一次检查完成之前,不要开始下一个作业/检查

name: Pull Request Checks

on:
  pull_request:
    branches: main

jobs:
  check_if_branch_is_ahead_of_main:
    runs-on: ubuntu-latest
    steps:
      - name: Git checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: Check if branch is ahead of main
        run: |
          if ! git merge-base --is-ancestor origin/main ${{ github.event.pull_request.head.sha }};
          then echo "This branch is not up to date with main";
          exit 1; fi

  next_job:
    needs: check_if_branch_is_ahead_of_main
    ...

注意:默认情况下,运行在pull_request触发器上的GitHub Action认为当前提交是一个虚构的提交,它是通过将您的pull请求合并到目标分支中而产生的。${{ github.event.pull_request.head.sha }}意味着使用pull请求分支的HEAD处的实际提交。

相关问题