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

docs(configuration): split the configuration example to separate pages per plugin #893

Merged
merged 1 commit into from
Mar 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
193 changes: 19 additions & 174 deletions docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,186 +2,31 @@

Create a `.github/settings.yml` file in your repository. Changes to this file on the default branch will be synced to GitHub.

All top-level settings are optional. Some plugins do have required fields.
## Sections

```yaml
# These settings are synced to GitHub by https://probot.github.io/apps/settings/
All sections are optional. Some do have required fields.

repository:
# See https://docs.github.com/en/rest/reference/repos#update-a-repository for all available settings.
Find details about each available section in their own page:

# The name of the repository. Changing this will rename the repository
name: repo-name

# A short description of the repository that will show up on GitHub
description: description of repo

# A URL with more information about the repository
homepage: https://example.github.io/

# A comma-separated list of topics to set on the repository
topics: github, probot

# Either `true` to make the repository private, or `false` to make it public.
private: false

# Either `true` to enable issues for this repository, `false` to disable them.
has_issues: true

# Either `true` to enable projects for this repository, or `false` to disable them.
# If projects are disabled for the organization, passing `true` will cause an API error.
has_projects: true

# Either `true` to enable the wiki for this repository, `false` to disable it.
has_wiki: true

# Either `true` to enable downloads for this repository, `false` to disable them.
has_downloads: true

# Updates the default branch for this repository.
default_branch: master

# Either `true` to allow squash-merging pull requests, or `false` to prevent
# squash-merging.
allow_squash_merge: true

# Either `true` to allow merging pull requests with a merge commit, or `false`
# to prevent merging pull requests with merge commits.
allow_merge_commit: true

# Either `true` to allow rebase-merging pull requests, or `false` to prevent
# rebase-merging.
allow_rebase_merge: true

# Either `true` to enable automatic deletion of branches on merge, or `false` to disable
delete_branch_on_merge: true

# Either `true` to enable automated security fixes, or `false` to disable
# automated security fixes.
enable_automated_security_fixes: true

# Either `true` to enable vulnerability alerts, or `false` to disable
# vulnerability alerts.
enable_vulnerability_alerts: true

# Labels: define labels for Issues and Pull Requests
labels:
- name: bug
color: CC0000
description: An issue with the system 🐛.

- name: feature
# If including a `#`, make sure to wrap it with quotes!
color: '#336699'
description: New functionality.

- name: Help Wanted
# Provide a new name to rename an existing label
new_name: first-timers-only

# Milestones: define milestones for Issues and Pull Requests
milestones:
- title: milestone-title
description: milestone-description
# The state of the milestone. Either `open` or `closed`
state: open

# Collaborators: give specific users access to this repository.
# See https://docs.github.com/en/rest/reference/repos#add-a-repository-collaborator for available options
collaborators:
# - username: bkeepers
# permission: push
# - username: hubot
# permission: pull

# Note: `permission` is only valid on organization-owned repositories.
# The permission to grant the collaborator. Can be one of:
# * `pull` - can pull, but not push to or administer this repository.
# * `push` - can pull and push, but not administer this repository.
# * `admin` - can pull, push and administer this repository.
# * `maintain` - Recommended for project managers who need to manage the repository without access to sensitive or destructive actions.
# * `triage` - Recommended for contributors who need to proactively manage issues and pull requests without write access.

# See https://docs.github.com/en/rest/deployments/environments#create-or-update-an-environment for available options
# Note: deployment_branch_policy differs from the API for ease of use.
# Either protected_branches (boolean) OR custom_branches (array of strings) can be provided;
# this will manage the API requirements under the hood.
# See https://docs.github.com/en/rest/deployments/branch-policies for documentation of custom_branches.
# If both are provided in an unexpected manner, protected_branches will be used.
# Either removing or simply not setting deployment_branch_policy will restore the default 'All branches' setting.
environments:
- name: production
wait_timer: 5
reviewers:
- id: 1
type: 'Team'
- id: 2
type: 'User'
deployment_branch_policy:
protected_branches: true
- name: development
deployment_branch_policy:
custom_branches:
- main
- dev/*

# See https://docs.github.com/en/rest/reference/teams#add-or-update-team-repository-permissions for available options
teams:
- name: core
# The permission to grant the team. Can be one of:
# * `pull` - can pull, but not push to or administer this repository.
# * `push` - can pull and push, but not administer this repository.
# * `admin` - can pull, push and administer this repository.
# * `maintain` - Recommended for project managers who need to manage the repository without access to sensitive or destructive actions.
# * `triage` - Recommended for contributors who need to proactively manage issues and pull requests without write access.
permission: admin
- name: docs
permission: push

branches:
- name: master
# https://docs.github.com/en/rest/reference/repos#update-branch-protection
# Branch Protection settings. Set to null to disable
protection:
# Required. Require at least one approving review on a pull request, before merging. Set to null to disable.
required_pull_request_reviews:
# The number of approvals required. (1-6)
required_approving_review_count: 1
# Dismiss approved reviews automatically when a new commit is pushed.
dismiss_stale_reviews: true
# Blocks merge until code owners have reviewed.
require_code_owner_reviews: true
# Specify which users and teams can dismiss pull request reviews. Pass an empty dismissal_restrictions object to disable. User and team dismissal_restrictions are only available for organization-owned repositories. Omit this parameter for personal repositories.
dismissal_restrictions:
users: []
teams: []
# Required. Require status checks to pass before merging. Set to null to disable
required_status_checks:
# Required. Require branches to be up to date before merging.
strict: true
# Required. The list of status checks to require in order to merge into this branch
contexts: []
# Required. Enforce all configured restrictions for administrators. Set to true to enforce required status checks for repository administrators. Set to null to disable.
enforce_admins: true
# Prevent merge commits from being pushed to matching branches
required_linear_history: true
# Required. Restrict who can push to this branch. Team and user restrictions are only available for organization-owned repositories. Set to null to disable.
restrictions:
apps: []
users: []
teams: []
```

### Notes

1. Label color can also start with `#`, e.g. `color: '#F341B2'`. Make sure to wrap it with quotes!
1. Each top-level element under branch protection must be filled (eg: `required_pull_request_reviews`, `required_status_checks`, `enforce_admins` and `restrictions`). If you don't want to use one of them you must set it to `null` (see comments in the example above). Otherwise, none of the settings will be applied.
* [Repository](./plugins/repository.md)
* [Teams](./plugins/teams.md)
* [Collaborators](./plugins/collaborators.md)
* [Branches](./plugins/branches.md)
* [Environments](./plugins/environments.md)
* [Labels](./plugins/labels.md)
* [Milestones](./plugins/milestones.md)

### Inheritance

This app is built with [probot](https://github.com/probot/probot), and thus uses the [octokit-plugin-config](https://github.com/probot/octokit-plugin-config). This means you can inherit settings from another repo, and only override what you want to change.
This app is built with [probot](https://github.com/probot/probot), and thus uses the [octokit-plugin-config](https://github.com/probot/octokit-plugin-config).
This means you can inherit settings from another repo, and only override what you want to change.

Individual settings in the arrays listed under `labels`, `teams` (once it is supported) and `branches` will be merged with the base repo if the `name` of an element in the array matches the `name` of an element in the corresponding array in the base repo. A possible future enhancement would be to make that work for the other settings arrays based on `username`, or `title`. This is not currently supported.
Individual settings in the arrays listed under `labels`, `teams`, and `branches` will be merged with the base repo if the `name` of an element in the array matches the `name` of an element in the corresponding array in the base repo.
A possible future enhancement would be to make that work for the other settings arrays based on `username`, or `title`.
This is not currently supported.

To further clarify: Inheritance within the Protected Branches plugin allows you to override specific settings per branch. For example, your `.github` repo may set default protection on the `master` branch. You can then include `master` in your `branches` array, and only override the `required_approving_review_count`.
#### To further clarify:
Inheritance within the Protected Branches plugin allows you to override specific settings per branch.
For example, your `.github` repo may set default protection on the `master` branch.
You can then include `master` in your `branches` array, and only override the `required_approving_review_count`.
Alternatively, you might only have a branch like `develop` in your `branches` array, and would still get `master` protection from your base repo.
45 changes: 45 additions & 0 deletions docs/plugins/branches.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# Branches

https://docs.github.com/en/rest/reference/repos#update-branch-protection

> [!IMPORTANT]
> Each top-level element under branch protection must be filled (eg:
`required_pull_request_reviews`, `required_status_checks`, `enforce_admins` and
`restrictions`).
If you don't want to use one of them you must set it to `null` (see comments in
the example above).
Otherwise, none of the settings will be applied.

```yaml
branches:
- name: master
# Branch Protection settings. Set to null to disable
protection:
# Required. Require at least one approving review on a pull request, before merging. Set to null to disable.
required_pull_request_reviews:
# The number of approvals required. (1-6)
required_approving_review_count: 1
# Dismiss approved reviews automatically when a new commit is pushed.
dismiss_stale_reviews: true
# Blocks merge until code owners have reviewed.
require_code_owner_reviews: true
# Specify which users and teams can dismiss pull request reviews. Pass an empty dismissal_restrictions object to disable. User and team dismissal_restrictions are only available for organization-owned repositories. Omit this parameter for personal repositories.
dismissal_restrictions:
users: []
teams: []
# Required. Require status checks to pass before merging. Set to null to disable
required_status_checks:
# Required. Require branches to be up to date before merging.
strict: true
# Required. The list of status checks to require in order to merge into this branch
contexts: []
# Required. Enforce all configured restrictions for administrators. Set to true to enforce required status checks for repository administrators. Set to null to disable.
enforce_admins: true
# Prevent merge commits from being pushed to matching branches
required_linear_history: true
# Required. Restrict who can push to this branch. Team and user restrictions are only available for organization-owned repositories. Set to null to disable.
restrictions:
apps: []
users: []
teams: []
```
19 changes: 19 additions & 0 deletions docs/plugins/collaborators.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Collaborators

https://docs.github.com/en/rest/collaborators/collaborators

```yaml
collaborators:
- username: bkeepers
permission: push
- username: hubot
permission: pull

# Note: `permission` is only valid on organization-owned repositories.
# The permission to grant the collaborator. Can be one of:
# * `pull` - can pull, but not push to or administer this repository.
# * `push` - can pull and push, but not administer this repository.
# * `admin` - can pull, push and administer this repository.
# * `maintain` - Recommended for project managers who need to manage the repository without access to sensitive or destructive actions.
# * `triage` - Recommended for contributors who need to proactively manage issues and pull requests without write access.
```
32 changes: 32 additions & 0 deletions docs/plugins/environments.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Environments


See https://docs.github.com/en/rest/deployments/environments#create-or-update-an-environment for available options.

> [!IMPORTANT]
> `deployment_branch_policy` differs from the API for ease of use.
Either `protected_branches` (boolean) OR `custom_branches` (array of strings) can be provided;
this will manage the API requirements under the hood.
>
> See https://docs.github.com/en/rest/deployments/branch-policies for documentation of `custom_branches`.
If both are provided in an unexpected manner, `protected_branches` will be used.
>
> Either removing or simply not setting `deployment_branch_policy` will restore the default 'All branches' setting.

```markdown
environments:
- name: production
wait_timer: 5
reviewers:
- id: 1
type: 'Team'
- id: 2
type: 'User'
deployment_branch_policy:
protected_branches: true
- name: development
deployment_branch_policy:
custom_branches:
- main
- dev/*
```
23 changes: 23 additions & 0 deletions docs/plugins/labels.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Labels

> [!NOTE]
> Label color can start with `#`, e.g. `color: '#F341B2'`.

> [!IMPORTANT]
> If including the `#`, make sure to wrap it with quotes since it would otherwise be treated as a yaml comment!

```yaml
labels:
- name: bug
color: CC0000
description: An issue with the system 🐛.

- name: feature
# If including a `#`, make sure to wrap it with quotes!
color: '#336699'
description: New functionality.

- name: Help Wanted
# Provide a new name to rename an existing label
new_name: first-timers-only
```
11 changes: 11 additions & 0 deletions docs/plugins/milestones.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Milestones

https://docs.github.com/en/rest/issues/milestones#update-a-milestone

```yaml
milestones:
- title: milestone-title
description: milestone-description
# The state of the milestone. Either `open` or `closed`
state: open
```