アプリ開発のソース管理にBitbucketを使ってたため、Pipelinesという機能は放置してましたが、Webアプリ開発などで、GitとWebサーバーの両方を扱うような場合、
- Bitbucketへ修正内容をPush(masterブランチの場合のみにしたい)
- BitbucketのPipelinesが発動してスクリプトが作動
- 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」。
上記で「Commit file」する前に書き換えちゃってもよかったのですが、次のスクリプトに修正。brances: master: にしているのは、masterブランチにpushされた時だけ反応するようにしたいから。(他のブランチをマージした時に、一時動作がおかしい時があったので、何か不具合が見つかったら後から追記します)
source code by gist.
上記のコード内で使われている変数($FTP_USERNAME
と$FTP_PASSWORD
)の値を「Environment variables」で設定。上記コードでホスト名部分も変数にしてもよかったですね。Webサーバー上のディレクトリを指定したい場合は、サーバー側の「~」以下のパスを、ホスト名の後につければいけます。ユーザーとパスワードは、Heteml が発行したFTPアカウントの「ユーザー名」と「パスワード」です。パスワードは鍵アイコンを押せば表示しないようにもできますね。
何気にここまでの設定だけで、正しく動けば、masterになんらかのコミットを行うことで、Pipelinesが反応して、Webサーバーにいくつかのファイルを転送していると思います。
一度、FTPを行ったら、「git ftp init
」部分を「git ftp push
」に書き換えます。これで、次回以降は差分ファイルのみをアップロードするようになると思います。
おまけ(Pipelinesでsshを使う場合)
おまけは後で追記予定。
東京造形大学卒業後、マクロメディア(現アドビ)に入社。QAやテクニカルサポートマネージャーとしてFlash、DreamweaverなどのWeb製品を担当。独立後、2007年に虫カゴデザインスタジオ株式会社を設立。2021年東京三鷹を拠点に。最近は、Unity, Unity Netcode for GameObjects, CakePHP, Laravel, ZBrush, Modo, Adobe Substance 3D, Adobe Firefly, Xcode, Apple Vision Pro, Firebaseにフォーカスしています。モバイルアプリ開発情報を主としたブログ「MUSHIKAGO APPS MEMO」の中の人。