在GitHub对拉取请求的操作中,我需要在“当前主服务器”的上下文中运行一些代码,然后在PR分支的上下文中重新运行相同的代码。
我可以签出将拉取请求与其进行PR宣传的基础进行比较。我如何找到基本分支的SHA(例如,如果PR针对主节点,则为当前主节点)?
jobs:
job_on_base:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: "${{ github.base_ref }}"
- run: |
# Seems like I can get it here with $(git log -1 --format="%H")
echo "My current SHA is ... ?"
job_on_pr:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: "${{ github.ref }}"
- run: |
echo "My current SHA is $GITHUB_SHA"
echo "The BASE SHA is ?"
答案 0 :(得分:1)
事实证明这是一个git
问题,而不是Github行动。 actions/checkout@v2
创建了一个浅--depth=1
克隆,因此要使PR的父级可以将git cat-file -p
的输出解析为described here。可以使用
git cat-file -p <SHA> | awk 'NR > 1 {if(/^parent/){print $2; exit}}'
事实证明,更好的方法是使用fetch-depth: 2
参数。它仅允许一项作业处理请求请求和主合并情况,也可以与HEAD^1
一起使用以到达父级。
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 2
答案 1 :(得分:1)
如果作业在eHeight
事件上运行,则基本sha可以作为pull_request