Merge remote-tracking branch 'teor/bug26979-034' into maint-0.3.4

This commit is contained in:
Nick Mathewson 2018-08-23 20:44:06 -04:00
commit d0007db1f0
2 changed files with 62 additions and 31 deletions

4
changes/bug26979 Normal file
View File

@ -0,0 +1,4 @@
o Minor bugfixes (appveyor ci):
- Improve Appveyor CI IRC logging. Generate correct branches and URLs for
pull requests and tags. Use unambiguous short commits.
Fixes bug 26979; bugfix on master.

View File

@ -22,6 +22,12 @@
# - Accept UTF-8
# - only guess github URLs
# - stop using ANSI colors
#
# Modified by teor in 2018:
# - fix github provider detection ('gitHub' or 'gitHubEnterprise', apparently)
# - make short commits 10 hexdigits long (that's what git does for tor)
# - generate correct branches and URLs for pull requests and tags
# - switch to one URL per line
# This program is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software Foundation;
@ -45,19 +51,19 @@ delineate multiple messages.
Example:
export APPVEYOR_URL=https://ci.appveyor.com
export APPVEYOR_PROJECT_NAME=tor
export APPVEYOR_REPO_COMMIT_AUTHOR=isislovecruft
export APPVEYOR_REPO_COMMIT_TIMESTAMP=2018-04-23
export APPVEYOR_REPO_PROVIDER=gihub
export APPVEYOR_REPO_BRANCH=repo_branch
export APPVEYOR_PULL_REQUEST_TITLE=pull_request_title
export APPVEYOR_BUILD_VERSION=1
export APPVEYOR_REPO_COMMIT=22c95b72e29248dc4de9b85e590ee18f6f587de8
export APPVEYOR_REPO_COMMIT_MESSAGE="some IRC test"
export APPVEYOR_ACCOUNT_NAME=isislovecruft
export APPVEYOR_BUILD_VERSION=1
export APPVEYOR_PROJECT_NAME=tor
export APPVEYOR_PULL_REQUEST_NUMBER=pull_request_number
export APPVEYOR_PULL_REQUEST_TITLE=pull_request_title
export APPVEYOR_REPO_BRANCH=repo_branch
export APPVEYOR_REPO_COMMIT=22c95b72e29248dc4de9b85e590ee18f6f587de8
export APPVEYOR_REPO_COMMIT_AUTHOR=isislovecruft
export APPVEYOR_REPO_COMMIT_MESSAGE="some IRC test"
export APPVEYOR_REPO_COMMIT_TIMESTAMP=2018-04-23
export APPVEYOR_REPO_NAME=isislovecruft/tor
export APPVEYOR_REPO_PROVIDER=github
export APPVEYOR_URL=https://ci.appveyor.com
python ./appveyor-irc-notify.py irc.oftc.net:6697 tor-ci '{repo_name} {repo_branch} {short_commit} - {repo_commit_author}: {repo_commit_message}','Build #{build_version} passed. Details: {build_url} | Commit: {commit_url}
See also https://github.com/gridsync/gridsync/blob/master/appveyor.yml for examples
@ -82,7 +88,7 @@ import time
def appveyor_vars():
"""
Return a dict of key value carfted from appveyor environment variables.
Return a dict of key value crafted from appveyor environment variables.
"""
vars = dict([
@ -90,33 +96,52 @@ def appveyor_vars():
v.replace('APPVEYOR_', '').lower(),
os.getenv(v, '').decode('utf-8')
) for v in [
'APPVEYOR_URL',
'APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED',
'APPVEYOR_ACCOUNT_NAME',
'APPVEYOR_BUILD_VERSION',
'APPVEYOR_PROJECT_NAME',
'APPVEYOR_PULL_REQUEST_HEAD_COMMIT',
'APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH',
'APPVEYOR_PULL_REQUEST_HEAD_REPO_NAME',
'APPVEYOR_PULL_REQUEST_NUMBER',
'APPVEYOR_PULL_REQUEST_TITLE',
'APPVEYOR_REPO_BRANCH',
'APPVEYOR_REPO_COMMIT',
'APPVEYOR_REPO_COMMIT_AUTHOR',
'APPVEYOR_REPO_COMMIT_AUTHOR_EMAIL',
'APPVEYOR_REPO_COMMIT_TIMESTAMP',
'APPVEYOR_REPO_PROVIDER',
'APPVEYOR_PROJECT_NAME',
'APPVEYOR_PULL_REQUEST_TITLE',
'APPVEYOR_BUILD_VERSION',
'APPVEYOR_REPO_COMMIT',
'APPVEYOR_REPO_COMMIT_MESSAGE',
'APPVEYOR_ACCOUNT_NAME',
'APPVEYOR_PULL_REQUEST_NUMBER',
'APPVEYOR_REPO_NAME'
'APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED',
'APPVEYOR_REPO_COMMIT_TIMESTAMP',
'APPVEYOR_REPO_NAME',
'APPVEYOR_REPO_PROVIDER',
'APPVEYOR_REPO_TAG_NAME',
'APPVEYOR_URL',
]
])
BUILD_FMT = u'{url}/project/{account_name}/{project_name}/build/{build_version}'
if vars["repo_provider"] == 'github':
COMMIT_FMT = u'https://{repo_provider}.com/{repo_name}/commit/{repo_commit}'
if vars["repo_tag_name"]:
BRANCH_FMT = u'{repo_name} {repo_tag_name} {short_commit}'
else:
BRANCH_FMT = u'{repo_name} {repo_branch} {short_commit}'
vars.update(head_commit=vars["repo_commit"])
if vars["repo_provider"].lower().startswith('github'):
COMMIT_FMT = u'https://github.com/{repo_name}/commit/{repo_commit}'
if vars["pull_request_number"]:
vars.update(head_commit=vars["pull_request_head_commit"])
BRANCH_FMT = u'{repo_name} {repo_branch} pull {pull_request_head_repo_name} {pull_request_head_repo_branch} {short_commit}'
COMMIT_FMT = u'https://github.com/{pull_request_head_repo_name}/commit/{pull_request_head_commit}'
PULL_FMT = u'https://github.com/{repo_name}/pull/{pull_request_number}'
vars.update(pull_url=PULL_FMT.format(**vars))
vars.update(commit_url=COMMIT_FMT.format(**vars))
vars.update(short_commit=vars["head_commit"][:10])
vars.update(
build_url=BUILD_FMT.format(**vars),
short_commit=vars["repo_commit"][:7],
branch_detail=BRANCH_FMT.format(**vars),
)
return vars
@ -134,17 +159,19 @@ def notify():
if success or failure:
messages = []
messages.append(u"{repo_name} {repo_branch} {short_commit} - {repo_commit_author}: {repo_commit_message}")
messages.append(u"{branch_detail} - {repo_commit_author}: {repo_commit_message}")
if success:
m = u"Build #{build_version} passed. Details: {build_url}"
messages.append(u"Build #{build_version} passed. Details: {build_url}")
if failure:
m = u"Build #{build_version} failed. Details: {build_url}"
messages.append(u"Build #{build_version} failed. Details: {build_url}")
if "commit_url" in apvy_vars:
m += " Commit: {commit_url}"
messages.append(m)
messages.append(u"Commit: {commit_url}")
if "pull_url" in apvy_vars:
messages.append(u"Pull: {pull_url}")
else:
messages = sys.argv[3:]
messages = ' '.join(messages)