如何在 CircleCI 中获取 PR 前往的分支

Mat*_*ima 6 circleci circleci-workflows circleci-2.0

CircleCI 有一个CIRCLE_BRANCH环境变量,它告诉您 PR 本身的分支名称。

但我想要相反,我需要 PR 试图合并的分支名称。

Fra*_*isi 2

没有内置环境变量(请参阅此处的完整列表)来获取拉取请求的基本分支的名称。不过,您可以使用环境变量获取拉取请求编号CIRCLE_PR_NUMBER,并使用 GitHub REST API 检索基本分支名称。

您将需要:

  1. 使用repo范围创建 GitHub 个人访问令牌
  2. 设置一个名为的项目环境变量GITHUB_ACCESS_TOKEN
  3. 以 JSON 格式检索拉取请求数据
  4. 解析 JSON 以获取基本分支引用 -有几种方法可以实现这一点

下面是一个示例 bash 脚本,它以 JSON 格式检索给定拉取请求的数据并使用 Python 2 对其进行解析:

#!/bin/bash

REPO_OWNER="replace_me"
GITHUB_API_URL="https://api.github.com/repos/$REPO_OWNER/$CIRCLE_PROJECT_REPONAME/pulls/$CIRCLE_PR_NUMBER?access_token=$GITHUB_ACCESS_TOKEN"
export PYTHONIOENCODING=utf8
export PULL_REQUEST_BASE_REF=$(curl -s "$GITHUB_API_URL" | python -c "import sys, json; print json.load(sys.stdin)['base']['ref']")
Run Code Online (Sandbox Code Playgroud)