aaaiiuie

学習(備忘録)のため運用

自動デプロイ(簡易) heteml → backlog

今回月額費用が安い(定額)hetemlで、backlogリポジトリを利用した自動デプロイ(簡易)について記載。

全体図

以下の図に示した内容になります。

image
f:id:arakakikikaku427821:20200209151959p:plain

ローカルで変更した内容をpushし、backlogのgitにてmasterにプルリク → mergeを実施しタイミングでbacklogのインテグレーション 「Webhook」 を利用してheteml上のソースを更新します。
また、Webhookを利用してプロジェクトで利用しているチャットサービスに通知を行います。
今回はチャットワークをメインで利用しているため 「zapier → chatwork」 の流れになります。記事では①②③をメインで記載するため、zapier → chatworkについては別途記載致します。

今回設定するための作業の流れ

  1. hetemlにsshでのアクセス確認(疎通確認)
  2. hetemlでbacklog用にssh鍵作成
  3. backlogにssh鍵(pub)を登録(backlogリポジトリ疎通確認)
  4. backlog-deploy.phpを設置
  5. backlog → インテグレーションの設定

1. hetemlにsshでのアクセス確認(疎通確認)

公式の内容が一番わかりやすいのでやり方は 公式参照

2. heteml内でssh鍵作成

$ ssh-keygen -t rsa -f id_rsa_backlog
  • 鍵の保存先を聞かれるので、デフォルトのままEnter
  • パスフレーズを聞かれるので、空のまま2回Enter

3. backlogにssh鍵(pub)を登録(backlogリポジトリ疎通確認)

公開鍵をコピーしてbacklogに登録します。
上手くいかない場合はローカルに落として中身をコピーします。

$ pbcopy < ~/.ssh/id_rsa_backlog 
image
f:id:arakakikikaku427821:20200209161726p:plain

hetemlから以下のコマンドを実行し疎通確認を実施。

$ ssh -T ●●●@●●●.git.backlog.jp
Hi ●●●●●●! You've successfully authenticated, but Backlog does not provide shell access.

4. backlog-deploy.phpを設置

backlog-deploy.phpのファイルを作成し下記のコードを記載します。
payload取得部分が上手くいかなかったので下記のようにします。

<?php
// 対象ディレクトリ
$target_dir = '/home/users/0...{デプロイを実施するディレクトリのpath}';

// リリースするブランチ指定
$deploy_ref  = 'refs/heads/master';

// payloadの取得
$request_body = file_get_contents('php://input');
$request_body = urldecode($request_body);
$request_body = str_replace("payload=", "", $request_body);
$payload = json_decode($request_body);

if ($payload){
    $ref = $payload->content->ref;
    chdir($target_dir);
    if ($ref == $deploy_ref) {
        exec('git --git-dir=.git pull origin master');
    }
}
?>

backlogからアクセスできる場所に設置しベーシック認証を設けます。

5. backlog → インテグレーションの設定

backlogのプロジェクトの設定からインテグレーションを選択し 「Webhook」「設定」 を押下。

image
f:id:arakakikikaku427821:20200209155547p:plain

遷移先で 「Webhookの追加」 のボタンを押下し新規作成画面へ移動。
新規作成画面にて以下の内容で設定を行います。

項目 概要
Webhook名 Webhookの名称
説明 Webhookの説明
WebHook URL heteml上に設置したbacklog-deploy.phpのURL
通知するイベント バージョン管理に関するイベントの 「Gitプッシュ」 にのみチェック

backlog-deploy.phpはベーシック認証を設けたディレクトリの中にあるため、以下のような内容でWebHook URLの項目を設定します。

https://{ベーシック認証のユーザー名}:{ベーシック認証のパスワード}@https://example.com/{...}/{...}/backlog-deploy.php

動作の確認として新規作成画面や変更画面から画面下部に設置されている 「実行テスト」 のプルダウンから 「Gitプッシュ」 を選択し 「実行」 します。
実行した結果として、backlog→Webhookの画面の送信履歴タブから送信内容を確認できます。