From b34f6952fc5988c102848699053cacf53adbaec9 Mon Sep 17 00:00:00 2001 From: Brandon Simmons Date: Wed, 12 Aug 2020 15:43:45 -0400 Subject: [PATCH] Remove 'bulldozer' config, try 'kodiak' for auto-merge see: https://github.com/chdsbd/kodiak The main issue that bit us was not being able to auto update forked branches, also: https://github.com/palantir/bulldozer/issues/66 https://github.com/palantir/bulldozer/issues/145 --- .bulldozer.yml | 110 ------------------------------------------- .kodiak.toml | 125 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+), 110 deletions(-) delete mode 100644 .bulldozer.yml create mode 100644 .kodiak.toml diff --git a/.bulldozer.yml b/.bulldozer.yml deleted file mode 100644 index 21267296be6..00000000000 --- a/.bulldozer.yml +++ /dev/null @@ -1,110 +0,0 @@ -## -## This defines how our `hasura-bulldozer-mergebot` behaves on this repository. -## See: https://github.com/palantir/bulldozer -## -## Comments from the original example config are left here as documentation. -## "HASURA NOTE:" precedes comments about our choices here. -## - -# -# "version" is the configuration version, currently "1". -version: 1 - -# "merge" defines how and when pull requests are merged. If the section is -# missing, bulldozer will consider all pull requests and use default settings. -merge: - # "trigger" defines the set of pull requests considered by bulldozer. If - # the section is missing, bulldozer considers all pull requests not excluded - # by the ignore conditions. - trigger: - # Pull requests with any of these labels (case-insensitive) are added to - # the trigger. - # - # HASURA NOTE: for now switch on only via opt-in with this label: - # CAREFUL!: if untrusted contributors can add labels, this would - # effectively give them write permissions so long as CI passed! - labels: ["auto-update-auto-merge"] - - ################## HASURA CAREFUL!: I think these are all dangerous (see above) - # Pull requests where the body or any comment contains any of these - # substrings are added to the trigger. - # comment_substrings: ["==MERGE_WHEN_READY=="] - - # Pull requests where any comment matches one of these exact strings are - # added to the trigger. - # comments: ["Please merge this pull request!"] - - # Pull requests where the body contains any of these substrings are added - # to the trigger. - # pr_body_substrings: ["==MERGE_WHEN_READY=="] - ################## - - # Pull requests targeting any of these branches are added to the trigger. - # branches: ["develop"] - - # "ignore" defines the set of pull request ignored by bulldozer. If the - # section is missing, bulldozer considers all pull requests. It takes the - # same keys as the "trigger" section. - ignore: - # HASURA NOTE: some existing semantic tags; not sure how widely in use they are: - labels: ["s/do-not-merge", "s/wip"] - # comment_substrings: ["==DO_NOT_MERGE=="] - - # "method" defines the merge method. The available options are "merge", - # "rebase", "squash", and "ff-only". - method: merge - - # Allows the merge method that is used when auto-merging a PR to be different based on the - # target branch. The keys of the hash are the target branch name, and the values are the merge method that - # will be used for PRs targeting that branch. The valid values are the same as for the "method" key. - # Note: If the target branch does not match any of the specified keys, the "method" key is used instead. - branch_method: - # develop: squash - master: merge - - # "options" defines additional options for the individual merge methods. - options: - # "squash" options are only used when the merge method is "squash" - # squash: - # # "title" defines how the title of the commit message is created when - # # generating a squash commit. The options are "pull_request_title", - # # "first_commit_title", and "github_default_title". The default is - # # "pull_request_title". - # title: "pull_request_title" - - # # "body" defines how the body of the commit message is created when - # # generating a squash commit. The options are "pull_request_body", - # # "summarize_commits", and "empty_body". The default is "empty_body". - # body: "empty_body" - - # # If "body" is "pull_request_body", then the commit message will be the - # # part of the pull request body surrounded by "message_delimiter" - # # strings. This is disabled (empty string) by default. - # message_delimiter: ==COMMIT_MSG== - - # "required_statuses" is a list of additional status contexts that must pass - # before bulldozer can merge a pull request. This is useful if you want to - # require extra testing for automated merges, but not for manual merges. - # required_statuses: - # - "ci/circleci: ete-tests" - - # If true, bulldozer will delete branches after their pull requests merge. - # - # HASURA NOTE: this is easily undone in the github UI: - delete_after_merge: true - -# "update" defines how and when to update pull request branches. Unlike with -# merges, if this section is missing, bulldozer will not update any pull requests. -update: - # "trigger" defines the set of pull requests that should be updated by - # bulldozer. It accepts the same keys as the trigger in the "merge" block. - # - # HASURA NOTE: we definitely don't want to always update. auto-update - # (without merge) might be convenient and no harm adding it here. - trigger: - labels: ["auto-update-auto-merge", "auto-update"] - - # "ignore" defines the set of pull requests that should not be updated by - # bulldozer. It accepts the same keys as the ignore in the "merge" block. - # ignore: - # labels: ["Do Not Update"] diff --git a/.kodiak.toml b/.kodiak.toml new file mode 100644 index 00000000000..a1cc1fcff0b --- /dev/null +++ b/.kodiak.toml @@ -0,0 +1,125 @@ +## Configuration for auto-merge / auto-update bot +## See: https://kodiakhq.com/ + +# Kodiak's configuration file should be placed at `.kodiak.toml` (repository +# root) or `.github/.kodiak.toml`. +# docs: https://kodiakhq.com/docs/config-reference + +# version is the only required setting in a kodiak config. +# `1` is the only valid setting for this field. +version = 1 + +[merge] +# Label to enable Kodiak to merge a PR. + +# By default, Kodiak will only act on PRs that have this label. You can disable +# this requirement via `merge.require_automerge_label`. +automerge_label = "auto-update-auto-merge" + +# Require that the automerge label (`merge.automerge_label`) be set for Kodiak +# to merge a PR. +# +# When disabled, Kodiak will immediately attempt to merge any PR that passes all +# GitHub branch protection requirements. +require_automerge_label = true + +# If a PR's title matches this regex, Kodiak will not merge the PR. This is +# useful to prevent merging work-in-progress PRs. +# +# Setting `merge.blocking_title_regex = ""` disables this option. +blocking_title_regex = "" # default: "^WIP:.*", options: "" (disables regex), a regex string (e.g. ".*DONT\s*MERGE.*") + +# Kodiak will not merge a PR with any of these labels. +blocking_labels = ["s/do-not-merge", "s/wip"][] # default: [] + +# Choose merge method for Kodiak to use. +# +# Kodiak will report a configuration error if the selected merge method is +# disabled for a repository. +# +# If you're using the "Require signed commits" GitHub Branch Protection setting +# to require commit signatures, "merge" or "squash" are the only compatible options. "rebase" will cause Kodiak to raise a configuration error. +method = "merge" # default: "merge", options: "merge", "squash", "rebase" + +# Once a PR is merged, delete the branch. This option behaves like the GitHub +# repository setting "Automatically delete head branches", which automatically +# deletes head branches after pull requests are merged. +delete_branch_on_merge = true # default: false + +# If there is a merge conflict, make a comment on the PR and remove the +# automerge label. This option only applies when `merge.require_automerge_label` +# is enabled. +notify_on_conflict = true # default: true + +# Don't wait for in-progress status checks on a PR to finish before updating the +# branch. +optimistic_updates = true # default: true + +# Don't wait for specified status checks when merging a PR. If a configured +# status check is incomplete when a PR is being merged, Kodiak will skip the PR. +# Use this option for status checks that run indefinitely, like deploy jobs or +# the WIP GitHub App. +dont_wait_on_status_checks = [] # default: [], options: list of check names (e.g. ["ci/circleci: lint_api"]) + +# If a PR is passing all checks and is able to be merged, merge it without +# placing it in the merge queue. This option adds some unfairness where PRs +# waiting in the queue the longest are not served first. +prioritize_ready_to_merge = true # default: false + +# Never merge a PR. This option can be used with `update.always` to +# automatically update a PR without merging. +do_not_merge = false # default: false + +[merge.message] +# By default (`"github_default"`), GitHub uses the title of a PR's first commit +# for the merge commit title. `"pull_request_title"` uses the PR title for the +# merge commit. +title = "github_default" # default: "github_default", options: "github_default", "pull_request_title" + +# By default (`"github_default"`), GitHub combines the titles of a PR's commits +# to create the body text of a merge commit. `"pull_request_body"` uses the +# content of the PR to generate the body content while `"empty"` sets an empty +# body. +body = "github_default" # default: "github_default", options: "github_default", "pull_request_body", "empty" + +# Append the Pull Request URL to the merge message. Makes navigating to the PR +# from the commit easier. +include_pull_request_url = true # default: false + +# Add the PR number to the merge commit title. This setting replicates GitHub's +# behavior of automatically adding the PR number to the title of merges created +# through the UI. This option only applies when `merge.message.title` does not +# equal `"github_default"`. +include_pr_number = true # default: true + +# Control the text used in the merge commit. The GitHub default is markdown, but +# `"plain_text"` or `"html"` can be used to render the pull request body as text +# or HTML. This option only applies when `merge.message.body = "pull_request_body"`. +body_type = "markdown" # default: "markdown", options: "plain_text", "markdown", "html" + + +# Strip HTML comments (``) from merge commit body. +# This setting is useful for stripping HTML comments created by PR templates. +# This option only applies when `merge.message.body_type = "markdown"`. +strip_html_comments = false # default: false + +[update] + +# Update a PR whenever out of date with the base branch. The PR will be updated +# regardless of merge requirements (e.g. failing status checks, missing reviews, +# blacklist labels). +# +# Kodiak will only update PRs with the `merge.automerge_label` label or if +# `update.require_automerge_label = false`. +# +# When enabled, _Kodiak will not be able to efficiently update PRs._ If you have +# multiple PRs against a target like `master`, any time a commit is added to +# `master` _all_ of those PRs against `master` will update. For `N` PRs against +# a target you will see at least `N(N-1)/2` updates. If this configuration +# option was disabled you would only see at least `N-1` updates. +always = false # default: false + +# When enabled, Kodiak will only update PRs that have an automerge label +# (configured via `merge.automerge_label`). When disable, Kodiak will update any +# PR. This option only applies when `update.always = true`. +require_automerge_label = true # default: true