All Projects → probot → probot-config

probot / probot-config

Licence: BSD-3-Clause License
A Probot extension to easily share configs between repositories.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to probot-config

serverless-gcf
An extension for running Probot on Google Cloud Functions
Stars: ✭ 15 (-76.19%)
Mutual labels:  probot, probot-extension
commands
A Probot extension that adds slash commands to GitHub
Stars: ✭ 54 (-14.29%)
Mutual labels:  probot, probot-extension
scheduler
⚠️ Archived
Stars: ✭ 46 (-26.98%)
Mutual labels:  probot, probot-extension
probot-messages
Probot extension for communicating with repository maintainers
Stars: ✭ 13 (-79.37%)
Mutual labels:  probot, probot-extension
background-check
A GitHub App built with probot that peforms a "background check" to identify users who have been toxic in the past, and shares their toxic activity in the maintainer’s repo.
Stars: ✭ 27 (-57.14%)
Mutual labels:  probot
branch-switcher
a GitHub bot that switches the base branch of pull requests to the preferred branch
Stars: ✭ 15 (-76.19%)
Mutual labels:  probot
scalafmt-probot
🤖Github bot for checking code formatting with scalafmt
Stars: ✭ 15 (-76.19%)
Mutual labels:  probot
GitMe
A fun workshop exercise for taking first steps on submiting a Pull Request on GitHub
Stars: ✭ 16 (-74.6%)
Mutual labels:  probot
node
npm's fork of nodejs/node, for sending PRs to update deps/npm
Stars: ✭ 30 (-52.38%)
Mutual labels:  probot
prosebot
🤖🔊 Probot App to help you write better on GitHub.
Stars: ✭ 46 (-26.98%)
Mutual labels:  probot
issuelabeler
A GitHub bot to label issues automatically based on title and body against list of defined labels. System status (https://status.verticalaxisbd.com/)
Stars: ✭ 23 (-63.49%)
Mutual labels:  probot
linter-alex
📝Sensitive, considerate writing before you merge your Pull Requests
Stars: ✭ 67 (+6.35%)
Mutual labels:  probot
dont-merge
Prevent merging of Pull Requests with a custom label selected on labels area.
Stars: ✭ 26 (-58.73%)
Mutual labels:  probot
new-pr-welcome
Welcome users when they open their first PR in your repository
Stars: ✭ 20 (-68.25%)
Mutual labels:  probot
merge-me
A GitHub app that merges your pull requests once all required checks pass.
Stars: ✭ 19 (-69.84%)
Mutual labels:  probot
probot-lambda
Test for running probot in AWS Lambda
Stars: ✭ 25 (-60.32%)
Mutual labels:  probot
probot-semver
A GitHub app that provides automatic semantic versioning support
Stars: ✭ 15 (-76.19%)
Mutual labels:  probot
probot-issue-duplicate-detection
A probot plugin for automatic issue duplicate detection
Stars: ✭ 31 (-50.79%)
Mutual labels:  probot
PROBOT Anno
ROS Packages for PROBOT Anno.
Stars: ✭ 75 (+19.05%)
Mutual labels:  probot
react-preview
a GitHub App built with probot that generates preview links for react based projects.
Stars: ✭ 14 (-77.78%)
Mutual labels:  probot

This project has been moved to Probot core

This project has been merged into Probot itself as part of the core context.config helper. Any future development takes place there.

Probot: Config

Downloads version License Build Status

A Probot extension to easily share configs between repositories.

Setup

Just put common configuration keys in a common repository within your organization. Then reference this repository from config files with the same name.

# octocat/probot-settings:.github/test.yaml
shared1: will be merged
shared2: will also be merged

# octocat/repo1:.github/test.yaml
_extends: probot-settings
other: AAA

# octocat/repo2:.github/test.yaml
_extends: probot-settings
shared2: overrides shared2
other: BBB

# octocat/repo3:.github/test.yaml
other: CCC # standalone, does not extend other configs

Configs are deeply-merged. Nested objects do not have to be redefined completely. This is accomplished using deepmerge. When using probot-config in an app, you can pass options through to deepmerge.

You can also reference configurations from other organizations:

_extends: other/probot-settings
other: DDD

Additionally, you can specify a specific path for the configuration by appending a colon after the project.

_extends: probot-settings:.github/other_test.yaml
other: FFF

Inherited configurations are in the exact same location within the repositories.

# octocat/repo1:.github/test.yaml
_extends: .github
other: GGG

# octocat/.github:test.yaml
other: HHH

Additionally, if there is no config file, but there is a repo in the org named .github, it will be used as a base repository.

# octocat/repo1:.github/test.yaml <-- missing!
# octocat/.github:.github/test.yaml
other: III

Recipes

These recipes are specific to usage of the .github repo name, which is the recommended place to store your configuration files. Within the .github repository, your configuration must live in a .github/ folder.

An opt-in pattern

You may want to create a configuration that other projects in your org inherit from on an explicit opt-in basis. Example:

# octocat/.github:.github/_test.yaml
shared1: Will be inherited by repo1 and not repo2

# octocat/repo1:.github/test.yaml
# Inherits from octocat/.github:_test.yaml
_extends: .github:_test.yaml
# octocat/repo3:.github/test.yaml <--missing!
# Is not merged with another config.

An opt-out pattern

Alternatively, you may want to default to the config in your .github project and occasionally opt-out. Example:

# octocat/.github:.github/test.yaml
shared1: Will be inherited by repo1 and not repo2
# octocat/repo1:.github/test.yaml <-- missing!
# Uses octocat/.github:test.yaml instead

# octocat/repo3:.github/test.yaml <-- either empty or populated
# Will not inherit shared1, since no _extends field is specified

Usage

const getConfig = require('probot-config');

module.exports = robot => {
  robot.on('push', async context => {
    // Will look for 'test.yml' inside the '.github' folder
    const config = await getConfig(context, 'test.yml');
  });
};

Development

# Install dependencies
npm install

# Run the bot
npm start

# Run test watchers
npm run test:watch

We use prettier for auto-formatting and eslint as linter. Both tools can automatically fix a lot of issues for you. To invoke them, simply run:

npm run fix

It is highly recommended to use VSCode and install the suggested extensions. They will configure your IDE to match the coding style, invoke auto formatters every time you save and run tests in the background for you. No need to run the watchers manually.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].