Git の構成¶
mapi
と呼ばれる Mayhem API testing CLI ツールは、Git リポジトリ内で実行
した場合、Git を利用します。mapi は作成者、ブランチ、コミット SHA、コミット
メッセージ、親コミット SHA を検出します。この情報はジョブにアタッチされ、
Mayhem がジョブに関して有用な情報を表示するのに役立てられます。
デフォルト ブランチ¶
デフォルト ブランチは、比較および全体的なターゲットの状態のベースラインと
みなされます。典型的なデフォルト ブランチは main
、master
、または 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 のベースラインとして 使用された前回のジョブを参照できます。
親 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