diff --git a/Dockerfile b/Dockerfile index 9f64cad..dc02899 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,9 @@ -FROM node +FROM docker.io/lsstsqre/sqrbot:0.10.5 MAINTAINER sqre-admin LABEL description="LSST DM-SQuaRE Hubot Automation" \ name="lsstsqre/sqrbot" -USER root -RUN useradd -d /home/hubot -m hubot -COPY external-scripts.json package.json /home/hubot/ -RUN chown -R hubot /home/hubot/* USER hubot WORKDIR /home/hubot -RUN npm install # # You will need to set HUBOT_SLACK_TOKEN in order for this to work. # @@ -19,9 +14,7 @@ RUN npm install # LSST_JIRA_USER # LSST_JIRA_PWD # -RUN mkdir scripts COPY scripts/ scripts/ -ENV PATH /usr/local/bin:/usr/bin:/bin:/home/hubot/node_modules/.bin CMD hubot -a slack -ARG VERSION="0.10.6" +ARG VERSION="0.11.1" LABEL version="$VERSION" diff --git a/Dockerfile.og b/Dockerfile.og new file mode 100644 index 0000000..9f64cad --- /dev/null +++ b/Dockerfile.og @@ -0,0 +1,27 @@ +FROM node +MAINTAINER sqre-admin +LABEL description="LSST DM-SQuaRE Hubot Automation" \ + name="lsstsqre/sqrbot" +USER root +RUN useradd -d /home/hubot -m hubot +COPY external-scripts.json package.json /home/hubot/ +RUN chown -R hubot /home/hubot/* +USER hubot +WORKDIR /home/hubot +RUN npm install +# +# You will need to set HUBOT_SLACK_TOKEN in order for this to work. +# +# For the scripts to all work you will want: +# HUBOT_GITHUB_USER +# HUBOT_GITHUB_TOKEN +# HUBOT_GITHUB_PASSWORD +# LSST_JIRA_USER +# LSST_JIRA_PWD +# +RUN mkdir scripts +COPY scripts/ scripts/ +ENV PATH /usr/local/bin:/usr/bin:/bin:/home/hubot/node_modules/.bin +CMD hubot -a slack +ARG VERSION="0.10.6" +LABEL version="$VERSION" diff --git a/README.md b/README.md index 0a6a574..9c12424 100644 --- a/README.md +++ b/README.md @@ -1,220 +1,12 @@ # Sqrbot -Sqrbot is a chat bot built on the [Hubot][hubot] framework. It was -initially generated by [generator-hubot][generator-hubot], and configured to be -deployed on [Heroku][heroku] to get you up and running as quick as possible. +Sqrbot is a chat bot built on the [Hubot][hubot] framework. The only +important function it still provides is unfurling Jira ticket links. ## IMPORTANT NOTE -You need Coffeescript 1.x to run Hubot, but its dependencies don't -specify that. Use the included, frozen, package-lock.json, and update -the top-level versions there and in package.json by hand. +We're totally cheating. The dependencies broke, and we haven't been +able to get a working fresh build that actually functions since 0.10.5. -This README is intended to help get you started. Definitely update and improve -to talk about your own instance, how to use and deploy, what functionality is -available, etc! - -[heroku]: http://www.heroku.com -[hubot]: http://hubot.github.com -[generator-hubot]: https://github.com/github/generator-hubot - -### Running Sqrbot Locally - -You can test your hubot by running the following, however some plugins will not -behave as expected unless the [environment variables](#configuration) they rely -upon have been set. - -You can start Sqrbot locally by running: - - % bin/hubot - -You'll see some start up output and a prompt: - - [Sat Feb 28 2015 12:38:27 GMT+0000 (GMT)] INFO Using default redis on localhost:6379 - Sqrbot> - -Then you can interact with Sqrbot by typing `Sqrbot help`. - - Sqrbot> Sqrbot help - Sqrbot animate me - The same thing as `image me`, except adds [snip] - Sqrbot help - Displays all of the help commands that Sqrbot knows about. - ... - -### Configuration - -A few scripts (including some installed by default) require environment -variables to be set as a simple form of configuration. - -Each script should have a commented header which contains a "Configuration" -section that explains which values it requires to be placed in which variable. -When you have lots of scripts installed this process can be quite labour -intensive. The following shell command can be used as a stop gap until an -easier way to do this has been implemented. - - grep -o 'hubot-[a-z0-9_-]\+' external-scripts.json | \ - xargs -n1 -I {} sh -c 'sed -n "/^# Configuration/,/^#$/ s/^/{} /p" \ - $(find node_modules/{}/ -name "*.coffee")' | \ - awk -F '#' '{ printf "%-25s %s\n", $1, $2 }' - -How to set environment variables will be specific to your operating system. -Rather than recreate the various methods and best practices in achieving this, -it's suggested that you search for a dedicated guide focused on your OS. - -### Scripting - -An example script is included at `scripts/example.coffee`, so check it out to -get started, along with the [Scripting Guide][scripting-docs]. - -For many common tasks, there's a good chance someone has already one to do just -the thing. - -[scripting-docs]: https://github.com/github/hubot/blob/master/docs/scripting.md - -### external-scripts - -There will inevitably be functionality that everyone will want. Instead of -writing it yourself, you can use existing plugins. - -Hubot is able to load plugins from third-party `npm` packages. This is the -recommended way to add functionality to your hubot. You can get a list of -available hubot plugins on [npmjs.com][npmjs] or by using `npm search`: - - % npm search hubot-scripts panda - NAME DESCRIPTION AUTHOR DATE VERSION KEYWORDS - hubot-pandapanda a hubot script for panda responses =missu 2014-11-30 0.9.2 hubot hubot-scripts panda - ... - - -To use a package, check the package's documentation, but in general it is: - -1. Use `npm install --save` to add the package to `package.json` and install it -2. Add the package name to `external-scripts.json` as a double quoted string - -You can review `external-scripts.json` to see what is included by default. - -##### Advanced Usage - -It is also possible to define `external-scripts.json` as an object to -explicitly specify which scripts from a package should be included. The example -below, for example, will only activate two of the six available scripts inside -the `hubot-fun` plugin, but all four of those in `hubot-auto-deploy`. - -```json -{ - "hubot-fun": [ - "crazy", - "thanks" - ], - "hubot-auto-deploy": "*" -} -``` - -**Be aware that not all plugins support this usage and will typically fallback -to including all scripts.** - -[npmjs]: https://www.npmjs.com - -### hubot-scripts - -Before hubot plugin packages were adopted, most plugins were held in the -[hubot-scripts][hubot-scripts] package. Some of these plugins have yet to be -migrated to their own packages. They can still be used but the setup is a bit -different. - -To enable scripts from the hubot-scripts package, add the script name with -extension as a double quoted string to the `hubot-scripts.json` file in this -repo. - -[hubot-scripts]: https://github.com/github/hubot-scripts - -## Persistence - -If you are going to use the `hubot-redis-brain` package (strongly suggested), -you will need to add the Redis to Go addon on Heroku which requires a verified -account or you can create an account at [Redis to Go][redistogo] and manually -set the `REDISTOGO_URL` variable. - - % heroku config:add REDISTOGO_URL="..." - -If you don't need any persistence feel free to remove the `hubot-redis-brain` -from `external-scripts.json` and you don't need to worry about redis at all. - -[redistogo]: https://redistogo.com/ - -## Adapters - -Adapters are the interface to the service you want your hubot to run on, such -as Campfire or IRC. There are a number of third party adapters that the -community have contributed. Check [Hubot Adapters][hubot-adapters] for the -available ones. - -If you would like to run a non-Campfire or shell adapter you will need to add -the adapter package as a dependency to the `package.json` file in the -`dependencies` section. - -Once you've added the dependency with `npm install --save` to install it you -can then run hubot with the adapter. - - % bin/hubot -a - -Where `` is the name of your adapter without the `hubot-` prefix. - -[hubot-adapters]: https://github.com/github/hubot/blob/master/docs/adapters.md - -## Deployment - - % heroku create --stack cedar - % git push heroku master - -If your Heroku account has been verified you can run the following to enable -and add the Redis to Go addon to your app. - - % heroku addons:add redistogo:nano - -If you run into any problems, checkout Heroku's [docs][heroku-node-docs]. - -You'll need to edit the `Procfile` to set the name of your hubot. - -More detailed documentation can be found on the [deploying hubot onto -Heroku][deploy-heroku] wiki page. - -### Deploying to UNIX or Windows - -If you would like to deploy to either a UNIX operating system or Windows. -Please check out the [deploying hubot onto UNIX][deploy-unix] and [deploying -hubot onto Windows][deploy-windows] wiki pages. - -[heroku-node-docs]: http://devcenter.heroku.com/articles/node-js -[deploy-heroku]: https://github.com/github/hubot/blob/master/docs/deploying/heroku.md -[deploy-unix]: https://github.com/github/hubot/blob/master/docs/deploying/unix.md -[deploy-windows]: https://github.com/github/hubot/blob/master/docs/deploying/windows.md - -## Campfire Variables - -If you are using the Campfire adapter you will need to set some environment -variables. If not, refer to your adapter documentation for how to configure it, -links to the adapters can be found on [Hubot Adapters][hubot-adapters]. - -Create a separate Campfire user for your bot and get their token from the web -UI. - - % heroku config:add HUBOT_CAMPFIRE_TOKEN="..." - -Get the numeric IDs of the rooms you want the bot to join, comma delimited. If -you want the bot to connect to `https://mysubdomain.campfirenow.com/room/42` -and `https://mysubdomain.campfirenow.com/room/1024` then you'd add it like -this: - - % heroku config:add HUBOT_CAMPFIRE_ROOMS="42,1024" - -Add the subdomain hubot should connect to. If you web URL looks like -`http://mysubdomain.campfirenow.com` then you'd add it like this: - - % heroku config:add HUBOT_CAMPFIRE_ACCOUNT="mysubdomain" - -[hubot-adapters]: https://github.com/github/hubot/blob/master/docs/adapters.md - -## Restart the bot - -You may want to get comfortable with `heroku logs` and `heroku restart` if -you're having issues. +So...we're cheating. The Docker image now starts with 0.10.5 and only +updates our own script. The "real" Dockerfile is in Dockerfile.og.