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] webpack-bot integration for webpack-cli #220

Closed
wants to merge 7 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 19 additions & 10 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,31 @@
language: node_js

node_js:
- "4"
- "5"
- "6"
- "stable"

sudo: false

notifications:
email: false

matrix:
include:
- os: linux
node_js: "stable"
env: JOB_PART=lint
- os: linux
node_js: "stable"
env: JOB_PART=integration
- os: linux
node_js: "6"
env: JOB_PART=integration
- os: linux
node_js: "5"
env: JOB_PART=integraton
- os: linux
node_js: "4"
env: JOB_PART=integraton

before_script:
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
- bash <(curl -s https://codecov.io/bash)

script:
- npm run prepublish
- npm run lint
- npm run test
script: npm run travis:$JOB_PART
Copy link
Member

Choose a reason for hiding this comment

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

JOB_PART is not defined

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I updated the file based on what we already have inside the webpack/webpack repository. I hope we are on the right path

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
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,10 @@
"precommit": "lint-staged",
"prepublish": "flow-remove-types lib/ -d dist/ && npm run format:dist",
"pretest": "npm run lint",
"test": "jest --coverage"
"test": "jest --coverage",
"dist": "flow-remove-types lib/ -d dist/ && npm run format:dist",
"travis:integration": "npm run dist && npm run test",
"travis:lint": "npm run dist && npm run lint"
},
"lint-staged": {
"{lib,bin,__mocks__}/**/!(__testfixtures__)/**.js": [
Expand Down