- creates a merge request via GitLab API (curl + GITLAB_TOKEN, PRIVATE-TOKEN header) - derives host + project path from git remote origin (or GITLAB_HOST); no hardcoded URLs - refuses to open an MR from a protected source branch; MR_PUSH/MR_DRY_RUN toggles - optionally attaches the MR link to a Jira ticket via link-mr.sh - verified parsing for ssh (scp-form) and https remotes incl. nested namespaces
4.8 KiB
4.8 KiB
name, description
| name | description |
|---|---|
| jira-workflow | Используй, когда нужно работать с корпоративным трекером задач (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) — адреса не хардкодятся.
Быстрая проверка окружения:
: "${TRACKER_URL:?установи TRACKER_URL или возьми адрес из корпоративного контекста}"
: "${JIRA_TOKEN:?установи JIRA_TOKEN (personal access token трекера)}"
Готовые скрипты
Все скрипты лежат в scripts/ и читают TRACKER_URL и JIRA_TOKEN из окружения:
./scripts/get-issue.sh <KEY>— получить тикет (поля summary, status, description)../scripts/add-comment.sh <KEY> "<текст>"— добавить комментарий../scripts/link-mr.sh <KEY> "<url-MR>" ["<заголовок>"]— приложить ссылку на MR (добавляется комментарием со ссылкой; при доступном remote link API — см. TODO в скрипте)../scripts/create-mr.sh "<title>" [target] [source] [jira-key]— создать merge request в GitLab (по текущей ветке), вывести его URL и, если переданjira-keyи заданыTRACKER_URL/JIRA_TOKEN, автоматически приложить ссылку к тикету.
Пример:
./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/*) скрипт создавать откажется.
Соглашения
- Формат ключей задач:
<!-- TODO: например PROJ-123, префиксы проектов --> - Статусы и переходы:
<!-- TODO: рабочий процесс, напр. To Do → In Progress → In Review → Done --> - Кто и когда меняет статус:
<!-- TODO: договорённости команды --> - Что писать в комментарии при старте/готовности:
<!-- TODO -->
Полезное
- ID переходов статуса можно получить через
GET /rest/api/2/issue/<KEY>/transitions, выполнить переход —POSTтуда же с{"transition":{"id":"<id>"}}. - Если API возвращает 401/403 — проверь
JIRA_TOKENи права. Не логируй сам токен.