はじめに
WEB制作でPipelineを使ったらとても便利だったので紹介します。
自動デプロイと聞くと設定が難しそうと思うかもしれませんが、今回は静的ファイルだけを扱うことが前提なのでかなり簡単です。
今回はさくらのレンタルサーバーを使います。
概要
Bitbucketのbitbucket-pipelinesで指定したブランチにプッシュしたときにレンタルサーバーに自動デプロイする方法を紹介します。
下記の2通りのやり方で説明します。
- bitnamiのimageでgit-ftpを使用する方法
参考:https://hub.docker.com/r/bitnami/git - Atlassianのftp-deployを使用する方法
この記事を読んだらできること
指定したブランチにプッシュかプルリクをマージしたら自動でFTPサーバーに自動デプロイされるpipelineの設定
前提条件
- bitbucketのアカウントが必要です
- レンタルサーバーが必要です
手順
1. サーバー情報を確認する
2. bitbucket-pipelinesの初期設定をする
3. サーバー情報をBitbucketの環境変数に登録する
4. デプロイ設定をする
5. 自動デプロイを実行する
本題
1.サーバー情報を確認する
- サーバー情報をBitbucketの環境変数に登録するので、レンタルサーバーのホスト名、ユーザー名、パスワード、データをアップするディレクトリのパスを確認してください。
- さくらのレンタルサーバーの場合は下記のページから確認ができます。
国外IPの制限がある場合はサーバーにアクセスできない可能性がありますので、デプロイがうまくいかなかった場合は設定を無効にしてみてください。
2.bitbucket-pipelinesの初期設定をする
3.サーバー情報をBitbucketの環境変数に登録する
デプロイ設定をする前にサーバー情報を変数に登録していきます。
サイドメニューから「Repository setting」 → 「Repository variables」にアクセスすると登録画面に移ります。
各項目を入力してAddを押せば変数追加の完了です。
メモ
- Nameは変数名なので任意の名前をつける
- Valueにサーバー情報を入れる
- 隠したい情報は『Secured』にチェックを入れる
4.デプロイ設定をする
-
下記のコードに書き換えてください。
bitnamiのimageでgit-ftpを使用する
[1] 全データを反映する
image: bitnami/git
pipelines:
branches:
develop:
- step:
script:
- apt-get update
- apt-get -qq install git-ftp
- git ftp init --user $FTP_USER --passwd $FTP_PASSWORD $FTP_HOST$FTP_DIRECTORY
[2] アップロードされたファイルを同期化して差分だけ反映する
### 省略 ###
- git ftp catchup --user $FTP_USER --passwd $FTP_PASSWORD $FTP_HOST$FTP_DIRECTORY
注意
一度デプロイを行ったら「git ftp init(catchup)」のところを「git ftp push」に変更してください
Atlassianのftp-deployを使用する
image: atlassian/default-image:3
pipelines:
branches:
develop:
- step:
script:
- pipe: atlassian/ftp-deploy:0.3.3
variables:
USER: $FTP_USER
PASSWORD: $FTP_PASSWORD
SERVER: $FTP_HOST
REMOTE_PATH: $FTP_DIRECTORY
DELETE_FLAG: 'false' # 既存ファイルを削除せずに上書きする
EXTRA_ARGS: "--exclude=.bitbucket/ --exclude=.git/ --exclude=README.md"
注意
デプロイのたびに全データが反映されます
各セクションについて
images
使用するDockerイメージ
pipeline
ここからはpipelineの処理ですという意味
default
全てのブランチで動作する
branches
動作させたいブランチを指定することができるようになる
step
ビルドの実行単位で最大100まで設定できる
(無料会員は10ステップまで)
parallel
並列処理で複数ステップを同時に実行することができる
ビルド時間の短縮に便利です
script
連続して実行する処理の一覧
variable
pipeline起動時に提供される変数が含まれる
pipe
バックグラウンドで処理を実行して複雑なタスクを簡単にしてくれる
Variablesについて
USER
FTPサーバーのユーザー名
PASSWORD
FTPサーバーのパスワード
SERVER
FTPサーバーのアドレス
REMOTE_PATH
FTPサーバーのアドレス
LOCAL_PATH
アップロードするローカルディレクトリのパス(任意)
Default ${BITBUCKET_CLONE_DIR}
DEBUG
デバッグ情報の追加をオンにする
Default: false
EXTRA_ARGS
lftpコマンドに渡される追加引数(gitignoreのようなもの)
DELETE_FLAG
新しいファイルを転送する前に古いファイルを削除するためのオプション
Default: true
--exclude-globで「*.jpg」のようにglobパターンで指定することができます
parallelについて
並列処理を記述するセクション
ビルド時間を短くしたり最大ビルド時間120分を超過したくないときに有効です。
例
pipelines:
default:
- step:
script:
- ## script ##
- parallel: # 並列処理
- step:
script:
- ## script ##
- step:
script:
- ## script ##
bitbucket-pipelines.ymlを追加する
必要な設定が完了したら右下のCommit file押しましょう。
masterブランチにファイルが追加されます。
これで設定は完了です!
あとはプッシュするだけ。
5.自動デプロイを実行する
-
指定したブランチにプッシュしてみましょう。
-
ステータスがSuccessfulになればデプロイ完了です
うまくいかない場合は下記のバリデーターでコードをチェックしてみましょう。
Validator for bitbucket-pipelines.yml
注意点
- なれるまでは誤ってサーバーのデータを削除しないようにDELETE_FLAGをfalseに設定しましょう
- ビルド時間が120分を超えると自動停止します
おわりに
少し長くなりましたが意外と簡単ではないでしょうか?
これからは確認用のテストサイトにアップするときはpipelineを使うことが増えそうです。
データ納品するときに使うのも便利そうですね。
気が向いたらGulpやnpmを入れた記事をアップするかも。たぶん