LoginSignup
1
2

More than 3 years have passed since last update.

hubot-matteruserを使ってRSSリーダーを動作させる

Posted at

はじめに

本記事はlaofoe/hubot-matteruserを用いてRSSフィードをmattermostに投稿するhubotを作成する手順を示したものです.

ハマったところ

hubot rssで検索するとはじめに出てくるhubot-rss-readerですが,このIssueにハマって動作させることができません.

ERROR TypeError: Cannot read property 'then' of undefined
  at run (/usr/src/hubot-matteruser/node_modules/hubot-rss-reader/scripts/hubot-rss-reader.coffee:74:7, <js>:94:35)
  at Brain.<anonymous> (/usr/src/hubot-matteruser/node_modules/hubot-rss-reader/scripts/hubot-rss-reader.coffee:83:5, <js>:103:14)
  at Object.onceWrapper (events.js:286:20)
  at Brain.emit (events.js:203:15)
  at Brain.mergeData (/usr/src/hubot-matteruser/node_modules/hubot/src/brain.js:157:10)
  at Command.callback (/usr/src/hubot-matteruser/node_modules/hubot-redis-brain/src/redis-brain.js:54:21)
  at normal_reply (/usr/src/hubot-matteruser/node_modules/redis/index.js:726:21)
  at RedisClient.return_reply (/usr/src/hubot-matteruser/node_modules/redis/index.js:824:9)
  at JavascriptRedisParser.returnReply (/usr/src/hubot-matteruser/node_modules/redis/index.js:192:18)
  at JavascriptRedisParser.execute (/usr/src/hubot-matteruser/node_modules/redis-parser/lib/parser.js:574:12)
  at Socket.<anonymous> (/usr/src/hubot-matteruser/node_modules/redis/index.js:274:27)
  at Socket.emit (events.js:198:13)
  at addChunk (_stream_readable.js:288:12)
  at readableAddChunk (_stream_readable.js:269:11)
  at Socket.Readable.push (_stream_readable.js:224:10)
  at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)

Dockerfileの修正

laofoe/hubot-matteruserの一部を修正します.
hubot-rss-readerではなく,派生版のhubot-rss-rolfモジュールを使います.
これによりハマりポイントを回避できます.

FROM node:10

ARG hubot_owner
ARG hubot_description
ARG hubot_name

RUN useradd -m -s /bin/bash hubot-matteruser

RUN mkdir -p /usr/src/hubot-matteruser
RUN chown hubot-matteruser:hubot-matteruser /usr/src/hubot-matteruser
RUN chown hubot-matteruser:hubot-matteruser /usr/local/lib/node_modules/
RUN chown hubot-matteruser:hubot-matteruser /usr/local/bin/

WORKDIR /usr/src/hubot-matteruser
USER hubot-matteruser
RUN npm install -g yo
RUN npm install -g generator-hubot
RUN npm install -g hubot-redis-brain #追加

RUN echo "No" | yo hubot --adapter matteruser --owner="${hubot_owner}" --name="${hubot_name}" --description="${hubot_desciption}" --defaults \
&& sed -i '/heroku/d' external-scripts.json

RUN npm install hubot-rss-rolf --save #追加
RUN npm install coffee-script@">=1.10.0" --save #追加

RUN rm hubot-scripts.json

CMD ["-a", "matteruser"]
ENTRYPOINT ["./bin/hubot"]

EXPOSE 8080

external-scripts.jsonの作成

docker-compose.ymlと同じディレクトリにexternal-scripts.jsonを作成して以下を記述してください.
デフォルトの全てのモジュールが含まれているので不要な物を削除してください.

[   
   "hubot-diagnostics",
    "hubot-help",
    "hubot-google-images",
    "hubot-google-translate",
    "hubot-pugme",
    "hubot-maps",
    "hubot-redis-brain",
    "hubot-rules",
    "hubot-shipit",
    "hubot-rss-rolf"
]

docker-compose.ymlの修正

hubot-brainを使用する必要があるので

version: "3.7" #変更

services:
  hubot-matteruser:
    build:
     context: .
     args:
       hubot_owner: <CHANGEME>
       hubot_name: <CHANGEME>
       hubot_description: <CHANGEME>
    restart: always
    user: hubot-matteruser
    ports:
      - "8080:8080"
    environment:
      - MATTERMOST_HOST=<CHANGEME>
      - MATTERMOST_GROUP=<CHANGEME>
      - MATTERMOST_USER=<CHANGEME>
      - MATTERMOST_PASSWORD=<CHANGEME>
      - MATTERMOST_LOG_LEVEL=info
      - MATTERMOST_USE_TLS=false
      - MATTERMOST_TLS_VERIFY=false
      - MATTERMOST_WSS_PORT=80
      #以降追記
      - REDIS_URL=redis://mm-hubot-brain:6379
      - HUBOT_RSS_INTERVAL=3600
      - HUBOT_RSS_USERAGENT=Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:83.0) Gecko/20100101 Firefox/83.0
      - HUBOT_RSS_LIMIT_ON_ADD=10
      - HUBOT_RSS_HEADER=:dango:
      - HUBOT_RSS_PRINTSUMMARY=true
      - HUBOT_RSS_PRINTIMAGE=true
      - HUBOT_RSS_PRINTERROR=true
      - HUBOT_RSS_IRCCOLORS=false
    volumes:
      - ./external-scripts.json:/usr/src/matteruser/external-scripts.json
  mm-hubot-brain:
    image: redis:6.0.9-alpine
    container_name: mm-hubot-brain
    volumes: 
      - hubot-brain-data:/data
    command: redis-server --appendonly yes 

volumes:
  hubot-brain-data:
    driver: local

起動と動作確認

以下のコマンドhubotを起動する.

docker-compose up -d 

起動後正常に動作していればhubotのbotへのダイレクトメッセージで以下を実行してnothingと出ていれば成功です.
以下のコマンド内のhubotはbuild argのhubot_nameを指定した場合,その名前に置換してください.

hubot rss list
// hubot nothing

おわりに

RSSは最近の記事が少なくなっていて動く構成を探すのに苦労しました.
この記事が他の方の少しでも助けになれば幸いです.

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2