bitbucket の Pipeline をつかって、SSHでデプロイ

bitbucket の Pipeline を使って SSH 経由でデプロイする。 Pipeline で自動テストもできるようだけど、手元のマシンで編集して git push すればテストサーバに連動してデプロイしてくれる環境を目指す。

Piplelineの有効化とSSHの設定

bitbucket のリポジトリを開き「設定」→「PIPELINES」→「Settings」を開き、「Enable Pipeline」をONにすると、「Configure bitbucket-piplelines.yml」のボタンが有効になるけどこれは後回し。

f:id:nao550:20190108125610p:plain

Repository variables

PIPELINE 設定の「Repository variables」で bitbucket-pipelines.yml で使用する変数を設定する。
今回は ssh 関係だけなので、SSH_UNAMESSH_HOST を設定

f:id:nao550:20190108131226p:plain

SSH Authkey

引き続き PIPELINES の今度は「SSH Keys」をクリック、画面にある「Generate Keys」をクリックするとキーペアが生成されて、Public Key が表示されるので、それを SSH でログインしたいサーバのユーザの ~/.ssh/authorized_keys に追記、

そのサーバのアドレスを「Known hosts」に入れて、「Fetch」すれば、そのサーバのキーを取得するので、「Add host」して登録。

f:id:nao550:20190108132121p:plain

deploy.sh

リポジトリの一番上のディレクトリに deploy.sh を作成して git add して commit して push

#!/bin/sh
cd /home/hoge/testrepo
git pull origin master

bitbucket-pipeline.yml

SSH の設定までできたら、PIPELINES の「Settins」に戻って、「Configure bitbucket-piplelines.yml」をクリック、bitbucket-piplines.ymlの編集画面が開くので

pipelines:
  default:
    - step:
        name: Deploy ssh.
        script:
          - ssh $SSH_UNAME@$SSH_HOST tcsh < deploy.sh

作成したら「commit file」
f:id:nao550:20190108130559p:plain

確認

問題なくできていれば、bitbucket 上でソースを編集して commit すれば Pipeline が実行されます。 さっきの bitbucket-pipeline.yml を編集した時点で pipeline は実行されるので、サイドメニューの「Pipelines」を開くと設定した Pipeline の実行状況が確認できます。

Fail になっている場合にはなにかが失敗しているので、そこをクリックして失敗している状況を確認できます。

f:id:nao550:20190108135907p:plain