Skip to content

A Probot extension to easily share configs between repositories.

License

Notifications You must be signed in to change notification settings

cco3/probot-config

 
 

Repository files navigation

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

You can also reference configurations from other organizations:

_extends: other/probot-settings
other: DDD

Note that the files must be at the exact same location within the repositories. Configs are shallow-merged, nested objects have to be redefined completely.

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
yarn

# Run the bot
yarn start

# Run test watchers
yarn 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:

yarn 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.

About

A Probot extension to easily share configs between repositories.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%