【发布时间】:2021-02-02 21:16:50
【问题描述】:
我有一个 GitHub 操作工作流,我在其中将各种不同的源分支合并到目标分支 main。
这是一个读取环境变量值的测试工作流程:
name: Print Github Env Variables
on:
push:
branches:
- main
- test
pull_request:
branches:
- main
- test
workflow_dispatch:
jobs:
print-env-variabes:
name: Print Github Variables
runs-on: ubuntu-latest
steps:
- name: Print Github Variables
run: |
echo "GITHUB_WORKFLOW:$GITHUB_WORKFLOW"
echo "GITHUB_EVENT_NAME:$GITHUB_EVENT_NAME"
echo "GITHUB_EVENT_PATH:$GITHUB_EVENT_PATH"
echo "GITHUB_WORKSPACE:$GITHUB_WORKSPACE"
echo "GITHUB_SHA:$GITHUB_SHA"
echo "GITHUB_REF:$GITHUB_REF"
echo "GITHUB_HEAD_REF:$GITHUB_HEAD_REF"
- name: Print complete webhook event payload
run: cat $GITHUB_EVENT_PATH
在名为 test 的分支中创建 test.txt 文件,创建拉取请求然后合并到 main。你会看到我所看到的。
当我查看 GITHUB_REF 时,它包含主分支。
对于 pull_requests GITHUB_HEAD_REF 包含“测试”,但对于 push 它是空的。我需要文件合并时的值,所以当推送发生时。
测试工作流还打印出整个事件 json 对象,在推送事件中我也没有看到任何带有分支“test”的条目。
如何在推送事件期间获取源分支的名称?
【问题讨论】:
-
您可以使用
HEAD^1和HEAD^2获取通勤的锚点。 -
感谢@lucas 提供链接,但我想要源分支名称,而不是目标分支名称。
-
推送没有源分支名称。它们只有一个提交哈希 ID。
-
@ValentinGenev:这是真的,但与这个问题无关。远程跟踪名称由
git fetch创建后存在于您自己的存储库中,问题是关于git push和github“动作”(这些“动作”事物由GitHub 定义,而不是由Git 定义)。如果运行该操作的存储库具有远程跟踪名称,则其中一些可能包含 SHA,但有些可能不包含,并且包含该名称的集合可能不是正确的集合,或者可能包含太多名称有用。
标签: git github github-actions