コンテンツにスキップ

Git の構成

mapi と呼ばれる Mayhem API testing CLI ツールは、Git リポジトリ内で実行 した場合、Git を利用します。mapi は作成者、ブランチ、コミット SHA、コミット メッセージ、親コミット SHA を検出します。この情報はジョブにアタッチされ、 Mayhem がジョブに関して有用な情報を表示するのに役立てられます。

デフォルト ブランチ

デフォルト ブランチは、比較および全体的なターゲットの状態のベースラインと みなされます。典型的なデフォルト ブランチは mainmaster、または develop です。デフォルトのブランチは、ターゲットの設定ページで 設定されます。

デフォルトのブランチで実行されたジョブは、ジョブの行にデフォルト タグが表示されます。

デフォルトのブランチで見つかった問題は、他のブランチでも再生されます。

Diff

Mayhem は Git のコンテキストでジョブ間の差分を計算する 2 つの方法を サポートしています。

注意: 差分を自動検出するには、シャローではない履歴が必要です。

デフォルト ブランチのジョブ

デフォルト ブランチのジョブが直前のコミットの最後のジョブと比較されます。

パイプラインの失敗または CI 構成によってデフォルト ブランチの直前のコミットに ジョブない場合、数値の代わりに差分が存在しない理由の説明が表示されます。

たとえば、直前のコミットの SHA を検索するコマンドは git rev-parse HEAD~1 です。

Jenkins

Jenkins はコミットをまとめてグループ化することができます。
環境変数 GIT_PREVIOUS_SUCCESSFUL_COMMIT が設定されている場合、Jenkins のデフォルト ブランチのジョブは、この環境変数の値を使用します。 Jenkins はyour-jenkins.host/env-vars.html で利用可能な変数を公開しています。GIT_PREVIOUS_SUCCESSFUL_COMMIT が利用できない場合、 Mayhem はフォールバックとして上記のロジックを使用します。

ブランチのジョブ

デフォルト ブランチ以外のブランチで実行されたジョブは、デフォルト ブランチと ベースをマージするコミットの最後のジョブと比較されます。

マージ ベース コミットが見つからない場合、またはパイプラインの失敗または CI 構成によってジョブが存在しない場合、 数値の代わりに差分が存在しない理由の説明が表示されます。

git コマンドの例は git merge-base HEAD origin/main です。

Git 履歴

GitHub Actions などの一部の CI は、デフォルトではリポジトリのシャロー クローンをフェッチします。
可能であれば、リポジトリ全体をクローンすることを推奨します。 リポジトリ全体をクローンすることが望ましくない、あるいは不可能な場合は、 マージ ベースをキャプチャする深さの部分的クローンが推奨されます。

指定されたコンテキストで親 SHA を検出できない場合、Mayhem はリポジトリを 50 コミットずつ深く探索し、 そのたびに SHA 検出を試みます。 この処理には、CI ステップの git がリモート リポジトリへのフェッチ アクセスを利用できる必要があります。

前回のジョブの識別

ジョブ行の diff ステータスの上にカーソルを置くと、diff のベースラインとして 使用された前回のジョブを参照できます。

Previous Job

親 SHA のオーバーライド

プロジェクトの Git ワークフローがデフォルトの動作と互換性がない場合、 親 SHA を指定することでオーバーライドできます。

mapi run \
     <target_name> \
     auto \
     <path_to_api_specification> \
     --url "https://example.com" \
     --parent-sha <your_sha>

トラブルシューティング

Git ブランチまたはコミット情報がない場合

mapi で Git サポートを有効化するには、次のとおりであることを確認します。 * Git リポジトリのパス内で実行された * Path 上で git が利用可能である

diff がない場合

mapi を実行する前に、CI プロバイダーに shell スクリプトを追加し、 出力が SHA であることを検証してください。

# this should return the SHA when the default branch is checked out
git rev-parse HEAD~1

# this should return a SHA when 
git merge-base HEAD origin/main