インテグレーション
インテグレーションを使用すると、GitHub や GitLab などの外部サービスと Semaphore の間の連携を確立できます。

プロジェクトの Webhook URL は一覧の上に表示されます。各インテグレーションには名前と、起動するテンプレートがあります。インテグレーションをクリックすると、マッチャーと値の抽出ルールを設定できます。

インテグレーションを使用すると、専用のエンドポイント(エイリアス)を呼び出して特定のテンプレートをトリガーできます。エンドポイントには、次のいずれかの認証方式を設定できます。
- GitHub Webhooks
- トークン
- HMAC (SHA-256)
- HMAC (SHA-512)
- 認証なし
エイリアスは次の形式の URL を表します: /api/integrations/<random_string>。GET と POST のリクエストに対応しています。
HMAC 認証
HMAC 認証方式(hmac / SHA-256 および hmac-sha512 / SHA-512)は、Webhook の本文が共有シークレットで署名されていることを検証します。
次の項目を設定します。
- Auth header — 署名を格納するリクエストヘッダー(例:
X-SignatureまたはX-Hub-Signature-256)。 - Auth secret — キーストアのログイン/パスワード認証情報。Semaphore は パスワード の値を HMAC シークレットとして使用します。
送信側は、未加工のリクエスト本文に対する HMAC ダイジェストを プレフィックスのない16進数 でこのヘッダーに設定する必要があります(sha256= / sha512= プレフィックスは付けません)。Semaphore は、設定されたシークレットを使用して本文から計算した HMAC-SHA256 または HMAC-SHA512 と比較します。
OpenSSL を使用した SHA-512 の例:
SECRET='your-webhook-secret'
BODY='{"event":"deploy"}'
SIG="$(printf '%s' "$BODY" | openssl dgst -sha512 -hmac "$SECRET" | awk '{print $2}')"
curl -X POST "https://semaphore.example.com/api/integrations/<alias>" \
-H "Content-Type: application/json" \
-H "X-Signature: ${SIG}" \
--data "$BODY"
マッチャー
マッチャーでは、受信リクエストのパラメーターを定義できます。これらのパラメーターが一致すると、テンプレートが呼び出されます。
値の抽出ルール
抽出ルールを使用すると、リクエストのヘッダーまたはボディ(JSON フィールドまたは文字列)からデータを取得し、タスクに渡せます。抽出された各値には 変数の種類 があります。
- 環境変数: 値がタスクの環境変数に追加され、変数グループの同名の変数を上書きします。
- タスクパラメーター: 値がタスクのパラメーター(たとえばサーベイ変数やプロンプト)になります。
タスクパラメーター
インテグレーションは、パラメーター付きでタスクをトリガーできます。値の抽出ルールを使用してタスクパラメーター用の JSON ペイロードを構築し、プロンプトで渡される値を受け取れるようテンプレートを設定してください。
エイリアスとマッチャーに関する注意
プロジェクトのエイリアス(インテグレーション一覧の上に表示される URL)は、そのプロジェクトのすべてのインテグレーションで共有されます。Semaphore は各インテグレーションのマッチャーを確認し、マッチャーが一致したテンプレートを起動します。インテグレーションは独自のエイリアスを持つこともでき、そのエイリアスへのリクエストでは、マッチャーを評価せずにそのインテグレーションが起動します。必要に応じてトークンまたは HMAC による認証を優先し、パラメーターは抽出ルールで渡してください。