5 Commits

Author SHA1 Message Date
eb4666c3df docs: add info about force script 2018-10-19 13:08:14 -07:00
def91e35d3 feat: add a force retest script 2018-10-19 13:06:49 -07:00
4794c6be26 docs: add token info to readme 2018-10-18 16:46:18 -07:00
b68c3dab33 1.0.0 2018-10-18 16:42:55 -07:00
68cccb72a9 feat: allow filtering by pr author 2018-10-18 16:42:41 -07:00
7 changed files with 39 additions and 6 deletions

View File

@@ -1,6 +1,9 @@
### Changelog ### Changelog
#### 0.1.0 (18 October 2018) ### [v1.0.0](https://git.w33ble.com/w33ble/gh-action-bot/compare/v0.1.0...v1.0.0) (18 October 2018)
- feat: allow filtering by pr author [`68cccb7`](https://git.w33ble.com/w33ble/gh-action-bot/commit/68cccb72a9801c502003c7b913844fc01721a6e3)
#### v0.1.0 (18 October 2018)
- docs: update readme, add sample env [`a28d6a2`](https://git.w33ble.com/w33ble/gh-action-bot/commit/a28d6a25096efb9c8acea3e8d26e7f7f50dfd6b5) - docs: update readme, add sample env [`a28d6a2`](https://git.w33ble.com/w33ble/gh-action-bot/commit/a28d6a25096efb9c8acea3e8d26e7f7f50dfd6b5)
- feat: add retest comment, delete it [`ced41f4`](https://git.w33ble.com/w33ble/gh-action-bot/commit/ced41f4a495823205e5769e4531f923a982d29b4) - feat: add retest comment, delete it [`ced41f4`](https://git.w33ble.com/w33ble/gh-action-bot/commit/ced41f4a495823205e5769e4531f923a982d29b4)
- feat: process 2 pages of events [`c117cb8`](https://git.w33ble.com/w33ble/gh-action-bot/commit/c117cb847d5cb7a6b57b705e0c192cc725c0d646) - feat: process 2 pages of events [`c117cb8`](https://git.w33ble.com/w33ble/gh-action-bot/commit/c117cb847d5cb7a6b57b705e0c192cc725c0d646)

View File

@@ -7,11 +7,16 @@ Action bot for Github. Checks a repo's event stream and leaves a ghost comment w
## Usage ## Usage
`node . owner/repo` `yarn start owner/repo`: watch the event stream and handle matches
`yarn run force owner/repo pr_number`: force a comment on a specific pr, by number
You'll need to set some environment flags. Check `sample-env` for what is available, and you can copy the file to `.env` in the root and add your settings there as well. You'll need to set some environment flags. Check `sample-env` for what is available, and you can copy the file to `.env` in the root and add your settings there as well.
### Personal Access Token
You will need to provide a Github [Personal Access Token](https://github.com/settings/tokens/new). It will need `write:org` access in order to create comments.
#### License #### License
MIT © [w33ble](https://github.com/w33ble) MIT © [w33ble](https://github.com/w33ble)

View File

@@ -1,6 +1,6 @@
{ {
"name": "gh-action-bot", "name": "gh-action-bot",
"version": "0.1.0", "version": "1.0.0",
"private": true, "private": true,
"description": "Action bot for Github", "description": "Action bot for Github",
"main": "index", "main": "index",
@@ -9,7 +9,8 @@
"lint": "eslint \"*.{js,mjs}\" \"src/**/*.{js,mjs}\"", "lint": "eslint \"*.{js,mjs}\" \"src/**/*.{js,mjs}\"",
"precommit": "lint-staged", "precommit": "lint-staged",
"version": "auto-changelog -p && auto-authors && git add CHANGELOG.md AUTHORS.md", "version": "auto-changelog -p && auto-authors && git add CHANGELOG.md AUTHORS.md",
"start": "node ." "start": "node .",
"force": "node -r esm src/force.mjs"
}, },
"repository": { "repository": {
"type": "git", "type": "git",

View File

@@ -1,6 +1,7 @@
GITHUB_ACCESS_TOKEN=xxx GITHUB_ACCESS_TOKEN=xxx
COMMENT_ACTOR=ci-comment-username COMMENT_ACTOR=username
COMMENT_BODY_REGEXP=build failed COMMENT_BODY_REGEXP=build failed
COMMENT_BODY_REGEXP_FLAGS=i COMMENT_BODY_REGEXP_FLAGS=i
PULL_LABEL_FILTER= PULL_LABEL_FILTER=
PULL_AUTHOR_FILTER=
PULL_RETEST_BODY=retest PULL_RETEST_BODY=retest

20
src/force.mjs Normal file
View File

@@ -0,0 +1,20 @@
import dotenv from 'dotenv';
import createRepo from './lib/create_repo.mjs';
import { createComment, deleteComment } from './lib/comments.mjs';
dotenv.config();
async function forceRetest() {
const [ownerRepo, prNumber] = process.argv.splice(2);
const { PULL_RETEST_BODY } = process.env;
if (!ownerRepo || !prNumber) {
throw new Error('You must specify an owner/repo combo and a pull request number');
}
const repo = createRepo(ownerRepo);
const comment = await createComment(repo, prNumber, PULL_RETEST_BODY);
await deleteComment(repo, comment.id);
}
forceRetest().catch(err => console.error(err));

View File

@@ -18,6 +18,7 @@ export default async function() {
COMMENT_BODY_REGEXP_FLAGS, COMMENT_BODY_REGEXP_FLAGS,
COMMENT_ACTOR, COMMENT_ACTOR,
PULL_LABEL_FILTER, PULL_LABEL_FILTER,
PULL_AUTHOR_FILTER,
PULL_RETEST_BODY, PULL_RETEST_BODY,
} = process.env; } = process.env;
@@ -36,6 +37,7 @@ export default async function() {
const pull = await getPull(repo, comment.number); const pull = await getPull(repo, comment.number);
if (pull.state !== 'open') return false; // filter out any closed pulls if (pull.state !== 'open') return false; // filter out any closed pulls
if (PULL_AUTHOR_FILTER && !pull.owner !== PULL_AUTHOR_FILTER) return false; // filter on owner
if (PULL_LABEL_FILTER && !pull.labels.includes(PULL_LABEL_FILTER)) return false; // filter on label if (PULL_LABEL_FILTER && !pull.labels.includes(PULL_LABEL_FILTER)) return false; // filter on label
return { comment, pull }; return { comment, pull };

View File

@@ -4,6 +4,7 @@ export default async function getPull(repo, id) {
id: pull.id, id: pull.id,
url: pull.url, url: pull.url,
number: pull.number, number: pull.number,
owner: pull.user.login,
state: pull.state, state: pull.state,
title: pull.title, title: pull.title,
labels: pull.labels.map(label => label.name), labels: pull.labels.map(label => label.name),