1
Fork 0

ci: Enable toolstate tracking on Azure

Currently just run it through its paces but don't actually push to
official locations. Instead let's just push to a separate fork (mine) as
well as open issues in a separate fork (mine). Make sure that people
aren't pinged for these issues as well!

This should hopefully ensure that everything is working on Azure and
give us a chance to work through any issues that come up.
This commit is contained in:
Alex Crichton 2019-06-12 07:59:20 -07:00
parent 96636f3eb8
commit 521edee2e5
7 changed files with 39 additions and 19 deletions

View file

@ -3,6 +3,7 @@
import sys
import re
import os
import json
import datetime
import collections
@ -53,6 +54,14 @@ def read_current_status(current_commit, path):
return json.loads(status)
return {}
def gh_url():
return os.environ['TOOLSTATE_ISSUES_API_URL']
def maybe_delink(message):
if os.environ.get('TOOLSTATE_SKIP_MENTIONS') is not None:
return message.replace("@", "")
return message
def issue(
tool,
maintainers,
@ -61,13 +70,12 @@ def issue(
pr_reviewer,
):
# Open an issue about the toolstate failure.
gh_url = 'https://api.github.com/repos/rust-lang/rust/issues'
assignees = [x.strip() for x in maintainers.split('@') if x != '']
assignees.append(relevant_pr_user)
response = urllib2.urlopen(urllib2.Request(
gh_url,
gh_url(),
json.dumps({
'body': textwrap.dedent('''\
'body': maybe_delink(textwrap.dedent('''\
Hello, this is your friendly neighborhood mergebot.
After merging PR {}, I observed that the tool {} no longer builds.
A follow-up PR to the repository {} is needed to fix the fallout.
@ -77,7 +85,7 @@ def issue(
cc @{}, the PR reviewer, and @rust-lang/compiler -- nominating for prioritization.
''').format(relevant_pr_number, tool, REPOS.get(tool), relevant_pr_user, pr_reviewer),
''').format(relevant_pr_number, tool, REPOS.get(tool), relevant_pr_user, pr_reviewer)),
'title': '`{}` no longer builds after {}'.format(tool, relevant_pr_number),
'assignees': assignees,
'labels': ['T-compiler', 'I-nominated'],
@ -216,11 +224,10 @@ if __name__ == '__main__':
f.write(message)
# Write the toolstate comment on the PR as well.
gh_url = 'https://api.github.com/repos/rust-lang/rust/issues/{}/comments' \
.format(number)
issue_url = gh_url() + '/{}/comments'.format(number)
response = urllib2.urlopen(urllib2.Request(
gh_url,
json.dumps({'body': message}),
issue_url,
json.dumps({'body': maybe_delink(message)}),
{
'Authorization': 'token ' + github_token,
'Content-Type': 'application/json',