Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature] Open bot to the webpack-cli #224

Merged
merged 9 commits into from
Dec 21, 2017
29 changes: 19 additions & 10 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
language: node_js

node_js:
- "6"
- "7"
- "8"
- "stable"
matrix:
include:
- os: linux
node_js: "stable"
env: JOB_PART=lint
- os: linux
node_js: "stable"
env: JOB_PART=integration
- os: linux
node_js: "8"
env: JOB_PART=integration
- os: linux
node_js: "7"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

7 is a "in development" version number. Only even version numbers are node.js version you need to test.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The the versions will be stable, 8 and 6? As far as I understood webpack 4 won't support v4 anymore.
Also, are the labels required for webpack-bot? I don't see it doing anything on new PRs.

env: JOB_PART=integration
- os: linux
node_js: "6"
env: JOB_PART=integration

sudo: false

Expand All @@ -18,10 +30,7 @@ before_script:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start

script:
- yarn prepare
- yarn lint
- yarn test:ci

after_success:
- bash <(curl -s https://codecov.io/bash) || echo "Codecov did not collect coverage reports"

script: npm run travis:$JOB_PART
344 changes: 344 additions & 0 deletions open-bot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,344 @@
bot: "webpack-bot"
rules:

# Add ci-ok, ci-not-ok labels depending on travis status
# comment to point the user to the results
# comment in case of success
- filters:
open: true
pull_request:
mergeable: true
status_1:
context: "continuous-integration/travis-ci/pr"
ensure_1:
value: "{{status_1.state}}"
equals: "success"
actions:
label:
add: "PR: CI-ok"
remove: "PR: CI-not-ok"
comment:
identifier: "ci-result"
message: |-
Thank you for your pull request! The most important CI builds succeeded, we’ll review the pull request soon.
- filters:
open: true
pull_request:
mergeable: true
status_1:
context: "continuous-integration/travis-ci/pr"
any:
ensure_1:
value: "{{status_1.state}}"
equals: "failure"
actions:
label:
add: "PR: CI-not-ok"
remove: "PR: CI-ok"
set:
id: report_ci
value: yep



# Report specific error message if jest tests fails
- filters:
ensure:
value: "{{report_ci}}"
equals: yep
commit: true
status:
context: "continuous-integration/travis-ci/pr"
travis_job:
state: "failed"
allow_failure: false
config:
env: JOB_PART=integration
fetch: travis_job.log
string_cleanup:
id: logResult
value: "{{{fetch}}}"
remove:
- "^[\\s\\S]+?npm run travis:\\$JOB_PART\n*"
- "npm ERR!.*\n"
- "\n*=============================================================================\n[\\s\\S]*"
actions:
comment:
identifier: "ci-result"
message: |-
@{{commit.author.login}} Please review the following output log for errors:

``` text
{{{logResult}}}
```

See [complete report here]({{status.target_url}}).
set:
id: report_ci
value: nope



# Report specific error message if linting fails
- filters:
ensure:
value: "{{report_ci}}"
equals: yep
commit: true
status:
context: "continuous-integration/travis-ci/pr"
travis_job:
state: "failed"
config:
env: JOB_PART=lint
fetch: travis_job.log
string_cleanup:
id: logResult
value: "{{{fetch}}}"
remove:
- "^[\\s\\S]+?npm run travis:\\$JOB_PART\n*"
- "npm ERR!.*\n"
- "\n*The command \"npm run travis:\\$JOB_PART\" exited [\\s\\S]*"
actions:
comment:
identifier: "ci-result"
message: |-
@{{commit.author.login}} The tests look fine, but there are code style issue in your Pull Request. Please review the following:

``` text
{{{logResult}}}
```

See [complete report here]({{status.target_url}}).
set:
id: report_ci
value: nope




# Report a general error message
- filters:
ensure:
value: "{{report_ci}}"
equals: yep
commit: true
status_1:
context: "continuous-integration/travis-ci/pr"
actions:
comment:
identifier: "ci-result"
message: |-
@{{commit.author.login}} The most important CI builds failed. This way your PR can't be merged.

Please take a look at the CI results from [travis]({{status_1.target_url}}) ({{status_1.state}}) and fix these issues.


# add conflict label to pull requests with conflict
# on conflict all result labels are removed
- filters:
open: true
pull_request:
mergeable: false
actions:
label:
add: "PR: conflict"
remove:
- "PR: tests-needed"
- "PR: CI-ok"
- "PR: CI-not-ok"
- filters:
open: true
pull_request:
mergeable: true
actions:
label:
remove: "PR: conflict"



# add unreviewed, reviewed, review-outdated labels
# comment to ping reviewer
# comment on new PR
- filters:
open: true
in_order:
commit: true
review:
state: APPROVED|CHANGES_REQUESTED
ensure:
value: "{{review.state}}"
equals: APPROVED
actions:
label:
add: "PR: reviewed-approved"
remove:
- "PR: review-outdated"
- "PR: unreviewed"
- "PR: reviewed"
- filters:
open: true
in_order:
commit: true
review:
state: APPROVED|CHANGES_REQUESTED
ensure:
value: "{{review.state}}"
equals: CHANGES_REQUESTED
actions:
label:
add: "PR: reviewed-changes-requested"
remove:
- "PR: review-outdated"
- "PR: unreviewed"
- "PR: reviewed"
- filters:
open: true
in_order:
review:
state: APPROVED|CHANGES_REQUESTED
commit: true
not:
label: "review-outdated"
ensure:
value: "{{commit.author.login}}"
notEquals: "{{review.user.login}}"
actions:
label:
add: "PR: review-outdated"
remove:
- "PR: reviewed-approved"
- "PR: reviewed-changes-requested"
- "PR: unreviewed"
- "PR: reviewed"
comment:
identifier: "review-outdated"
message: |-
@{{commit.author.login}} Thanks for your update.

I labeled the Pull Request so reviewers will review it again.

@{{review.user.login}} Please review the new changes.
- filters:
open: true
commit: true
not:
review:
state: APPROVED|CHANGES_REQUESTED
actions:
label: "PR: unreviewed"



# add small label to small pull requests
- filters:
open: true
pull_request:
additions: "<= 10"
deletions: "<= 10"
changed_files: "<= 2"
actions:
label: "PR: small"



# add non-master label to pull request to other branch
- filters:
open: true
age:
minimum: 1d
maximum: 1w
pull_request:
head_ref: "^master$"
permission: "read|none"
actions:
comment:
identifier: "head-master"
edit: true
message: |-
Hi @{{pull_request.user.login}}.

Just a little hint from a friendly bot about the best practice when submitting pull requests:

> Don't submit pull request from your own `master` branch. It's recommended to create a feature branch for the PR.

*You don't have to change it for this PR, just make sure to follow this hint the next time you submit a PR.*


# Move issue task
- filters:
open: true
comment: "\\s*@webpack-bot\\s+move\\s+(?:to\\s+)?([a-z0-9_\\-\\.]+/[a-z0-9_\\-\\.]+)\\s*([\\s\\S]*)$"
not:
comment_1:
matching: "moved\\-by\\-bot"
author: "."
permission:
user: "{{comment.actor.login}}"
actions:
new_issue:
target: "{{{comment_match.[1]}}}"
body: |-
{{{issue.body}}}

---

This issue was moved from {{owner}}/{{repo}}#{{issue.number}} by @{{comment.actor.login}}. Orginal issue was by @{{issue.user.login}}.

{{{comment_match.[2]}}}
comment:
identifier: moved-by-bot
message: |-
I've moved it to {{comment_match.[1]}}.
close: true


# mark inactive issues with inactive label
# close them when no activity after warning
- filters:
issue: true
open: true
not:
label: inactive
ensure:
value: "{{issue.reactions.[+1]}}"
range: "< 10"
last_action_age: 26w # half a year
actions:
comment:
identifer: inactive-warning
message: |-
**This issue had no activity for at least half a year.**

It's subject to automatic issue closing if there is no activity in the next 15 days.
label: inactive
- filters:
open: true
label: inactive
last_action_age:
maximum: 26w # half a year
actions:
label:
remove:
- inactive
- filters:
open: true
label: inactive
last_action_age:
minimum: 15d
includeBotActions: true
actions:
close: true
comment:
identifer: inactive-close
message: |-
Issue was closed because of inactivity.

If you think this is still a valid issue, please file a new issue with additional information.


# Check issues every week
- filters:
open: true
actions:
schedule: 1d
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@
"pretest": "yarn lint",
"test": "jest",
"test:ci": "jest --ci && codecov -f coverage/coverage-final.json",
"jsdoc": "jsdoc -c jsdoc.json -r -d docs"
"jsdoc": "jsdoc -c jsdoc.json -r -d docs",
"travis:integration": "yarn prepare && yarn test:ci",
"travis:lint": "yarn prepare && yarn lint"
},
"lint-staged": {
"{lib,bin}/**/!(__testfixtures__)/**.js": [
Expand Down