向项目添加请求请求和问题

时间:2019-08-12 15:38:08

标签: github github-api

Github API是否提供一种简便的方法来向项目委员会添加拉取请求或问题

这是用户going to a pull request and selecting one more "Projects" from the sidebar menu的编程等效项

注意:API似乎确实提供了一种向项目添加卡片的方法,但是我必须指定一个特定的项目列。我很想盲目添加项目,让自动化规则确定该列,类似于通过UI单击它。

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为在某种默认列中,将现有拉取请求与项目相关联的最佳方法是菊花链式连接Github API的三个独立部分,即Get a Single Pull Request方法,{{ 3}}方法和Create a Project Card方法。这个想法如下:

  1. 使用“获取单个提取请求”来检索ID
  2. 使用“列出项目列”获取列的列表
  3. 如果要查看某个列是否存在,请执行任何条件逻辑,或者仅使用第一列,或者如果不存在则创建一个特定列
  4. 使用“创建项目卡”使用您选择的“拉取请求ID”和“列”添加卡。

这是Python中的简化示例:

import requests, json
#get pull request 
r = requests.get('https://api.github.com/repos/[myusername]/[myrepo]/pulls/2')
pull = json.loads(r.text)
#requires authentication ... create your token through Github.com
api_token = "mytoken"

#prepare dictionary of header data
h = {"Accept":"application/vnd.github.inertia-preview+json", "Authorization": "token %s" % api_token}

projects_r = requests.get('https://api.github.com/repos/[myusername]/[myrepo]/projects', headers=h)
#get projects data
projects = json.loads(projects_r.text)

#get columns url for the first project in the list projects
columns_url = projects[0]['columns_url']
columns_r = requests.get(columns_url, headers=h)
columns = json.loads(columns_r.text)

#get column url for the first column in the list of columns
column_url = columns[0]['cards_url']

#use retrieved data to build post 
data = {"content_id":pull_id, "content_type":"PullRequest"}

#use post method with headers and data to create card in column
result = requests.post(column_url, headers=h, data=json.dumps(data))
#returns with status 201, created