diff --git a/.travis.yml b/.travis.yml index 3378f68959c..40161397885 100644 --- a/.travis.yml +++ b/.travis.yml @@ -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" + env: JOB_PART=integration + - os: linux + node_js: "6" + env: JOB_PART=integration sudo: false @@ -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 diff --git a/open-bot.yml b/open-bot.yml new file mode 100644 index 00000000000..35a5399eac2 --- /dev/null +++ b/open-bot.yml @@ -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 diff --git a/package.json b/package.json index 93e9d8fdb26..96c26e1d45c 100644 --- a/package.json +++ b/package.json @@ -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": [