mablブランチのスナップショット - masterまたは他のブランチ - は、スナップショットが作成されたときにワークスペースに存在するテストバージョンのコレクションです。開発ブランチを使用すると、テストに対して個別の変更を加えることができますが、スナップショットは特定の時点でテストとフローの状態を固定し、それらをmabl環境に関連付けます。
この記事では、スナップショットの仕組みについて説明します。
スナップショット環境の設定方法については、スナップショットの管理に関する記事をご覧ください。
ユースケース
スナップショットの主な使用ケースは、アプリケーションにこれ以上の変更が予想されない安定した環境で一連のテストを実行することです。一方で、他の環境では、テストとフローの開発を続けることができます。CI/CDパイプラインでコードの変更が環境を越えて進行する際に、新しいスナップショットをトリガーすることで、テストの変更も一緒に進行させることができます。
スナップショットを試してみたい場合は、デプロイメントパイプライン内の最初の環境にスナップショットを使用するのではなく、下流の環境をスナップショットすることをお勧めします。
このセットアップでは、mablのマスターブランチが最初の環境で実行され、スナップショットのバージョンを更新したり、下流の環境に影響を与えたりすることを心配せずにマスターを更新できます。コードが下流の環境にデプロイされると、マスターからそれぞれのスナップショットを更新できます。
仕組み
スナップショットは作成されます。--snapshot-from
オプションを使用してデプロイメントエベントをトリガーすることで、環境をmablブランチ上のテストの最新バージョンに固定します。
環境のスナップショットが作成されると、そのスナップショットから作成された特定のバージョンのテストとフローがmablで実行されます。その環境でのプラン実行は、スケジュール、手動、またはAPIを通じてトリガーされるかに関わらず、デフォルトでスナップショットバージョンを使用します。
スナップショット環境での実行は、ブランチアイコンで示されます。
テストとフローが更新されても、スナップショット環境でのプラン実行は依然としてスナップショットバージョンを使用します。スナップショットが更新または削除されるまでです。スナップショットの作成、更新、削除に関する詳細な手順については、スナップショットの管理の記事をご覧ください。
スナップショットは、プランで実行されるテストのみサポートされています。アドホックテスト実行は、どの環境で実行されるかに関わらず、選択されたブランチの最新バージョンを使用します。
サンプルシナリオ
スナップショットの動作を説明するために、次のデプロイメントパイプラインを考えてみましょう。ここでは、スナップショットが2つの下流環境、QAとProdに固定されています。
開発者が「user_registration_update」というコードブランチでアプリのユーザー登録フローに変更を加えると、その影響を受けるエンドツーエンドテストをmablで更新し、同じ名前のmablブランチ「user_registration_update」に変更を保存します。
mablテストのブランチバージョンをローカルアプリ環境で実行して検証した後、コードはマスターにマージされ、Dev環境にデプロイされます。mablブランチもマスターにマージされ、更新されたマスターテストバージョンは、デプロイ後すぐに、そして毎晩1回、Dev環境に対して実行されます。
現時点では、コードの変更は2つの下流環境、QAとProdにデプロイされていません。これらの環境は、更新されたマスターよりも古いスナップショット版のテストを実行しています。
コードがDevからQAにデプロイされると、QA環境のスナップショットはテストの最新のマスターバージョンで更新されますが、Prodは古いスナップショットバージョンを実行し続けます。
詳細を学ぶ
スナップショットの作成を始めるには、スナップショットの管理に関するドキュメントをご覧ください。