技術ブログ

プログラミング、IT関連の記事中心

BitbucketにPushされた時に自動でサーバーにデプロイする方法【Node.js】

■はじめに

ここでは、BitbucketにPushされたことをトリガーにして、サーバーにソースコードをデプロイする方法を記載します。
Node.jsの環境やBitbucketに関しては、ある程度理解している前提で記載しますので、わからない部分は都度調べてください。

■手順

まずは、ソースコードの全量は以下です。

var exec = require('child_process').exec
var http = require('http');
var cmd = 'cd /var/www/html/ && git pull origin master';

/*コマンド実行関数*/
function update() {
    return exec(cmd, {timeout: 90000},
        function(error, stdout, stderr) {
            if(error !== null) {
                console.log(error);
            }
        }
    )
};

http.createServer(function (req, res) {
  if(req.method == 'POST'){
        console.log("===deploy===");
        update();
  }
}).listen(3456);

基本的には、コピペでいいですが、以下だけ修正しないといけません。

以下は、実行するコマンドです。
cdコマンドのディレクトリを「.git」が格納されているディレクトリに指定してください。
また、pullした後に何かコマンドを実行したければ「&&」でつなげて記載してください。

var cmd = 'cd /var/www/html/ && git pull origin master';

以下は、利用するポート番号を指定しています。
このポート番号は、ファイアーウォールに穴あけをしておいてください。

}).listen(3456);

最後に、Bitbucketの「リポジトリ -> 設定 -> Webhooks」に上記のNodeの実行URLを記載しておいてください。
例)http://hogehoge.con:3456/