Bitbucketでgit-ftpを自動化する


環境

タイトルにあるようにソースコードのホスティングにはBitbucketを使用する必要があります。

はじめに

この記事はこちらの続きです。
コマンドでgit ftp pushをしたくなかったのと、push時に色々出来るようにしたかったので、Bitbucketのpiplinesを使って見ました。

こちらの記事の続編であるため、git ftp initは終わっているという前提で進めていきます。

1.Bitbucketでpiplinesを有効化

Bitbucketではデフォルトでpiplinesが無効化されているので、有効化していきます。
リポジトリのページにアクセスをして、サイドバーの一番下の「設定」をクリックします。

「設定」 → 「settings」をクリック

「settings」をクリックしたら、以下のように有効化させます。

以上でBitbucket側の設定は完了です。

2.bitbucket-pipelines.ymlに設定を記述

上記でpiplinesが有効化されたら、タスクを登録するためのファイルを作成します。
該当のリポジトリ内にbitbucket-pipelines.ymlというファイルを作成します。

作成したら、以下を入力

image: samueldebruyn/debian-git

pipelines:
  default:
    - step:
        script:
          - echo "Pipline Start"
          - apt-get update
          - apt-get -qq install git-ftp
          - echo "start deploy"
          - git ftp push --user FTPのユーザー名 --passwd FTPのパスワード ftp://FTPのホスト/対象となるディレクトリ
          - echo "All done deploy"

例:

  • FTPのユーザー名:ftp-user
  • FTPのパスワード:ftp-user-pass
  • FTPのホスト:example.xsrv.jp

とした場合は、以下のようになる。

image: samueldebruyn/debian-git

pipelines:
  default:
    - step:
        script:
          - echo "Pipline Start"
          - apt-get update
          - apt-get -qq install git-ftp
          - echo "start deploy"
          - git ftp push --user ftp-user --passwd ftp-user-pass ftp://example.xsrv.jp/
          - echo "All done deploy"

bitbucket-pipelines.ymlを設定し、masterにpushを行うと、piplinesが起動する。
piplinesの経過はリポジトリページのpiplinesで確認が出来る。
以上で、git ftp pushをコマンドから実行しないで実行が可能となる。

3.設定情報を環境変数に置き換える

設定ファイルにパスワードなどを書き込みたく無い場合は、環境変数に置き換える。
設定→Piplines→Environment variablesをクリックする

環境変数を設定していく、一応簡易な手順

  • 1.Variable name:変数名
  • 2.Value:変数に代入する値
  • 3.Securedにチェック入れてaddする

以下が設定された状態

2で設定したbitbucket-pipelines.ymlを以下のように変更する。
Bitbucket側に環境変数を定義したので、該当部分を環境変数に変更していく。
設定した環境変数を用いる場合は、$変数名とする必要がある。

例:FTP_USERとした場合、$FTP_USERとymlファイルに記述する

image: samueldebruyn/debian-git

pipelines:
  default:
    - step:
        script:
          - echo "Pipline Start"
          - apt-get update
          - apt-get -qq install git-ftp
          - echo "start deploy"
          - git ftp push --user $FTP_USER --passwd $FTP_PASS $FTP_URL
          - echo "All done deploy"

上記が設定し終わったら、再度masterにpushをして確認してみる。
ここでこける場合は、bitbucket側の設定とbitbucket-pipelines.ymlの記述が正しく無い可能性があるので、チェックして見てください。