webpack/open-bot.yaml

626 lines
16 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
check_1:
name: "webpack.webpack"
status_2:
context: "continuous-integration/appveyor/pr"
ensure_1:
value: "{{check_1.conclusion}}"
equals: "success"
ensure_2:
value: "{{status_2.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, well review the pull request soon.
- filters:
open: true
pull_request:
mergeable: true
check_1:
name: "webpack.webpack"
status_2:
context: "continuous-integration/appveyor/pr"
any:
ensure_1:
value: "{{check_1.conclusion}}"
equals: "failure"
ensure_2:
value: "{{status_2.state}}"
equals: "failure"
not:
any:
ensure_3:
value: "{{check_1.conclusion}}"
equals: "pending"
ensure_4:
value: "{{status_2.state}}"
equals: "pending"
actions:
label:
add: "PR: CI-not-ok"
remove: "PR: CI-ok"
set:
id: report_ci
value: yep
# Report a general error message
- filters:
ensure:
value: "{{report_ci}}"
equals: yep
commit: true
check_1:
name: "webpack.webpack"
status_2:
context: "continuous-integration/appveyor/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 azure ({{{check_1.output.summary}}}) and [appveyor]({{status_2.target_url}}) ({{status_2.state}}) and fix these issues.
# Add tests-needed label depending on codecov status
# comment to point the user writing test cases
# comment in case of success
- filters:
open: true
pull_request:
mergeable: true
status:
context: "codecov/patch/integration"
ensure:
value: "{{status.state}}"
equals: "success"
label: "PR: tests-needed"
actions:
label:
remove: "PR: tests-needed"
comment:
identifier: "tests-result"
message: |-
The minimum test ratio has been reached. Thanks!
- filters:
open: true
pull_request:
mergeable: true
status:
context: "codecov/patch/integration"
ensure:
value: "{{status.state}}"
equals: "failure"
actions:
label:
add: "PR: tests-needed"
- filters:
open: true
pull_request:
mergeable: true
status:
context: "codecov/patch/integration"
ensure:
value: "{{status.state}}"
equals: "failure"
age:
value: "{{status.created_at}}"
minimum: 1h
permission: "read|none"
actions:
comment:
identifier: "tests-result"
message: |-
It looks like this Pull Request doesn't include [enough test cases]({{status.target_url}}) (based on Code Coverage analysis of the PR diff).
A PR need to be covered by tests if you add a new feature (we want to make sure that your feature is working) or if you fix a bug (we want to make sure that we don't run into a regression in future).
@{{issue.user.login}} Please check if this is appliable to your PR and if you can add more test cases.
Read the [test readme](https://github.com/webpack/webpack/blob/main/test/README.md) for details how to write test cases.
# 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
permission:
user: "{{review.user.login}}"
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
permission:
user: "{{review.user.login}}"
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
permission:
user: "{{review.user.login}}"
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 non-main, webpack-4 and next label to pull request to other branch
- filters:
pull_request:
base_ref: "^main$"
actions:
label:
remove:
- "PR: next"
- "PR: webpack-4"
- "PR: non-main"
- filters:
pull_request:
base_ref: "^next$"
actions:
label:
add: "PR: next"
remove:
- "PR: webpack-4"
- "PR: non-main"
- filters:
pull_request:
base_ref: "^webpack-4$"
actions:
label:
add: "PR: webpack-4"
remove:
- "PR: next"
- "PR: non-main"
- filters:
pull_request:
base_ref: "^(?!main$)(?!webpack-4$)(?!next$)"
actions:
label:
add: "PR: non-main"
remove:
- "PR: next"
- "PR: webpack-4"
# add non-main label to pull request to other branch
- filters:
open: true
age:
minimum: 1d
maximum: 1w
pull_request:
head_ref: "^main$"
permission: "read|none"
actions:
comment:
identifier: "head-main"
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 `main` 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.*
# skip CLA for dependabot
- filters:
open: true
pull_request:
author: "^dependabot(-preview)?\\[bot\\]$"
status:
context: "licence/cla"
state: "pending"
actions:
status:
context: "licence/cla"
description: "Contributor License Agreement is not needed for this user."
state: "success"
# merge dependabot PRs automatically
- filters:
open: true
pull_request:
author: "^dependabot(-preview)?\\[bot\\]$"
mergeable_state: clean
merged: false
label: "PR: CI-ok"
actions:
merge: true
# add "Send a PR" label when somebody with write permission say it
- filters:
open: true
comment: "[Ss]end a [Pp][Rr]"
permission:
user: "{{comment.actor.login}}"
actions:
label: "Send 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}}. Original 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: 13w # three months
actions:
comment:
identifier: inactive-warning
message: |-
**This issue had no activity for at least three months.**
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: 13w # three months
actions:
label:
remove:
- inactive
- filters:
open: true
label: inactive
last_action_age:
minimum: 15d
includeBotActions: true
actions:
close: true
comment:
identifier: 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.
# Add action actions box to each pull request
- filters:
pull_request: true
open: true
not:
comment:
matching: admin-actions
author: webpack-bot
actions:
comment:
identifier: admin-actions
message: |-
*For maintainers only:*
* [ ] <!-- document --> This needs to be documented (issue in webpack/webpack.js.org will be filed when merged)
* [ ] <!-- webpack-4-backport --> This needs to be backported to webpack 4 (issue will be created when merged)
# When a pull request need to be documented, create an issue in webpack/webpack.js.org when merged
- filters:
pull_request:
merged: true
comment:
author: webpack-bot
matching: "\\* \\[x\\] <!-- document -->"
not:
comment_1:
author: webpack-bot
matching: admin-action-document-executed
actions:
new_issue:
target: webpack/webpack.js.org
title: "Document webpack change: {{{pull_request.title}}}"
body: |-
<!-- documentation request from webpack/webpack -->
*A pull request by @{{pull_request.user.login}} was merged and maintainers requested a documentation change.*
See pull request: {{{pull_request.html_url}}}
---
{{{pull_request.body}}}
comment:
identifier: admin-action-document-executed
message: |-
I've created an issue to document this in webpack/webpack.js.org.
# When a pull request need to be backported, create an issue in webpack/webpack when merged
- filters:
pull_request:
merged: true
comment:
author: webpack-bot
matching: "\\* \\[x\\] <!-- webpack-4-backport -->"
not:
comment_1:
author: webpack-bot
matching: admin-action-webpack-4-backport-executed
actions:
new_issue:
target: webpack/webpack
title: "Backport to webpack 4: {{{pull_request.title}}}"
body: |-
{{{pull_request.html_url}}} needs to be backported to webpack 4.
Send a PR.
cc @{{pull_request.user.login}}
comment:
identifier: admin-action-webpack-4-backport-executed
message: |-
I've created an issue to backport this.
# Ask for tags on new issues
- filters:
open: true
issue: true
age:
maximum: 1w
any:
not_1:
any:
label_1: webpack-4
label_2: webpack-5
not_2:
any:
label_1: bug
label_2: critical-bug
label_3: enhancement
label_4: documentation
label_5: performance
label_6: dependencies
label_7: question
not:
comment:
author: webpack-bot
matching: admin-actions
actions:
comment:
identifier: admin-actions
edit: true
message: |-
*For maintainers only:*
* [ ] webpack-4
* [ ] webpack-5
* [ ] bug
* [ ] critical-bug
* [ ] enhancement
* [ ] documentation
* [ ] performance
* [ ] dependencies
* [ ] question
# Apply selected tags
- filters:
open: true
issue: true
comment:
author: webpack-bot
matching: "\\* \\[x\\] webpack-4"
actions:
label: webpack-4
- filters:
open: true
issue: true
comment:
author: webpack-bot
matching: "\\* \\[x\\] webpack-5"
actions:
label: webpack-5
- filters:
open: true
issue: true
comment:
author: webpack-bot
matching: "\\* \\[x\\] bug"
actions:
label: bug
- filters:
open: true
issue: true
comment:
author: webpack-bot
matching: "\\* \\[x\\] critical-bug"
actions:
label: critical-bug
- filters:
open: true
issue: true
comment:
author: webpack-bot
matching: "\\* \\[x\\] enhancement"
actions:
label: enhancement
- filters:
open: true
issue: true
comment:
author: webpack-bot
matching: "\\* \\[x\\] performance"
actions:
label: performance
- filters:
open: true
issue: true
comment:
author: webpack-bot
matching: "\\* \\[x\\] dependencies"
actions:
label: dependencies
- filters:
open: true
issue: true
comment:
author: webpack-bot
matching: "\\* \\[x\\] question"
actions:
label: question
# Remove question about tags again
- filters:
open: true
issue: true
any_1:
label_1: webpack-4
label_2: webpack-5
any_2:
label_1: bug
label_2: critical-bug
label_3: enhancement
label_4: documentation
label_5: performance
label_6: dependencies
label_7: question
comment:
author: webpack-bot
matching: admin-actions
actions:
schedule: 30s
- filters:
open: true
issue: true
any_1:
label_1: webpack-4
label_2: webpack-5
any_2:
label_1: bug
label_2: critical-bug
label_3: enhancement
label_4: documentation
label_5: performance
label_6: dependencies
label_7: question
comment:
author: webpack-bot
matching: admin-actions
last_action_age:
minimum: 30s
includeBotActions: true
actions:
comment:
identifier: admin-actions
message: ""
# Check open issues and pull requests every day
- filters:
open: true
actions:
schedule: 1d