ウェブサイト

プルリクエストのプレビュー デプロイ

Preview deploys give every pull request its own live URL, built from that branch's code, so reviewers can click through the actual change instead of reading a diff and guessing. Each preview updates…

プレビュー デプロイは、すべてのプル リクエストに独自のライブ URL を提供し、そのブランチのコードからビルドされるため、レビュアーは差分を読んで推測する代わりに実際の変更をクリックして確認できます。各プレビューは新しいコミットをプッシュすると更新され、プル リクエストがクローズされると自動的にクリーンアップされます。

プレビュー デプロイの場所

Websites を開き、サイトをクリックして、サイト タブ ストリップの Environments メニューを開き、Preview を選択します。ページのタイトルは Preview deploys です。

プレビューはステージング環境とは別です。ステージング環境は、意図的にプッシュする 1 つの長期的なサイト コピーです。プレビューは、プル リクエスト ごとに作成され、その後削除される短期的な環境です。多くのチームは両方を使用します。もう一方の部分については、Staging Environments を参照してください。

KPanel のプレビュー デプロイ ページ

最初に Git Deploy を設定する

プレビューはスタンドアロン機能ではありません。本番サイトのデプロイ キーとビルド コマンドを再利用するため、プレビューを有効にする前にサイトで Git Deploy 構成が機能している必要があります。

Git Deploy が構成されていない場合、ページには Set up Git deploy first と表示され、有効化フォームではなく Go to Git deploy ボタンが提供されます。Deploying a Site From Git を実行してから、戻ってきてください。

Git Deploy は接続されているがビルド コマンドがない場合、プレビュー ページに警告が表示されます。プレビューはリポジトリが既にビルドされていて、ルートに静的ファイルがあると仮定します。これは平文の HTML サイトに対しては正しいですが、コンパイルするものに対しては間違っています。プロジェクトに必要な場合は、Git Deploy ページでビルド コマンドを設定してください。

プレビューの有効化

  1. Enable preview deploys カードで、owner/repo 形式でリポジトリを入力します。URL ではなく、SSH アドレスでもなく、2 つのセグメントだけを入力してください。例えば acme/marketing-site
  2. Enable をクリックします。

owner/name と一致しないものはすべて Repo must be in owner/name format で拒否されます。

有効化の直後、KPanel は webhook 署名シークレットを Copy your webhook secret now というヘッダーのカードに表示し、再度表示されることはないという警告を付けます。

ページを離れる前にシークレットをコピーしてください。シークレットは 1 回生成されて、その後は取得できません。シークレットを失った場合、対処方法は再生成することです。これにより古いシークレットが無効になり、リポジトリ webhook を更新する必要があります。

リポジトリに Webhook を追加する

設定済みカードには、リポジトリ設定の Webhooks セクションに貼り付ける Webhook URL が表示されます。次の設定で構成します。

  • Payload URL: ページに表示されている webhook URL。
  • Secret: コピーしたばかりの値。
  • Content type: JSON。
  • Events: プル リクエスト イベント、およびプッシュ。オープン プル リクエスト上の新しいコミットがプレビューを再構築するようにします。

設定が完了すると、プル リクエストを開くと数分以内にプレビューがビルドされます。バック グラウンド ジョブは毎分新しいプレビュー作業をチェックするため、KPanel で何かを押す必要はありません。

プレビュー URL

各プレビューは pr-<pull-request-number>-<site-id>.kapsulecloud.app の形式のホスト名を取得し、ワイルドカード証明書でカバーされているため、独自の証明書手順なしで HTTPS で提供されます。

プレビューを開く確実な方法は、Recent previews の プレビューの行の Open ボタンです。これにより、そのビルドに対してプロビジョニングされた正確な URL が表示されます。そのリンクをプル リクエストに貼り付けると、レビュアーが KPanel を見つける必要がなくなります。

最近のプレビュー リストを読む

Recent previews セクションには最も最近のプレビューが新しい順に一覧表示されます。各行には、プル リクエスト番号とタイトル、ブランチ、コミット、およびステータスが表示されます。

ステータス意味
BUILDINGクローンとビルドを実行中
LIVEプレビュー URL で配信中
FAILEDビルドでエラーが発生しました。ログを展開して理由を確認してください
DESTROYEDクリーンアップされました。通常、プル リクエストがクローズされたためです

行の Toggle build log をクリックして、ビルド出力をインラインで展開します。このログはプレビューが失敗した場合に最初に確認する場所であり、ローカルで実行されるビルドと同じ出力です。

リストが空の場合、ページに表示されます。リポジトリでプル リクエストを開くと、数分以内にプレビューがビルドされます。

Webhook シークレットの回転

設定済みカードの Regenerate secret をクリックします。KPanel は確認を求め、現在のシークレットが直ちに機能しなくなり、その後リポジトリの webhook 設定で更新する必要があることを明確に示します。

新しいシークレットは 1 回表示され、以前と同じワンタイム カードで表示されます。シークレットをコピーしてから、リポジトリの webhook を更新します。これら 2 つのステップの間に、受信した webhook 配信は拒否されるため、2 つのステップを連続で実行してください。

リポジトリ管理者アクセス権を持つ誰かが去った場合、またはシークレットが共有チャット チャネルやチケットなど、本来あるべきでない場所に貼り付けられたことがある場合は、シークレットを再生成してください。

プレビューをオフにする

Disable をクリックします。構成がオフに切り替わり、保存されたシークレットがクリアされます。既存のプレビューは再構築されなくなります。

リポジトリの webhook も削除してクリーンアップしてください。エラーが返されるようになり、有害なことは行いませんが、エラーを永遠に返す webhook はリポジトリの配信ログのノイズになります。

コストと保守

プレビューは実際のコードをビルドして提供するため、サイト上の他のデプロイと同じリソースを使用します。2 つの習慣がそれを制御します。

  • 作業中でなくなったプル リクエストをクローズします。クローズされたプル リクエストのプレビューは自動的にクリーンアップされます。
  • プレビューを本番資格情報に指定しないでください。Secrets タブの preview 環境を使用してテスト キーを付与します。プレビューと本番構成を混同しないようにするためにあります。

プレビュー URL はプライベートではありません。これは実際の公開アクセス可能なホスト名で、有効な証明書を持ち、リンクを持っている誰でも開くことができます。実顧客データを含むものの確認にプレビューを使用しないでください。本番データベース ダンプからプレビュー環境にシードしないでください。

トラブルシューティング

プル リクエストを開くと何もビルドされません。 リポジトリの webhook の最近の配信を確認してください。401 または 403 はシークレットが一致しないことを意味するため、シークレットを再生成して両側を更新してください。配信がまったくない場合は、webhook がプル リクエスト イベントにサブスクライブされていません。

プレビューはビルドされますが、ディレクトリ リストまたは 404 が表示されます。 Git Deploy ページの出力ディレクトリは、ビルドが実際に書き込む場所と一致しません。プレビューは本番環境からその設定を継承します。

ビルドはプレビュー内でのみ失敗します。 最も一般的な原因は、本番環境に存在するが、プレビュー環境に追加されたことがない依存関係または環境変数です。Secrets ページの preview タブを確認してください。

プレビュー URL が機能しなくなりました。 その行のステータスを確認してください。DESTROYED はプル リクエストがクローズされ、環境が回収されたことを意味し、これは意図した動作です。

次に進む場所

それでもお困りですか?

こちらまでメールでお問い合わせください support@kapsulehost.com またはKPanelでチャットを開いてください。

KPanel を開く
プルリクエストのプレビュー デプロイ