Add script to post Travid build errors on PRs (#1138)

waldyrious/alt-syntax
Agniva De Sarker 2016-11-06 22:59:44 +05:30 committed by GitHub
parent 3d0644b2f6
commit 2a9060aef4
4 changed files with 50 additions and 1 deletions

4
.gitignore vendored
View File

@ -9,6 +9,10 @@
node_modules
npm-debug.log
# A temp file used to store the output from npm test
# used to update a PR with a comment
test_result
# We used to have an index file in the repository,
# but it's been superseded by a static asset
# hosted at https://tldr-pages.github.io/assets/index.json

View File

@ -10,6 +10,9 @@ cache: false
after_success:
- bash scripts/build.sh
after_failure:
- cat test_result | python scripts/post_pr_comment.py
env:
global:
- secure: ewQMcFd3wH8IHOeGhIkBr2kAgadONmesv2KB+9bPRCZ5gvtFFwlkCMdPnQBR9Kd3GKC8r+EO0JNNFWOvrDjPYhEHi9Ab26Q/qodwfwne9YloKXT+C48Zrbrj8q7kb/FeMYPev+RMuM96j5E5QyqBVohGP7hC2bpU3mvAhQ2wBCE=

View File

@ -12,7 +12,7 @@
"precommit": "npm test",
"lint-markdown": "markdownlint pages/**/*.md",
"lint-tldr": "tldr-lint ./pages",
"test": "markdownlint pages/ && tldr-lint ./pages",
"test": "markdownlint pages/ && tldr-lint ./pages 2>&1 | tee test_result",
"build-index": "node ./scripts/build-index.js > pages/index.json"
},
"repository": "tldr-pages/tldr",

View File

@ -0,0 +1,42 @@
import json
import os
import sys
import urllib2
GITHUB_URL = 'https://api.github.com'
def post_comment(pr_id, repo_slug, comment_body, user_token):
# Constructing the url
url = '{api_url}/repos/{slug}/issues/{number}/comments'.format(
api_url=GITHUB_URL, slug=repo_slug, number=pr_id)
req = urllib2.Request(url=url,
data=json.dumps({'body': comment_body}))
req.add_header('Authorization', 'token ' + user_token)
# Making the request
f = urllib2.urlopen(req)
if f.getcode() != 201:
print f.read()
# Get the environment variables
PR_NUMBER = os.environ.get('TRAVIS_PULL_REQUEST')
REPO_SLUG = os.environ.get('TRAVIS_REPO_SLUG') # owner_name/repo_name
BOT_TOKEN = os.environ.get('TRAVIS_BOT_GITHUB_TOKEN')
BUILD_ID = os.environ.get('TRAVIS_BUILD_ID')
# Read the test result output from stdin
test_result = sys.stdin.read().strip()
# Populate the template text
comment = (
"The [build]"
"(https://travis-ci.org/tldr-pages/tldr/builds/{build_id})"
" for this PR has failed with the following message:"
"\n```\n"
"{comment_body}"
"\n```\n"
"Please fix the error(s) and push again."
).format(build_id=BUILD_ID, comment_body=test_result)
# If its a PR, post a comment on it
if PR_NUMBER != "false":
post_comment(PR_NUMBER, REPO_SLUG, comment, BOT_TOKEN)