プルリクエストによるプレビュー
GitHub のリポジトリを接続したプロジェクトでは、プルリクエストのブランチの内容を、本番とは別の URL で公開できます。 これを プレビュー と呼びます。 プレビューの URL はプルリクエストを閉じるまで変わらず、ブランチに push するたびに同じ URL の内容が更新されます。
リポジトリの接続については、プロジェクトと GitHub を接続するを参照してください。
プレビューの有効と無効を切り替える
プレビューは、デフォルトで有効です。 リポジトリを接続すると、そのプロジェクトではプレビューが使えます。
ただし、プレビュー機能の提供開始より前に GitHub と接続したプロジェクトでは、無効になっています。 プロジェクト詳細画面の「設定」タブにある GitHub リポジトリの欄で、有効にしてください。 同じ場所で、いつでも無効に戻せます。

無効から有効に切り替えた場合、対象になるのはそのあとに作ったプルリクエストです。 切り替える前から開いているプルリクエストでプレビューを使うには、いったん閉じてから開き直します。
プレビューの URL は推測しにくい文字列を含みますが、URL を知っていれば誰でもアクセスできます。 ロリポップ!デプロイナウは、プレビューへのアクセスを制限する機能を提供していません。 公開前の内容を第三者に見せたくない場合は、Basic 認証などのアクセス制限をアプリ側で実装してください。 本番とプレビューで挙動を分けるには、プレビューの環境変数を使えます(本番との違い)。
プルリクエストを作るとプレビューが公開される
プレビューを有効にしたプロジェクトでは、接続したリポジトリにプルリクエストを作ると、そのブランチのビルドとデプロイが始まり、プレビュー専用の URL で公開されます。 URL は、プロジェクトの公開 URL とは別に、プルリクエストごとに発行されます。
プルリクエストには、ロリポップ!デプロイナウの GitHub App がコメントを投稿します。 コメントの表には、プロジェクトごとにデプロイの状態とプレビューの URL が並び、デプロイが進むと状態が書き換わります。 状態の横のリンクからは、ロリポップ!デプロイナウのデプロイ詳細画面を開けます。 1 つのリポジトリを複数のプロジェクトに接続している場合も、コメントはプルリクエストにつき 1 つで、プロジェクトごとの行が並びます。

プレビューのデプロイは、プロジェクト詳細画面の「デプロイ」タブにも、本番のデプロイと同じ一覧にプルリクエストの番号つきで表示されます。 ビルドログもそこから確認できます。 本番の公開中のサイトは、プレビューのデプロイによって変わりません。

push するとプレビューが更新される
プルリクエストのブランチに push すると、新しいデプロイが始まり、成功すると同じ URL の内容が置き換わります。 URL はプルリクエストを閉じるまで変わらないため、レビュー中に URL を共有し直す必要はありません。
デプロイするブランチ(本番のブランチ)から別のブランチに向けてプルリクエストを作った場合は、本番のブランチへの push で本番とプレビューの両方がデプロイされます。
プルリクエストを閉じるとプレビューは消える
プルリクエストをマージするか閉じると、プレビューは公開を終了し、URL にアクセスできなくなります。 プレビューのために使っていたリソースも削除されます。 コメントの状態は閉じた表示に変わり、URL のリンクが外れます。
閉じたプルリクエストを開き直すと、新しいプレビューとして別の URL で公開され、コメントの URL も書き換わります。 閉じる前の URL は復活しません。
プレビューを無効にしたとき
プレビューを無効にすると、新しいプルリクエストではプレビューが作られなくなります。 公開中のプレビューも、以後の push では更新されません。 公開中のプレビューは、そのプルリクエストを閉じるまで残ります。
本番の自動デプロイは、プレビューの有効と無効に関係なく動きます。
プレビューが作られる条件
プルリクエストを作るか開き直したとき、次の条件をすべて満たすとプレビューが作られます。
- プレビューが有効である:デフォルトで有効です。無効にしている場合や、プレビュー機能の提供開始より前に接続したプロジェクトの場合は、「設定」タブの GitHub リポジトリの欄で有効にしてください。
- 自動デプロイが動いている:自動デプロイを停止している間は、push によるデプロイと同じく、プレビューも作られません。
- 接続したリポジトリのブランチから作ったプルリクエストである:フォークしたリポジトリから作ったプルリクエストは対象外です。接続したリポジトリ以外のコードを自動で実行しないためです。
- 作者がリポジトリの所有者、Organization のメンバー、コラボレーターのいずれかである:それ以外の人が作ったプルリクエストは対象外です。Dependabot などの bot が作ったプルリクエストも対象外です。
下書きのプルリクエストも対象です。 マージ先のブランチは問いません。
リポジトリへのアクセス権を持たない人は、フォークからしかプルリクエストを作れず、作者の条件も満たさないため、プレビューを作れません。
作成済みのプレビューを push で更新するときは、プレビューが有効で、自動デプロイが動いていることが条件です。 push した人の権限は、GitHub 側でブランチへの書き込み権限として確認されます。
プレビューのデプロイも、本番のデプロイと合わせてプランの「1 日あたりのビルド数」に数えられます。 上限に達すると、プレビューもデプロイされません。
本番との違い
プレビューは本番とは別の環境として動きます。
- 環境変数:プレビューには、「環境変数」タブの「プレビュー」で設定した変数だけが渡されます。本番の環境変数は渡されないため、プレビューで必要な値は「プレビュー」に設定してください。設定した値は、次のプレビューのデプロイ(プルリクエストへの push)から反映されます。詳しくは環境変数の「本番とプレビューで別に設定する」を参照してください。
- 独自ドメイン:プレビューには独自ドメインは付きません。プロジェクトに設定した独自ドメインは本番だけを指します。
- 再デプロイ:再デプロイは本番だけが対象です。プレビューをやり直すには、プルリクエストのブランチに push してください。