Bitbucketの仕様変更で「POST」が使用できなくなったので、「BitBucket Sync」が機能しなくなってしまった。結構便利だったのに。
(以前に登録したプロジェクトではPOSTがまだ使用できるか、いつか無くなると思う)
代わりに「Bitbucket Pipelines」を使用してデブロイするらしいので、pipelinesを設定してみた。
「BitBucket Sync」に使い方の説明がある。
(1)Bitbucketの「設定」「Pipelines」「Settings」で「enable」
(2)「Environment variables」でFTPユーザーとFTPパスワードを設定する
(3)「bitbucket-pipelines.yml」を設定する
image: PHP:5.5.38 pipelines: default: - step: script: - echo "Pipeline Init" - apt-get update - apt-get -qq install git-ftp - echo "Initiating Push" - git ftp init -u $FTP_USERNAME -p $FTP_PASSWORD ftp://FTPサーバー名/アップロドするDIR/ - echo "Done Pushing"
サンプルと同じOKですが、「image」は何でも良いらしい。プロジェクト名とか
FTPを使用するので、FTPサーバー名とDIRを設定する。
FTPソフトで繋いだ時に、/public_htmlの中がデフォルトなのか、外がデフォルトなのかで変わるけど、
中だと、ftp://example.com/test_dir/
外だと、ftp://example.com/public_html/test_dir/
コミットすると自動的にpipelinesが動くので、「Pipelines」のメニューで状況を確認する。
問題があれば「Failed」になるので、ログを見て確認する。
「git ftp」でエラーの場合は、「git ftp init -vv ・・・・・」のように「-vv」を付けてエラーを表示して、どこでエラーなのかを確認し対応する。
「git ftp init」なので、pipelineが正常に終了すると、サーバーに「.git-ftp.log」が作られる
ログができれば初回のアップロードは終了なので、ログができるまで待つ。
Bitbucketに大量にファイルがあると時間がかかるので、気長に終わるのを待つしかありません。
(4)「bitbucket-pipelines.yml」を変更する
image: PHP:5.5.38 pipelines: default: - step: script: - echo "Pipeline Init" - apt-get update - apt-get -qq install git-ftp - echo "Initiating Push" - git ftp push -u $FTP_USERNAME -p $FTP_PASSWORD ftp://FTPサーバー名/アップロドするDIR/ - echo "Done Pushing"
「git ftp init」を「git ftp push」に変更する。
pushにすることで、次回以降、プッシュした変更差分のみアップロードされるようになる。
今回のサーバーはAWS EC2でpemキーでsftpをしていましたが、pipelinesでsftpを行うのにSSH KEYの設定が上手くできなかった。
git-ftpはcurlを使うようだが、ログイン認証で失敗したりで、CURLのエラーが出まくりだった。
新規でFTPユーザーを作り、パッシブモードでFTPを設定し直しました。
参考:ec2にてftpでパッシブを使用するときにハマったポイント | 株式会社ビヨンド
パッシブモードでFTPできるサーバーであれば、今回のPipelineで簡単にデブロイできると思う。
PipelinesはBitbucketへの登録状況で使える分数と料金があるらしいので、注意が必要かと。それほど高い料金ではないと思うが。
ちなみに、FTPするユーザーが違うと、エラーになる場合があるので、ユーザーを統一した方がいいと思う。
ー以上ー
日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)