Правило Jira Automation и тело запроса
Сервисный контур начинается в Jira, а не в скрипте на Mac: одно узкое событие даёт предсказуемую нагрузку на шлюз и на очередь.
- Триггер. Привяжите правило к одному событию — например переход в статус «Ready to build» или установка согласованной метки. Избегайте цепочек «любое изменение поля», иначе webhook будет стрелять на каждую правку описания.
- Действие «Отправить веб-запрос». Метод
POST, URL видаhttps://gateway.example/openclaw/v1/jira/webhookна стабильном хосте с корпоративным TLS. - Заголовок секрета. Добавьте фиксированный заголовок, например
X-Meshmac-Secret: …, со значением длинной случайной строки; храните копию только в файле на шлюзе с правами0440(см. выше про секреты узлов). - JSON-тело. Передайте
issueKey, идентификатор проекта, целевую ветку или тег, ссылку на репозиторий, а при наличии в контексте Automation —webhookEventIdили аналог для связи с доставкой. Этого достаточно воркеру без «горячего» REST к Jira с каждого Mac. - Смоук из Jira. Выполните «Run rule» на тестовой задаче и убедитесь по логам шлюза, что пришёл один POST с ожидаемыми полями.
Ограничьте размер тела и таймаут исходящего запроса в Automation разумными значениями, чтобы зависший downstream не держал воркеры Atlassian дольше пары секунд на приёме.
Шлюз OpenClaw: секрет, сырой POST, ответ 2xx
Сначала проверка секрета, потом JSON. Прокси не должен переписывать тело до сравнения заголовка; при несовпадении отвечайте 401, чтобы в логах Jira было видно отказ аутентификации, а не «тихий» успех.
- Считайте значение
X-Meshmac-Secretи сравните с эталоном функцией вродеtimingSafeEqual. - Распарсите JSON, отбросьте неизвестные типы событий с быстрым
204во внутренний аудит «ignored». - Соберите
idempotency_key: предпочтительно изwebhookEventId; если его нет — детерминированный хеш отissueKey + имя_перехода + минутное_окно. - Запишите
build_jobв хранилище очереди и только после подтверждённой записи ответьте200/204— так вы снимаете лишние ретраи Automation при кратковременных сбоях диска.
Лимиты на краю шлюза (rate limit, конкурентность) задайте согласованно с лимитами шлюза и сессий, чтобы пики в трекере не вытеснили другие интеграции.
Токены и минимальные права
Разведите секрет webhook (знает только Jira и шлюз) и API-токен Atlassian (только шлюз для исходящих REST). Узлы MeshMac не хранят ни то ни другое.
- Jira Cloud. Отдельный сервисный аккаунт; API token + email в Basic только в конфиге шлюза; в UI Atlassian выдайте минимум прав на нужные проекты: просмотр задачи и добавление комментария; не включайте админские scope «на будущее».
- Data Center / Server. Паттерн тот же: PAT или пароль приложения только на шлюзе, узкие группы в
jira-software-usersдля целевых проектов. - Ротация. Меняйте секрет webhook и API-токен по разным календарям; после смены токена проверьте один тестовый комментарий smoke, затем включите исходящую очередь.
Если комментарий при сбое не критичен, можно оставить только broadcast в чат — но тогда договоритесь с поддержкой, где «источник правды» по логам.
Мультиузел, broadcast и комментарий при сбое
Маршрут нормализует «что сказала Jira» в единый контракт build_job: репозиторий, ref, correlation_id, опционально preferred_mesh_node_id для редких лейнов. Воркеры публикуют завершение только на шлюз с полями mesh_node_id, exit_code, duration_ms, усечённый log_tail.
Шлюз выполняет broadcast в Slack, Mattermost, Microsoft Teams или второй webhook — тот же JSON-шаблон для всех узлов, чтобы дежурный не гадал, какой Mac взял джоб. При failed шлюз сериализует исходящие вызовы по одной задаче и добавляет короткий комментарий через Jira REST: ключ, узел, exit code, ссылка на артефакт логов без вложения секретов.
При обрыве одного узла см. балансировку и failover — webhook по-прежнему один, меняется только исполнитель в пуле.
Health-проба и шаблон retry
Отдельте путь GET /health (или эквивалент) от webhook: без секрета, лёгкий ответ 200 после проверки зависимостей очереди и конфигурации. Так балансировщик и дежурная смена проверяют живость без подделки Jira; детали прогрева см. в health-пробе и прогреве skills.
Шаблон исходящих повторов к Jira REST: попытка n = 0…N, задержка min(cap, base · 2^n) + random(0, jitter_ms), уважение заголовка Retry-After при 429; при 401 — остановить очередь комментариев, залогировать, ротировать токен по runbook. Для входящих дублей от Jira держите дедуп по idempotency_key в окне хотя бы 24 часа.
Таблицу параметров base, cap, N зафиксируйте в репозитории инфраструктуры рядом с маршрутом OpenClaw, чтобы прод и стейдж не разъехались молча.
FAQ
- События из Automation не доходят до шлюза
- Проверьте условие правила и журнал выполнения в Jira; URL с опечаткой, редирект с
http→https, устаревший сертификат или WAF, режущий тело. Выполнитеcurl -vс того же заголовка секрета из публичной сети. Убедитесь, что Automation не ограничен allowlist IP вашего старого офиса. - Комментарий или REST возвращают 403
- Токен не видит проект, у сервисного пользователя нет роли в проекте, либо комментарий шлёт не шлюз, а скрипт на Mac. Верните все исходящие вызовы к Jira на шлюз; проверьте scope и ограничения организации на внешние приложения.
- Двойные или лавинообразные сборки
- Два правила на одно событие, ретраи Jira при медленном
5xxдо записи в очередь, или отсутствие идемпотентности. Введите уникальныйidempotency_key, отвечайте 2xx только после commit в очередь, оставьте одно активное правило на переход.
Кратко
Итог: одно правило Jira Automation, один webhook на шлюз OpenClaw, проверка секрета в заголовке, общая очередь MeshMac, отчёты узлов только на шлюз, broadcast и при необходимости краткий комментарий через REST с минимальными правами токена, плюс health и дисциплина retry — минимальный каркас для мультиузловой сборки из тикета в 2026 году.
Публичные страницы без входа
Главная, индекс блога, справочный центр и тарифы и покупка открываются без регистрации — удобно заранее оценить размер пула MeshMac под шлюз и стабильный контур Jira.
Замкните цикл «тикет → сборка → статус» без хаоса webhook
Дополнительные узлы MeshMac дают параллельные iOS/macOS сборки при одном входе Jira: секрет Automation и API-токен остаются на шлюзе, очередь честно раздаёт джобы, дежурные видят предсказуемый поток. Перед заказом откройте страницу тарифов и покупки (без входа в аккаунт), центр помощи по доступу, главную и индекс блога — спланируйте пропускную способность шлюза и размер пула, затем оформите покупку, когда контур Jira → OpenClaw → MeshMac будет готов к продакшену.