如何 运行 在 GitHub 上的拉取请求后编写脚本?

How to run a script after a pull-request on GitHub?

大家早上好,

我想创建一个脚本,当有人根据拉取请求评论对我们的 GitHub 发出拉取请求时,它会自动更新 RedMine 上的问题。

我在 Python 中使用 selenium 和 redmine REST API 编写了一个脚本,该脚本检索请求者对 GitHub 提出的拉取请求的评论,但我必须执行手动。
您知道是否可以在拉取请求之后自动执行 python 脚本吗?

(目前脚本保存在我的电脑上,但理想情况下会保存在外部服务器上,这样我和我的伙伴们可以更方便地使用它)

我搜索了一些基于 WebHooks 或 CRON 的解决方案,但似乎没有解决我的问题。

我正在使用 Python 2.7

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

import test


# Xpath to retrieve number of the fix
DISCONNECTED_XPATH = "//div[4]/div/main/div[2]/div[1]/div/div[2]/div[3]/div[2]/div[1]/div[1]/div[2]/div/div[2]/task-lists/table/tbody/tr/td/p"
CONNECTED_XPATH =    "//div[4]/div/main/div[2]/div[1]/div/div[1]/div[3]/div[2]/div[1]/div[1]/div[2]/div/div[2]/task-lists/table/tbody/tr/td/p"
PULL_URL = "https://github.com/MaxTeiger/TestCoopengo/pull/1"

# Init
print("Opening the browser...")
driver = webdriver.Firefox()
# Go to the specified pull 
print("Reaching " + PULL_URL)
driver.get(PULL_URL)

assert "GitHub" in driver.title

print("Finding the pull comment...")
# retrieve the fix id 
elem = driver.find_element_by_xpath(DISCONNECTED_XPATH)
issueID = elem.text

print("Closing driver")
driver.close()

issueID = int(issueID.split('#')[1])
print("Issue ID : " +str(issueID))

print("Updating ticket on RedMine...")
test.updateIssueOnRedMineFromGit(issueID, PULL_URL)

如果你能帮助我或者你对我的问题有更好的解决方案,谢谢

我终于找到了问题的答案,事实证明 GitHub 提出的 webhooks 解决了我的问题(Repo > Settings > Webhooks)。

现在,我只需要设置一个服务器,当我发出 HTML Post 请求时调用我的脚本,但我不知道如何检索 URL想要的拉取请求。