Automation の出站と共有トークン
トリガーは「ラベル build-mesh 付与」など狭い条件から。POST https://<gateway>/jira/automation に JSON で issue_key 等のみ。共有秘密はカスタム HTTP ヘッダ(例 X-Meshmac-Automation-Token)に載せ、openssl rand -hex 32 相当をゲートウェイ秘密と定数時間比較。秘密は 0440・通知専用グループのみ。URL はゲートウェイ 1 本に固定。
- 手順 1. ステージングで試し、成功後に本番へ複製。
- 手順 2. 本文は最小キー、PII 禁止。
ゲートウェイ検証とキュー投入
JSON より先にヘッダを検証(不一致は 401)。issue_key+automation_rule_id+コミット SHA で冪等キーを作り、durable キューへ載せた後だけ 200。完了イベントに mesh_node_id を付けてブロードキャストへ。
ヘルスプローブ(到達性)
本番前に、運用ホストから TLS とパスを確認(プロキシは Automation と同条件)。
curl -sS -o /dev/null -w "%{http_code}\n" \
-H "X-Meshmac-Automation-Token: $(sudo cat /etc/openclaw/secrets.d/jira/automation.token)" \
"https://gateway.example.com/jira/automation/health"
200 と短い JSON が返れば、Automation の「カスタム ヘッダ」欄に同じ名前と値を転記するだけでよい状態です。
出站の再試行テンプレ
受信 200 と出站再試行は分離。設定に貼れる概念例:
# outbound_notify_retry.yaml(概念例)
match_status: [429, 500, 502, 503, 504]
backoff: exponential
base_seconds: 2
max_seconds: 120
jitter_ratio: 0.2
max_attempts: 5
no_retry_on: [400, 401, 403, 404]
idempotency: "{provider_run_id}:{state}"
403 はループ禁止。キュー再試行 と揃える。
Jira REST と API トークン最小権限
ボット用アカウント+ API トークンはコメントに足る最小スコープのみ。文字列はゲートウェイ秘密領域、ローテは新→疎通→旧失効。Slack 等の Webhook URL もゲートウェイのみが保持。
FAQ(未達・403・重複)
- イベントが一切届かない
- ルール有効化・条件・実行履歴を確認。社内 DNS のみの URL は Atlassian から届かないことがある。証明書チェーンを curl で検証。
- 403 が返る
- 受信はヘッダ誤り・IP allowlist・WAF。Jira コメントはトークンスコープ・課題権限・ボットのプロジェクト参加を確認。
- 同じビルドが二重トリガーされる
- 連続フィールド更新で複数回発火しがち。ラベル/遷移でガードし、冪等窓を必ず有効化。
まとめ・次の一手(ログイン不要)
単一 URL・ヘッダ検証・キュー・出站再試行・REST 最小権限の五点セット。購入・ヘルプ・ホーム・ブログ・OpenClaw 特集 はログイン不要。