1
2
mirror of https://github.com/vimagick/dockerfiles synced 2024-06-28 09:41:20 +00:00

update hubot

This commit is contained in:
kev 2017-01-21 18:51:37 +08:00
parent a59f35451e
commit 829b53ee8c
3 changed files with 71 additions and 12 deletions

@ -2,7 +2,7 @@
# Dockerfile for hubot # Dockerfile for hubot
# #
FROM node:slim FROM alpine
MAINTAINER kev <noreply@easypi.info> MAINTAINER kev <noreply@easypi.info>
ENV HUBOT_NAME=Hubot ENV HUBOT_NAME=Hubot
@ -11,11 +11,9 @@ ENV HUBOT_DESCRIPTION=$HUBOT_NAME-$HUBOT_ADAPTER
ENV HUBOT_SLACK_TOKEN= ENV HUBOT_SLACK_TOKEN=
RUN set -xe \ RUN set -xe \
&& npm install -g coffee-script \ && apk add --update ca-certificates nodejs \
generator-hubot \ && npm install -g yo generator-hubot \
hubot \ && adduser -s /bin/sh -D hubot
yo \
&& useradd -m -s /bin/bash hubot
USER hubot USER hubot
WORKDIR /home/hubot WORKDIR /home/hubot
@ -28,6 +26,7 @@ RUN set -xe \
&& npm install hubot-$HUBOT_ADAPTER --save \ && npm install hubot-$HUBOT_ADAPTER --save \
&& sed -i -r 's/^\s+#//' scripts/example.coffee && sed -i -r 's/^\s+#//' scripts/example.coffee
VOLUME /home/hobot/scripts VOLUME /home/hobot
EXPOSE 8080
CMD ["./bin/hubot", "--adapter", "slack"] CMD ["./bin/hubot", "--adapter", "slack"]

@ -4,7 +4,7 @@ hubot
![](https://badge.imagelayers.io/vimagick/hubot:latest.svg) ![](https://badge.imagelayers.io/vimagick/hubot:latest.svg)
[Hubot][1] is a customizable, life embetterment robot commissioned by github. [Hubot][1] is a customizable, life embetterment robot commissioned by github.
Hubot's power comes through [scripts][3]. Hubot's power comes through [scripts][2].
## docker-compse.yml ## docker-compse.yml
@ -15,11 +15,71 @@ hubot:
- ./data:/home/hubot/scripts - ./data:/home/hubot/scripts
environment: environment:
- HUBOT_SLACK_TOKEN=xoxb-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx - HUBOT_SLACK_TOKEN=xoxb-xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxx
- HUBOT_AUTH_ADMIN=UXXXXXXXX
restart: always restart: always
``` ```
> Goto [here][2] to generate `HUBOT_SLACK_TOKEN`. - Click [this][3] to generate `HUBOT_SLACK_TOKEN`.
- Click [this][4] to get `HUBOT_AUTH_ADMIN`.
## up and running
```bash
$ docker-compose up -d
$ docker-compose exec hubot sh
>>> npm install --save hubot-auth
>>> vi external-scripts.json
>>> exit
$ vi data/example.coffee
$ docker-compose restart
```
```coffee
module.exports = (robot) ->
robot.respond /who is @?([\w .\-]+)\?*$/i, (res) ->
name = res.match[1].trim()
users = robot.brain.usersForFuzzyName(name)
for user in users
delete user['slack']
user = JSON.stringify user, null, 2
res.send "```#{user}```"
robot.respond /shell:?\s+(.+)/i, (res) ->
cmd = res.match[1]
user = robot.brain.userForName(res.message.user.name)
if robot.auth.hasRole(user, ["ops"])
cp = require "child_process"
cp.exec cmd, (error, stdout, stderr) ->
res.send "```#{stdout}```" if stdout
res.send "```#{stderr}```" if stderr
else
res.reply "Access Denied!"
```
## chat-ops
```
kevin [5:25 PM] what roles do I have
hubot [5:25 PM] kevin has the following roles: admin.
kevin [5:24 PM] who is kevin
hubot [5:24 PM] { "id": "UXXXXXXXX", "name": "kevin" }
kevin [5:26 PM] kevin has ops role
hubot [5:26 PM] OK, kevin has the 'ops' role.
kevin [5:27 PM] shell date
hubot [5:27 PM] Sat Jan 21 10:08:28 UTC 2017
kevin [5:28 PM] kevin doesn't have ops role
hubot [5:28 PM] OK, kevin doesn't have the 'ops' role.
kevin [5:29 PM] shell date
hubot [5:29 PM] Access Denied!
```
[1]: https://hubot.github.com/ [1]: https://hubot.github.com/
[2]: https://my.slack.com/services/new/hubot [2]: https://hubot.github.com/docs/scripting/
[3]: https://hubot.github.com/docs/scripting/ [3]: https://my.slack.com/services/new/hubot
[4]: https://api.slack.com/methods/users.list/test

@ -26,7 +26,7 @@ RUN set -xe \
&& npm install hubot-$HUBOT_ADAPTER --save \ && npm install hubot-$HUBOT_ADAPTER --save \
&& sed -i -r 's/^\s+#//' scripts/example.coffee && sed -i -r 's/^\s+#//' scripts/example.coffee
VOLUME /home/hobot/scripts VOLUME /home/hobot
EXPOSE 8080 EXPOSE 8080
CMD ["./bin/hubot", "--adapter", "slack"] CMD ["./bin/hubot", "--adapter", "slack"]