Bitbucket へ Push すると Pipelines が発動して FTP

広告:超オススメUnity Asset
  広告:超オススメUnity Asset

アプリ開発のソース管理にBitbucketを使ってたため、Pipelinesという機能は放置してましたが、Webアプリ開発などで、GitとWebサーバーの両方を扱うような場合、

  1. Bitbucketへ修正内容をPush(masterブランチの場合のみにしたい)
  2. BitbucketのPipelinesが発動してスクリプトが作動
  3. FTPによりWebサーバーへmasterブランチの変更差分のみアップロード

のような流れにしたいところ。いろいろ調べていると、Pipelinesは使うものの、FTPではなくWebサーバー側にgit pullさせるような流れの情報がいくつか見つかりました。が、実際にやってみても、Successとはなるものの、実際にはソースが取得できてなかったりして、わりとややこしかったので、Bitbucket側から「git-ftp」でアップロード(push)する方法にしました。その時のMEMOを残しておきます。

※ レンタルサーバでは、Heteml(ヘテムル)でうまく行きましたので、ここのメモはHeteml前提で書いてます。

こちらの情報が最も参考になりました。

BitbucketでPipelinesを設定:FTPでアップロード

リポジトリの「設定」>「PIPELINES:Settings」で「Enable Pipelines」をオンにし、「Configure bitbucket-pipelines.yml(セットアップ後は、View bitbucket-pipelines.yml)」をクリック。このファイルがソースのルートに必要。「Choose a language template」でPHPを選択後(これ、テンプレートの内容が書き込まれるだけなので、そのまま下記のスクリプトに差し替えてもOK)、「Commit file」。

01

上記で「Commit file」する前に書き換えちゃってもよかったのですが、次のスクリプトに修正。brances: master: にしているのは、masterブランチにpushされた時だけ反応するようにしたいから。(他のブランチをマージした時に、一時動作がおかしい時があったので、何か不具合が見つかったら後から追記します)

source code by gist.

上記のコード内で使われている変数($FTP_USERNAME$FTP_PASSWORD)の値を「Environment variables」で設定。上記コードでホスト名部分も変数にしてもよかったですね。Webサーバー上のディレクトリを指定したい場合は、サーバー側の「~」以下のパスを、ホスト名の後につければいけます。ユーザーとパスワードは、Heteml が発行したFTPアカウントの「ユーザー名」と「パスワード」です。パスワードは鍵アイコンを押せば表示しないようにもできますね。

02

何気にここまでの設定だけで、正しく動けば、masterになんらかのコミットを行うことで、Pipelinesが反応して、Webサーバーにいくつかのファイルを転送していると思います。

03

一度、FTPを行ったら、「git ftp init」部分を「git ftp push」に書き換えます。これで、次回以降は差分ファイルのみをアップロードするようになると思います。

おまけ(Pipelinesでsshを使う場合)

おまけは後で追記予定。

スポンサーリンク