botでgitリポジトリをFTPアップロードする
以前の記事でFTPしかアップロード手段のないwebsiteをGit管理する方法を紹介しました。
FTPでアップロードしているレンタルサーバ上のWEBページをgit管理する方法 - INNOBASE技術ブログ
しかしこの方法だと、websiteの更新にサーバーサイドでコマンドを実行するスキルをもったエンジニアが介在する必要が出てきます。
できればwebデザイナだけでオペレーションを行いたいですよね?
弊社ではこれをbotで解決したので hubotの実装サンプルをご紹介します。
※ bot化しただけ
# Description # web site ftp deploy script. # ### 事前準備 # /home/bot/website/ に対象のgit repositoryをgit clone # ### 処理内容 # /home/bot/website/htdocs/ をFTPでカレント直下htdocsフォルダにsync # # Commands: # deploy website - deploy web page (ftp) child_process = require 'child_process' module.exports = (robot) -> robot.hear /^deploy website/i, (msg) -> command = "cd /home/bot/website/;git pull origin master;lftp -u <<ftpaccount>>,<<ftppass>> <<ftphostname>> -e \"mirror -R ./htdocs htdocs ;exit;\"" msg.send "deploy website 実行します。\n===================================\n" command += ";echo \"==================================\"" command += ";echo \"deploy website を実行しました。\"" child_process.exec command, (error, stdout, stderr) -> msg.send stderr msg.send stdout
実際実行するとこんな感じ、差分も見れたりして結構良いです。
deploy website deploy website 実行します。 =================================== Updating 96adc5c..7157fa4 Fast-forward htdocs/index.html | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) =================================== deploy website を実行しました。
hubotレシピ(実装例)をこちらで公開しています。
mr51/hubot_recipe · GitHub
関連記事
【chatops】 サーバー上で簡単なcommandを実行するbotのサンプル - INNOBASE技術ブログ