プル リクエストでデプロイする
プル リクエストを使用してデプロイする主な方法は 2 つあります。
- プル リクエストでのみ実行されるように Pipelines を定義する
- リポジトリ用の特定の構造を使用する
プル リクエスト パイプラインの定義
リポジトリ内のプル リクエストに対し、プル リクエストでのみ実行する特別なパイプラインを定義できます。このパイプラインは、標準パイプラインと同じ方法でデプロイするよう設定できます。これはテスト環境へのデプロイでのみ利用することをおすすめします。
特定のブランチへのプル リクエストの制限
ステップ 1: リポジトリの構造を定義する
リポジトリ ブランチ:
master: 使用している統合ブランチ。
staging: このブランチを使用してステージングへのデプロイメントをトリガーします。
production: このブランチを使用して本番環境へのデプロイメントをトリガーします。
featre/xxx: すべての機能ブランチ。
上記のブランチ構造に加えて、異なるブランチ用の複数のフローを含む .YML ファイルを定義できます。
# This is a sample build configuration for Javascript.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
image: node:10.15.0
pipelines:
default:
- step:
script:
- npm install
- npm test
branches:
staging:
- step:
script:
- npm install
- npm test
- export HEROKU_APP_NAME=$STAGING_APP
- ./heroku_deploy.sh # Check https://bitbucket.org/rjst/heroku-deploy to understand how to deploy to Heroku
production:
- step:
script:
- npm install
- npm test
- export HEROKU_APP_NAME=$PROD_APP
- ./heroku_deploy.sh # Check https://bitbucket.org/rjst/heroku-deploy to understand how to deploy to Heroku
- オンライン バリデーターを使用して bitbucket-pipelines.yml ファイルをチェックすることができます。
- staging と production を除くすべてのブランチは、テストの実行のみを行う既定のパイプラインを使用します。
- staging と deployment ブランチは異なる構造を持ち、それぞれステージングおよび本番環境へのデプロイのためにセットアップされます。
ステップ 2: ブランチ権限を設定する
staging および production ブランチが直接プッシュされないように、ブランチ権限を使用してプル リクエスト経由でのみマージが許可されるようにすることができます。
以下の例では、全員が staging にマージできますが、production には選択された個人のみがマージできるようにブランチ権限が設定されています。
ステップ 3: プル リクエストを使用してデプロイを開始する
これで、feature ブランチで新機能や改善機能を開発し、master に統合できます。次は、staging ブランチにプル リクエストを発行し、ステージング環境に変更をデプロイします。
プル リクエストを作成すると、ステージング環境へのデプロイの前に変更をレビューできます。このプロセスを繰り返して production にデプロイします (staging ブランチから master ブランチのプル リクエスト)。
以下の画像は、staging から production にマージされるプル リクエストのビューです。