mablは、Webhookを使用して現在の継続的インテグレーション (CI) ワークフローと簡単に統合できます。以下の手順を実行すると、すぐにWebhookを設定できます。
Webhookの追加
- 左側のナビゲーションパネルにあるリンクをクリックして、mablダッシュボードから [Settings] に移動します。
- [Webhooks] タブをクリックします。
- ページを調べます。これまでに追加したWebhookがある場合は、ここの上部に表示されます。
- さらに、[Add Webhook] というタイトルのセクションがあり、ワークフローインテグレーションの設定を開始できます。
- [Name] フィールドにWebhookの名前を、[URL] フィールドにターゲットのURLを入力します。mablは、保留中または完了した実行について記述したJSONペイロードを使用して、このURLを呼び出します (詳細は後述)。
- 名前とURLを追加したら、[Bound Lifestyle Stages] を実行前と実行後のどちらか、または両方に設定できます。
[Pre-execution] のWebhookは、任意のテスト実行が開始される前に起動されます。 |
[Post-execution] のWebhookは、すべてのテスト実行が完了した後に起動されます。 |
- 次に、結果を [On Success] と [On Failure] のどちらか、または両方に設定します。
On Failure: 実行後のWebhookで使用します。テスト実行が失敗した場合にのみ起動されます。 |
On Success: 実行後のWebhookで使用します。すべてのテスト実行が成功した場合にのみ起動されます。 |
-
次に、[Require a success response before executing plan] をオンまたはオフに設定できます。これは、テスト実行を続行するために、エンドポイントが2xxまたは3xxの成功レスポンスステータス (たとえば200) を返すことを要求する設定であり、返さない場合、テストは失敗します。実行前のWebhookにのみ適用されます。該当するユースケースは、テストの開始前にアプリケーションデータベースをセットアップする顧客側スクリプトです。実行後のWebhookには条件は適用されず、失敗コードを返した場合でもプランは成功としてマークされます。
-
最後に、必要に応じて [Strict SSL Validation] をオフにすることができます。mablは、すべての接続に有効なSSL証明書を使用するようにしますが、一部のCIサーバーは自己署名証明書を使用する場合があります。
Webhookのタイミング
特定のワークスペースのすべてのWebhookは、並行して起動されます。各Webhookは60秒以内に完了する必要があります。それ以上かかると、失敗したと見なされます。
Webhookペイロード
Webhookエンドポイントは、実行中のプランとテスト実行の情報を含むJSONを受け取ります。
注: "success" 属性は、terminated、cancelled、failedの状態が発生するまでtrueとなります。
"status" の状態は、順にqueued、scheduling、scheduled、(succeeded、failed、cancelled)、completedです。
実行前のペイロード
{
"status": "queued",
"status_cause": null,
"success": true,
"plan": {
"id": "4ba4550d-df2b-4df2-8799-46c44dbb4b9e",
"name": "Print click and assert Plan",
"labels": [ "apple", "zebra"],
"href": "https://api.mabl.com/v1/schedule/runPolicy/4ba4550d-df2b-4df2-8799-46c44dbb4b9e",
"tags": []
},
"plan_execution": {
"status": "queued",
"status_cause": null,
"id": "d5b96d02-c45d-4d08-8684-de55411bcede",
"href": "https://api.mabl.com/v1/execution/runPolicyExecution/d5b96d02-c45d-4d08-8684-de55411bcede"
},
"journeys": [
{
"id": "c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
"name": "Print, then assert",
"labels": [ "apple", "zebra"],
"href": "https://api.mabl.com/v1/test/journey/c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
"tags": [
"training"
]
}
],
"journey_executions": [],
"start_time": null,
"stop_time": null,
"tags": [],
"results": [],
"message_version": "1.0.0"
}
実行後のペイロード
{
"status": "succeeded",
"status_cause": null,
"success": true,
"plan": {
"id": "4ba4550d-df2b-4df2-8799-46c44dbb4b9e",
"name": "Print click and assert Plan",
"labels": [ "apple", "zebra"],
"href": "https://api.mabl.com/v1/schedule/runPolicy/4ba4550d-df2b-4df2-8799-46c44dbb4b9e",
"tags": []
},
"plan_execution": {
"status": "succeeded",
"status_cause": null,
"id": "d5b96d02-c45d-4d08-8684-de55411bcede",
"href": "https://api.mabl.com/v1/execution/runPolicyExecution/d5b96d02-c45d-4d08-8684-de55411bcede"
},
"journeys": [
{
"id": "c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
"name": "Print, then assert",
"labels": [ "apple", "zebra"],
"href": "https://api.mabl.com/v1/test/journey/c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
"tags": [
"training"
]
}
],
"journey_executions": [
{
"status": "completed",
"status_cause": null,
"success": true,
"name": "Print, then assert",
"journey_id": "c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
"journey_execution_id": "c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
"start_time": 1517612117504,
"stop_time": 1517612146280,
"href": "https://api.mabl.com/v1/execution/runPolicyExecution/4ba4550d-df2b-4df2-8799-46c44dbb4b9e/testScriptExecution/c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
"results_href": "https://app.mabl.com/workspaces/3627972b-a762-4a87-a3fb-97cde3e9c414/test/plan-executions/d5b96d02-c45d-4d08-8684-de55411bcede/journeys/c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0",
"test_cases": [
{
"id": "MABL-1234"
},
{
"id": "MABL-999"
}
]
}
],
"start_time": 1517612110113,
"stop_time": 1517612146368,
"tags": [],
"results": [
{
"success": true,
"name": "Print, then assert",
"results_href": "https://app.mabl.com/workspaces/3627972b-a762-4a87-a3fb-97cde3e9c414/test/plan-executions/d5b96d02-c45d-4d08-8684-de55411bcede/journeys/c221c1f8-aa52-4fdb-a1bd-5ee5b408ac9f:0"
}
],
"message_version": "1.0.0"
}