--- name: jira-workflow description: Используй, когда нужно работать с корпоративным трекером задач (Jira) — прочитать тикет по ключу, добавить комментарий, приложить ссылку на MR, разобраться в статусах и переходах. Применяй при упоминании ключей задач, «тикет», «задача в трекере», «переведи в статус», а также в командах /bugfix и /feature. --- # Работа с трекером задач (Jira) Скилл описывает, как читать и обновлять задачи в нашем трекере через REST API. ## Откуда берутся адрес и токен **Никогда не хардкодь и не спрашивай их отдельно — они уже есть в окружении.** - **Базовый адрес трекера** — из переменной окружения `TRACKER_URL`. Если она не задана, возьми адрес трекера из корпоративного контекста сессии (его инжектит расширение `company-context`). - **Токен доступа** — из переменной окружения `JIRA_TOKEN` (personal access token). - Токен в команды и логи не подставляй в открытом виде — скрипты читают его из окружения сами. Для создания merge request в GitLab дополнительно нужен `GITLAB_TOKEN` (токен с scope `api`); хост и путь проекта скрипт определяет из `git remote origin` (или `GITLAB_HOST`) — адреса не хардкодятся. Быстрая проверка окружения: ```bash : "${TRACKER_URL:?установи TRACKER_URL или возьми адрес из корпоративного контекста}" : "${JIRA_TOKEN:?установи JIRA_TOKEN (personal access token трекера)}" ``` ## Готовые скрипты Все скрипты лежат в `scripts/` и читают `TRACKER_URL` и `JIRA_TOKEN` из окружения: - `./scripts/get-issue.sh ` — получить тикет (поля summary, status, description). - `./scripts/add-comment.sh "<текст>"` — добавить комментарий. - `./scripts/link-mr.sh "" ["<заголовок>"]` — приложить ссылку на MR (добавляется комментарием со ссылкой; при доступном remote link API — см. TODO в скрипте). - `./scripts/create-mr.sh "" [target] [source] [jira-key]` — создать merge request в GitLab (по текущей ветке), вывести его URL и, если передан `jira-key` и заданы `TRACKER_URL`/`JIRA_TOKEN`, автоматически приложить ссылку к тикету. Пример: ```bash ./scripts/get-issue.sh PROJ-123 ./scripts/add-comment.sh PROJ-123 "Начал работу, воспроизвёл баг" ./scripts/link-mr.sh PROJ-123 "https://<git-host>/ai/foo/-/merge_requests/42" "Fix PROJ-123" # создать MR из текущей ветки в main и сразу привязать к тикету: GITLAB_TOKEN=... ./scripts/create-mr.sh "Fix PROJ-123: NPE" main "" PROJ-123 ``` Флаги окружения `create-mr.sh`: `GITLAB_TOKEN` (обязателен), `GITLAB_HOST` (override хоста), `MR_PUSH=0` (не пушить ветку), `MR_DRY_RUN=1` (показать запрос без вызова API). MR из защищённой/релизной ветки (`main`/`master`/`release-*`) скрипт создавать откажется. ## Соглашения - **Формат ключей задач:** вида `PROJ-123` (буквенный префикс проекта + номер). `<!-- TODO: перечислить реальные префиксы проектов -->` - **Статусы и переходы:** To Do → In Progress → Review → Done. - **Кто и когда меняет статус:** разработчик переводит тикет: в **In Progress** — при старте работы; в **Review** — при выставлении MR (в тикет добавляется ссылка на MR); в **Done** — после мержа. - **Что писать в комментарии:** при старте — кратко о начале работы; при готовности — ссылку на MR (используй `create-mr.sh`, который сразу приложит ссылку, либо `link-mr.sh`). ## Полезное - ID переходов статуса можно получить через `GET /rest/api/2/issue/<KEY>/transitions`, выполнить переход — `POST` туда же с `{"transition":{"id":"<id>"}}`. - Если API возвращает 401/403 — проверь `JIRA_TOKEN` и права. Не логируй сам токен.