From f73955fd064ddb4478a274a77d3d4d0f5aea0f29 Mon Sep 17 00:00:00 2001 From: Agniva De Sarker Date: Thu, 27 Apr 2017 13:32:32 +0530 Subject: [PATCH] Using tldr bot on a separate server - Sending the PR id and message as a POST request. - The bot running on a separate server receives the message and posts the comment on the PR. --- .travis.yml | 3 +++ package.json | 2 +- scripts/post_pr_comment.py | 42 -------------------------------------- scripts/send_to_bot.py | 38 ++++++++++++++++++++++++++++++++++ 4 files changed, 42 insertions(+), 43 deletions(-) delete mode 100644 scripts/post_pr_comment.py create mode 100644 scripts/send_to_bot.py diff --git a/.travis.yml b/.travis.yml index 924a330af..0aaed0ba6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,9 @@ cache: false after_success: - bash scripts/build.sh +after_failure: +- cat test_result | python scripts/send_to_bot.py + env: global: - secure: ewQMcFd3wH8IHOeGhIkBr2kAgadONmesv2KB+9bPRCZ5gvtFFwlkCMdPnQBR9Kd3GKC8r+EO0JNNFWOvrDjPYhEHi9Ab26Q/qodwfwne9YloKXT+C48Zrbrj8q7kb/FeMYPev+RMuM96j5E5QyqBVohGP7hC2bpU3mvAhQ2wBCE= diff --git a/package.json b/package.json index f95ccd844..b87156185 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "precommit": "npm test", "lint-markdown": "markdownlint pages/**/*.md", "lint-tldr": "tldr-lint ./pages", - "test": "markdownlint pages/ && tldr-lint ./pages", + "test": "bash -c 'markdownlint pages/ && tldr-lint ./pages 2>&1 | tee test_result; test ${PIPESTATUS[0]} -eq 0'", "build-index": "node ./scripts/build-index.js > pages/index.json" }, "repository": "tldr-pages/tldr", diff --git a/scripts/post_pr_comment.py b/scripts/post_pr_comment.py deleted file mode 100644 index 9060ecae0..000000000 --- a/scripts/post_pr_comment.py +++ /dev/null @@ -1,42 +0,0 @@ -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) diff --git a/scripts/send_to_bot.py b/scripts/send_to_bot.py new file mode 100644 index 000000000..992ccea32 --- /dev/null +++ b/scripts/send_to_bot.py @@ -0,0 +1,38 @@ +import json +import os +import sys +import urllib2 + +URL = 'https://tldr-bot.starbeamrainbowlabs.com/' + +def post_comment(pr_id, comment_body): + # Constructing the url + req = urllib2.Request(URL, + json.dumps({'body': comment_body, 'pr_id': pr_id }), + {'Content-Type': 'application/json'}) + # Making the request + f = urllib2.urlopen(req) + if f.getcode() != 200: + print f.read() + + +# Get the environment variables +PR_NUMBER = os.environ.get('TRAVIS_PULL_REQUEST') +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, comment)