- Notifications
You must be signed in to change notification settings - Fork25
A Probot extension to easily share configs between repositories.
License
probot/probot-config
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
This project has been merged intoProbot itself as part of the corecontext.config helper. Any future development takes place there.
AProbot extension to easily share configs betweenrepositories.
Just put common configuration keys in a common repository within yourorganization. Then reference this repository from config files with the samename.
# octocat/probot-settings:.github/test.yamlshared1:will be mergedshared2:will also be merged# octocat/repo1:.github/test.yaml_extends:probot-settingsother:AAA# octocat/repo2:.github/test.yaml_extends:probot-settingsshared2:overrides shared2other:BBB# octocat/repo3:.github/test.yamlother:CCC# standalone, does not extend other configs
Configs are deeply-merged. Nested objects do not have to be redefinedcompletely. This is accomplished usingdeepmerge. When using probot-config in an app, you can passoptions through todeepmerge.
You can also reference configurations from other organizations:
_extends:other/probot-settingsother:DDD
Additionally, you can specify a specific path for the configuration byappending a colon after the project.
_extends:probot-settings:.github/other_test.yamlother:FFF
Inherited configurations are in theexact same location within therepositories.
# octocat/repo1:.github/test.yaml_extends:.githubother:GGG# octocat/.github:test.yamlother: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.yamlother:III
These recipes are specific to usage of the .github repo name, which is therecommended place to store your configuration files. Within the .github repository,your configuration must live in a.github/ folder.
You may want to create a configuration that other projects in your org inheritfrom on an explicit opt-in basis. Example:
# octocat/.github:.github/_test.yamlshared1: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.
Alternatively, you may want to default to the config in your.github projectand occasionally opt-out. Example:
# octocat/.github:.github/test.yamlshared1: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
constgetConfig=require('probot-config');module.exports=robot=>{robot.on('push',asynccontext=>{// Will look for 'test.yml' inside the '.github' folderconstconfig=awaitgetConfig(context,'test.yml');});};
# Install dependenciesnpm install# Run the botnpm start# Run test watchersnpm run test:watch
We useprettier for auto-formatting andeslint as linter. Both tools can automatically fix a lotof 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 formattersevery time you save and run tests in the background for you. No need to run thewatchers manually.
About
A Probot extension to easily share configs between repositories.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Contributors14
Uh oh!
There was an error while loading.Please reload this page.