0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

「初心者向け」GitHub運用⑤:Hubotを作ってみる

Last updated at Posted at 2020-08-13

この記事はこんな方向けです!

細かいことは置いといて
・GitHubの基本的な使い方を知りたい!
・GitHubでのチケットベース開発を知りたい!
・Slackと連携の取り方を知りたい!

そんな方への手っ取り早いハウツーな記事です。

コードはこちら

この記事を読み終えますと、

HubotをHeroku上での自動デプロイができるようになります。

いくつか記事を分けます

本記事では**「Hubotを使ってみよう〜Herokuデプロイまで」**についてです。

基礎
1. OrganizationとTeamを作ってみる
2. Projectを作ってみる
3. Issueを作ってみる
4. 他人を招待し、権限付与

応用
5. Hubotを使ってみよう〜Herokuデプロイまで
6. HubotとSlackを連携

1 Hubotとは

  • GitHubは、イベント(Merge,Pull Request, Pushなど)が起きた時、Postリクエストを行うことができます。(webhook)
  • Hubotは、そのリクエストを受け、リクエストの内容に応じて、処理を行うBotです。
    例えば、誰かがPull Requestをすれば、HubotがSlackのチャネルにコメントする。など

2. Hubotをインストール

詳細はこちら

  • Hubotを作成
mkdir testHub
cd testHub
npm install -g yo generator-hubot
yo hubot

※すでに、globalインストール済みなら、「yo hubot]

  • 質問に答える
Owner test <1test@gmail.com>
Bot name testBot
Description A simple helpful robot for your Company
Bot adapter **slack**

3 Hubotとあいさつをしてみましょう!

あいさつができるようにしてみます

  • testHubot/scripts直下に、「hello.scripts」を作成
  • 以下のようにコードを記入
coffee.scripts/hello.coffee
module.exports = (robot) ->
  robot.hear /おはよう/i, (res) ->
    res.reply "おはよう"
  
  robot.hear /こんにちは/i, (res) ->
    res.reply "こんにちは"

  robot.hear /こんばんは/i, (res) ->
    res.reply "こんばんは"

res.sendという書き方もありますが、slack上で
sendの場合は返信相手が指定されず、replyなら返信相手が指定されます。

  • hubotを起動
./bin/hubot
おはよう
testBot> Shell:おはよう
こんにちは
testBot> Shell:こんにちは
こんばんは
testBot> Shell:こんばんは

さて、ここまでHubot自体はできました!
次はこれをHerokuにデプロイし、ネット上に上げてみましょう!
次の記事でSlackとの連携をご紹介します。

Heroku上でアプリを作成

ここら先はHerokへの会員登録し、クレジットカードの登録も必要になります。
なぜクレジットカード登録が必要かといいますと、Heroku上の拡張機能(addon)を使うためです。

ご紹介する実装方法では費用がかかることはないので、安心してください
※すでにHeroku上でアプリを起動中でしたら、費用がかかるかもしれません。

登録はこちら
登録方法はこちら

アプリを作成

  • Herokuにログインし、「New」をクリック
    ※(https://dashboard.heroku.com/apps) ←に「New」ボタンがあります。

  • 「Create New App」をクリック 
    toNewApp.jpg

  • App nameを記入し、「create App」をクリック ※他はデフォルトのまま触らずに。

拡張機能(addon)を設定します

  • 「Resources」をクリック
    toResources.jpg

  • 「Papertrail」と記入し、選択

  • デフォルトのまま、「Provision」をクリック
    find one of Addons.jpg

paper.jpg

補足 Papertrailについて

これは、アプリのログを確認するための拡張機能です。
後ほど、Heroku上にデプロイしたHubotがちゃんと動いているのか確認するために、
今回はこの拡張機能を設定しました。

後ほどGitHubとSlackを連携できるように設定します。

GitHubのレポジトリ作成

  • 作成したOrganizationにレポジトリを作成 ※詳しくはこちら
  • ここまでに作成した「testHubot」ディレクトリをレポジトリにpush
cd testHubot
git init
git add .
git commit -m "first commit"
git remote add origin <レポジトリ>
git push origin master

HerokuがGitHubにアクセスできるうように、認証する

GitHubへのPushから、Herokuへの自動デプロイ

Herokuから、連携するGitHubのレポジトリを選ぶ

  • 「Deploy」をクリック
    toDeploy.jpg

  • Deployment method は「GitHub」を選択

  • 該当するOrganizationを選択肢、該当するレポジリ名を記入し、「Search」をクリック

  • 「Connect」をクリック

connect Repo.jpg

一度、手動デプロイしてみましょう!

  • 「Deploy Branch」をクリック
    click Deploy.jpg

結果を確認してみましょう

  • 「Resources」画面を開く

先ほどまでなかった 「web bin/hubot -a slack」というメッセージが出てますね。
これは、デプロイした直後に起動するProcfileの内の記述です。(お手元のProcfileを確認してみてください。
これで、デプロイはできたということが確認できました。

app run.jpg

念のためログを確認

  • 同じ画面に表示されている「Papertrail」をクリック
Aug 12 22:31:31 testhubot11 app/api Deploy 989ad246 by user test@gmail.com
Aug 12 22:31:31 testhubot11 app/api Release v9 created by user test@gmail.com
Aug 12 22:31:31 testhubot11 app/api Build succeeded
Aug 12 22:31:33 testhubot11 heroku/web.1 Starting process with command `bin/hubot -a slack`
Aug 12 22:31:38 testhubot11 app/web.1 [Thu Aug 13 2020 05:31:38 GMT+0000 (Coordinated Universal Time)] INFO hubot-slack adapter v4.8.0
Aug 12 22:31:38 testhubot11 app/web.1 warn: SlackDataStore is deprecated and will be removed in the next major version. See project documentation for a migration guide.
Aug 12 22:31:38 testhubot11 app/web.1 warn: SlackDataStore is deprecated and will be removed in the next major version. See project documentation for a migration guide.

「app/api Build succeeded」と書いてますね。 ※Buildは、ソースコードをDeployできる形にする工程です。 Buildが失敗すると、Deployはできません。

注告(warn)が出ていますね。

エラーを読みますと、次のメジャーバージョンで、SlackDataStoreは削除されるとのこと。
念のためhubot-slackで確認すると、最新はバージョン4.8です。
ただ、手元のhubot-slackも4.8ですので、このまま進めます。

自動デプロイを設定

  • デフォルトのままで「Enable Automatic Deploys」をクリック
    auto deployment.jpg

一度、ローカルのHubotのディレクトリ内のファイルを適当に編集してみましょう。

例えば、以下のコードを追加

scripts/hello.coffe
  robot.hear /test/i, (res) ->
    res.reply "test"

アプリのログを確認してみましょう


Aug 12 22:52:06 testhubot11 app/api Build succeeded
Aug 12 22:52:06 testhubot11 heroku/web.1 Process exited with status 0
Aug 12 22:52:07 testhubot11 heroku/web.1 Starting process with command `bin/hubot -a slack`

お!ビルドされ、Profileが実行されてますね!

まとめ

これで、GitHubからHerokuへHubotをデプロイができました。
次回は、Heroku上のHubotとSlackと連携させ、Slack上での会話ができるようにしましょう!

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?