繁体   English   中英

在 GitHub 操作工作流中确定合并推送的源分支名称

[英]Determine source branch name on merge push in GitHub action workflow

我有一个 GitHub 动作工作流,我正在将各种不同的源分支合并到目标分支主分支中。

这是读取环境变量值的测试工作流程:

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 包含“test”,但对于 push,它是空的。 当文件合并时我需要这个值,所以当推送发生时。

测试工作流程还打印出整个事件 json object,在推送事件中我也没有看到任何带有分支“测试”的条目。

如何在推送事件期间获取源分支的名称?

在合并请求后这对我有用:

export LATESTLOG=$(git log -1 --pretty=%B)
export SOURCEBRANCH=$(echo $LATESTLOG | awk -F '\\\\n' '{print $1}' |  awk -F '/' '{print $2}' | awk '{print $1}')
name: Test closed branch

on:
  pull_request:
  types: [closed]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Get PR closed number
        env:
          PR_NUMBER: ${{ toJson(github.event.number) }}
        run: |
          echo "$PR_NUMBER"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM