LoginSignup
5
5

More than 5 years have passed since last update.

Reveal.js を利用した内部公開スライドサーバーでスライドの自動デプロイを行う

Posted at

Reveal.js を利用した内部公開スライドサーバーでスライドの自動デプロイを行う

概要

Reveal.js を利用した内部公開スライドサーバーでスライド自動デプロイを行います。

構成

  • GitLab : GitHub Clone 。Git リポジトリの管理
  • Hubot : ボット開発・実行フレームワーク
  • Kandan : HipChat Clone. チャットツール
  • スライドサーバー (node.js / reveal.js / connect )

構成図

slide_structures.png

処理の流れ

  • ローカル環境で、Reveal.js のスライドを編集し、 GitLab サーバーに push
  • GitLab サーバーは WebHooks を利用して Hubot へ push を通知
  • Hubot は node.js の child_process を利用してシステムコマンドからスライドサーバーデプロイ用の bash を呼び出し、デプロイを実行
  • Hubot は push の内容を Kandan のチャットに通知

前提

  • スライドサーバーの初期構築は済んでいる前提
  • Hubot サーバーからスライドサーバーへの 公開鍵による ssh 接続設定を済ませておく

サンプルコード

デプロイ用の bash

スライドサーバーに公開鍵で ssh 接続し、
対象ディレクトリに移動後、 git pull します。
静的サイトにつき、 git pull のみで最新化完了。

Hubot プロジェクト直下に shells ディレクトリを作成し、
そこに、 deploy_slide.bash として保存します。
※ディレクトリ構成や bash のファイルについて、命名や配置は自由

#!/bin/bash
cat << EOF > /tmp/CMD.txt
cd /home/some_user/slides/
git pull
EOF
CMD=`cat /tmp/CMD.txt`
rm /tmp/CMD.txt
ssh some_user@ip_or_name -i /home/some_user/.ssh/keyname "$CMD"

Hubot Script

GitLab の WebHooks に Hubot Server を登録し、
スライドショーのリポジトリに対して、 push があればHubot に通知する。

Hubot は、push の通知に対して

  • push 内容を Kandan に Chat
  • システムコマンドを呼び出し、スライドサーバーにリモート接続してデプロイを実行

の2つのタスクを行う。

# Description
#   Deploy slide server(trigger is GitLab push event)
#
# Dependencies:
#   None
#
# Configuration:
#   None
child_process = require 'child_process'

module.exports = (robot) ->
  say = (message) ->
    user = {
      room :
        id : 11 # Slide
    }

    robot.send user, message

  robot.router.post "/gitlab/hook/slides", (req, res) ->
    json  = req.body
    say "New Slide Added or Updated"
    say "json['repository.name'] = #{json['repository']['name']}"
    say "json['commits'][0]['message'] = #{json['commits'][0]['message']}"
    child_process.exec ". /path/to/hubot_project/shells/deploy_slide.bash", (error, stdout, stderr) ->
      if !error
        say "http://ip_or_domain:your_port/index.html"
      else
        say "error"
    res.send 200

結果確認

実行前 スライド確認

before_deploy.png

変更内容

  • 変更前
##  Let's Publish Slideshow!
  • 変更後
##  さぁ、スライド作るべさ

変更適用

$ git add -A
$ git commit -m "日本語にしたべさ(検証中)"
$ git push origin master

実行後 スライド確認

after_deploy.png

実行後 Kandan チャット確認

after_deploy_kandan.png

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