Bitbucket の Pipelines で 運用出来る状態に なりました
前回では とりあえず リポジトリのファイルを git ftp で デプロイする という事をしましたが
今回は master ブランチ と develop ブランチ を 別々に デプロイする 事が 出来るようになりました
Bitbucket Pipelines
前回では 説明していなかったのですが $ で 変数を 使うことが出来ます
こちらを 使えば リポジトリに入れないといけない bitbucket-pipelines.yml に ID や PASS を 記述しなくて済みます
詳しくは こちらのドキュメントを 読んで 確認してください
Environment variables - Atlassian Documentation
https://ja.confluence.atlassian.com/bitbucket/environment-variables-794502608.html
Git FTP
前回 行った パターンと 同等なものになります
Bitbucket の Pipelines を 使ってみた
https://tekuaru.jack-russell.jp/2017/08/24/1449/
こちらは サーバ上に git や SSH を インストール する必要はなく
FTP だけ 使えれば この方法が 使えるという お手軽な方法になります
ただ サーバ上 の diff 等は 取らないので 上書きになってしまいます
なので サーバ上 の ファイルは 触らない 等 の 運用が必要かと 思います
初回は init 次回以降は push と 少しだけ コマンドが 変わります
bitbucket-pipelines.yml (初回)
image: debian:9-slim
pipelines:
branches:
master:
- step:
script:
- apt-get update && apt-get -qq install git-ftp
- git ftp init --user $PRODUCTION_FTP_USERNAME --passwd $PRODUCTION_FTP_PASSWORD $PRODUCTION_FTP_DIRECTORY
develop:
- step:
script:
- apt-get update && apt-get -qq install git-ftp
- git ftp init --user $DEVELOP_FTP_USERNAME --passwd $DEVELOP_FTP_PASSWORD $DEVELOP_FTP_DIRECTORY
bitbucket-pipelines.yml (次回から)
image: debian:9-slim
pipelines:
branches:
master:
-prep:
script:
- apt-get update && apt-get -qq install git-ftp
- git ftp push --user $PRODUCTION_FTP_USERNAME --passwd $PRODUCTION_FTP_PASSWORD $PRODUCTION_FTP_DIRECTORY
develop:
- step:
script:
- apt-get update && apt-get -qq install git-ftp
- git ftp push --user $DEVELOP_FTP_USERNAME --passwd $DEVELOP_FTP_PASSWORD $DEVELOP_FTP_DIRECTORY
SSH
こちらは SSH で デプロイするパターンです
- bitbucket から サーバへ SSH するための キー登録
- サーバ から bitbucketへ SSH するための キー登録
- サーバ内で git を 使う
という 幾つかの 手続きが必要になります
ただ こちらは Diff が 取られて
サーバ上のファイルに 変更があると コンフリクトを起こして エラーになります
Pipelines だけで デプロイ出来るのですが
コンフリクト等を起こして 修正して もう一度 Pipelines から デプロイするのは 手間なので
シェルスクリプト として 分けて そのまま叩いて デプロイするようにしています
また 初回の git clone は 手動で 行いました
サーバに ファイヤーウォールがある場合は 下記のURL を 参考に 指定してください
What are the Bitbucket Cloud IP addresses I should use to configure my corporate firewall? - Atlassian Documentation
https://confluence.atlassian.com/bitbucket/what-are-the-bitbucket-cloud-ip-addresses-i-should-use-to-configure-my-corporate-firewall-343343385.html
ただ 上記の情報だけでは 僕の環境では 接続できませんでした…
一旦 ファイヤーウォールを 切って フィンガープリント の 設定をしたのですが
設定されてからは 接続できるようになりました
Valid IP addresses for Bitbucket Pipelines services の IPアドレス以外に あるんじゃないのかな??
bitbucket-pipelines.yml
image: alpine:latest
pipelines:
branches:
master:
- step:
script:
- apk --update --no-cache add openssh-client
- ssh -p $PRODUCTION_SERVER_PORT $PRODUCTION_SERVER_USER@$PRODUCTION_SERVER_IP $PRODUCTION_SERVER_SCRIPT
develop:
- step:
script:
- apk --update --no-cache add openssh-client
- ssh -p $DEVELOP_SERVER_PORT $DEVELOP_SERVER_USER@$DEVELOP_SERVER_IP $DEVELOP_SERVER_SCRIPT
シェルスクリプト
こちらが サーバ上に置くファイル に なります
cd の ディレクトリ先は 別途 修正してください
cd ~/tekuaru.jack-russell.jp/htdocs/
git checkout master
git pull
よかったら みなさんも 使ってみてください
めちゃめちゃ 便利ですよ!!