Bitbucketのpipelinesを使ったCoreServerへの自動デプロイ(Dev/Ops)
領収書作成WEBサービス(下記)を作成した際、修正を行うたびにファイルへFTP転送する作業が面倒であったため、
自動で本番環境へソース配置できるように工夫した話。
前提となる環境は、下記の通り。
- Bitbucketを利用してソース管理をしている。
- 本番環境にCoreServerを使っている(FTPが使えるレンタルサーバならどこでもOKと思う)
- デプロイしたいアプリケーションはコンパイルが不要(静的ファイル配置)
- データベースの利用もない
以下のサイトを参考にさせて頂きました
pipelinesを使ったCoreServerへの自動デプロイ全体像
pipelinesを使ったCoreServerへの自動デプロイ(Dev/Ops)の流れについてです。
- ローカルでソースの変更後「①Commit」を実施
- Bitbucketのリモートリポジトリに「②Push」し、ソース更新
- Piplineが変更を「③検知」し、本番への反映を開始(キューイング)
- リポジトリに格納されている「④bitbucket-pipelines.ymlの内容をpiplineが確認」
- bitbucket-pipelines.ymlの内容に従って「⑤本番環境へGIT FTP」を実行
Bitbucket側での設定(ほとんどこれ)
上記を実現するための手順です。とても簡単です。
Repository variables環境変数の登録
次の手順で作成するbitbucket-pipelines.ymlでは、ユーザID/パスワードを環境変数から取得します。
そのため、事前に環境変数に以下の値を登録しておきます。
- FTP_PASSWORD
- FTP_USERNAME
値の登録は、NameとValueを設定して、ADDを押します。
bitbucket-pipelines.ymlの作成
次に、bitbucket-pipelines.ymlを作成します。
「設定」から「Deployments」を選び、表示される「Edit YAML configuration」を押します。
未作成の場合は、「ファイルの追加」を行い、「bitbucket-pipelines.yml」を新規作成します。
設定は下記の通りです。
imageのところも変更は必要ありません。
git ftpを実行するため環境としてdebian(linux)を利用しているだけです。
「XXXXXXXXXXXX」のところはご自身の環境に合わせて変更が必要です。
初回だけ「git init」にしています。
image: samueldebruyn/debian-git
pipelines:
branches:
master:
- step:
script:
- echo "Pipeline Init"
- apt-get update
- apt-get -qq install git-ftp
- echo "Initiating Push"
- git ftp init --user $FTP_USERNAME --passwd $FTP_PASSWORD m9.coreserver.jp/public_html/XXXXXXXXXXXX
- echo "Done Pushing"
bitbucket-pipelinesの動作確認
あとはリポジトリを更新するだけで、自動で本番環境へ反映されるはずです。
2回目以降はbitbucket-pipelines.ymlの「git init」→「git push」にして、差分反映を行います。
image: samueldebruyn/debian-git
pipelines:
branches:
master:
- step:
script:
- echo "Pipeline Init"
- apt-get update
- apt-get -qq install git-ftp
- echo "Initiating Push"
- git ftp push --user $FTP_USERNAME --passwd $FTP_PASSWORD m9.coreserver.jp/public_html/XXXXXXXXXXXX
- echo "Done Pushing"
所感
こんなに簡単にDev/Ops環境が作成できるとは、本当に便利な世の中になりました。
bitbucket最強。