Process bots used for automating the development and deployment CI pipeline.
This README aims to get the reader up to speed with both running and developing ProcBots.
Run npm install
in the root resin-procbots
repository.
ProcBots uses a dynamic loader to execute its Client Bots. The PROCBOT_BOTS_TO_LOAD
environment variable needs to be set to a valid ProcBot instance (the name of which corresponds to the bot names in lib/bots
, eg. versionbot
).
Other environment variables are required depending on the ProcBot being executed. Please see the section at the bottom of this README which has links to each individual bots own documentation.
resin-on-resin
DeploymentCreate new app, add appropriate git remote for resin.io.
gulp build
git push resin master
Appropriate environment variables are required before execution. See below.
Deploying to a local K8 cluster (or to an already existing environment) requires a bit of implicit knowledge. A framework for doing this within Resin exists. Please speak to DevOps.
PROCBOT_BOTS_TO_LOAD=<name> npm start
If the Client Bot listens to an external service (eg. Github, Front, Discourse, etc), then those services should have their webhook endpoints set to your local machine. This can be achieved via a proxy, such as ngrok
. For example, the Github ServiceListener for VersionBot
listens on port 4567. Running:
ngrok http 4567
Will produce an HTTPS url (eg. https://12345.ngrok.io) that can then be used as the Github App webhook URL.
Developing ProcBots requires some core knowledge of the concepts behind them, see the Architecture document linked to at the bottom of this README for more information.
Most Client Bots will require secure keys or tokens to operate. These should be passed as environment variables. This allows ProcBots to:
As the latter changes radically between deployment solutions, this allows the ProcBot framework itself to stay agnostic.
Building tasks are implemented in gulp
, and these tasks are defined in the gulpfile.js
file.
gulp build
will:
lib
) into JavaScript (in build
), copying any required definitionsdocs
directory as HTML)Development itself is agnostic, but currently this repository includes a .vscode
directory that has configuration for this editor. This has tasks setup, so buliding from within VSCode will automatically run the gulp
tasks and then launch the ProcBots framework.
Whilst this is a resin.io project, we welcome any contributions to the ProcBots project, including issue reports, ideas for features, new Client Bots, etc.
The full architecture documentation.
Generated using TypeDoc