Как запустить скрипт после пул-запроса на GitHub? - PullRequest
1 голос
/ 16 апреля 2019

Доброе утро всем,

Я хочу создать скрипт, который автоматически обновляет проблему в RedMine, когда кто-то делает запрос на нашем GitHub на основе комментария к запросу.

Я написал скрипт на Python, использующий REST API Selen и Redmine, который извлекает комментарий о pull-запросе на 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)

Спасибо, если вы можете мне помочь или у вас есть лучшее решение моей проблемы

1 Ответ

1 голос
/ 17 апреля 2019

Я наконец нашел ответ на свою проблему, и оказалось, что веб-крючки, предложенные GitHub, отвечают на мою проблему (Repo> Настройки> Webhooks).

Теперь мне просто нужно настроить сервер, который вызывает мой скрипт, когда я делаю запрос HTML Post, но я не знаю, как получить URL-адрес требуемого pull-запроса.

...