The Bot Butler is a collection of scripts for Hubot that have been built and tested against Symphony, using the Hubot Symphony adapter.
Scripts can be tested locally or deployed as a Docker container; additional scripts can be easily defined and distributed.
git clone https://github.com/symphonyoss/bot-butler.git ; cd bot-butler - Checkout the bot-butler projectcp env.sh.sample env.sh - Configure environment variables (more on configuration below)npm install - Install all project dependencies (in ./node_modules folder)npm run generate-hubot - Generate the hubot butler bot in ./butler-build folder; if the ./butler-build already exists, it won't be overriddennpm run start-bot-butler - Run itTo clean the generated bot simply type npm run clean; to know more about npm run scripts, checkout package.json.
Please note that, between steps 5 and 6, you can edit the ./butler-build contents, change dependency versions, add more hubot scripts dependencies and more; alternatively, you can edit bootstrap/build.sh to add any configuration step after the yo command.
docker build -t butler:v0.9.0 .docker run butler:v0.9.0The root folder of the project will be mounted on /home/butler; as such, the following folder will be inherited by default:
src/scripts into /home/butler/butler-build/scripts./env.sh into /home/butler/butler-build/env.sh./certs into /home/butler/butler-build/certsTo override default values, use the following syntax:
docker run -v /myscripts:/home/butler/scripts -v /mycerts:/home/butler/certs butler:v0.9.0
To check the Docker image contents, without launching the bot, run:
docker run -it --entrypoint /bin/bash butler:v0.9.0
Bot configurations are defined by environment variables in env.sh file, located in the root folder of the project; since the file may contain sensitive information, it is ignored by github; a env.sh.sample file is provided to copy from.
Below are the configuration items:
export HUBOT_SYMPHONY_HOST=foundation-dev.symphony.com
export HUBOT_SYMPHONY_KM_HOST=foundation-dev-api.symphony.com
export HUBOT_SYMPHONY_SESSIONAUTH_HOST=foundation-dev-api.symphony.com
export HUBOT_SYMPHONY_AGENT_HOST=foundation-dev-api.symphony.com
Read more on hubot-symphony.
./certs folderexport HUBOT_SYMPHONY_PUBLIC_KEY=./certs/bot-PublicCert.pem
export HUBOT_SYMPHONY_PRIVATE_KEY=./certs/bot-PrivateKey.pem
export HUBOT_SYMPHONY_PASSPHRASE=changeit
If you want to know more about how to generate and register a certificate for your Symphony pod, checkout the Foundation certificate-toolbox; bear in mind that:
HUBOT_SYMPHONY_PUBLIC_KEY must point to user/<bot-name>-cert.pemHUBOT_SYMPHONY_PRIVATE_KEY must point to user/<bot-name>-key.pemuser/<bot-name>-key.pem have no password; set it using openssl rsa-in ./user/<bot-name>-key.pem -out ./user/<bot-name>.key.pem -des3Each script defined in src/scripts) may need some environment variables to be configured, for example:
export HUBOT_JIRA_URL=https://symphonyoss.atlassian.net
export HUBOT_JIRA_USERNAME=username
export HUBOT_JIRA_PASSWORD=password
If your Hubot instance will be behind a Proxy, you will need to follow these instructions prior to a local or Docker run.
bootstrap/start.sh and add - at the beginning of the file - the following statements, which configure NodeJS to use a Proxy server for outbound connections:export http_proxy=http://proxy.company.com:8080
export https_proxy=http://proxy.company.com:8080
src/scripts/_proxy.coffee (underscore is intentional in the naming so the script is loading first!) to forward all HTTP requests:proxy = require 'proxy-agent'
module.exports = (robot) ->
robot.globalHttpOptions.httpAgent =
proxy('http://proxy.company.com:8080', true)
robot.globalHttpOptions.httpsAgent =
proxy('http://proxy.company.com:8080', true)
Want to write your own Hubot script? The best way is to take a look at an existing script and follow the hubot-scripts documentation.
All custom Hubot scripts in src/scripts are included in the bot; to define a sub-set of them, you can define a hubot-scripts.json file, which is created by npm run generate-hubot command and is empty by default.
Any third-party dependencies for scripts need the addition of your package.json otherwise a lot of errors will be thrown during the start up of your hubot. You can find a list of dependencies for a script in the documentation header at the top of the script.
Hubot scripts can be automatically referenced if:
The easiest way is to publish the npm package using hubot-scripts as tag; read more on https://www.npmjs.org/browse/keyword/hubot-scripts
Bot Butler scripts depend on the following components:
The build.sh script invokes Yeoman, which generates a node project from scratch, using the generator-hubot; as such, the package.json dependencies definition doesn't impact the final bot runtime and it's only used to report on dependency metadata, such as security vulnerabilities and license compliance.
The Versioneye dashboard reads the yarn.lock file committed in the root project folder; to update it:
yarn install --forceyarn.lockContent type
Image
Digest
Size
232.3 MB
Last updated
over 9 years ago
docker pull maoo/bot-butler