External Integrations
Whilly может автоматически закрывать задачи во внешних системах после успешного выполнения:
- GitHub Issues 🔗
- Jira Tasks 🎫
- Linear Issues (планируется)
🚀 Quick Start
GitHub Issues (автоматически)
- Авторизуйся в GitHub CLI:
gh auth login - Включи автоматическое закрытие:
export WHILLY_GITHUB_AUTO_CLOSE=true export WHILLY_GITHUB_ADD_COMMENTS=true - Создавай задачи через
--from-github- Issues будут автоматически закрываться!
Jira Tasks
- Настрой переменные окружения:
export WHILLY_JIRA_ENABLED=true export WHILLY_JIRA_SERVER_URL="https://company.atlassian.net" export WHILLY_JIRA_USERNAME="your.email@company.com" export JIRA_API_TOKEN="your_api_token" - Добавь Jira ключи в описания задач:
{ "description": "Fix user authentication ABC-123", "jira_key": "ABC-123" }
📋 Конфигурация
Переменные окружения
# Общие настройки
WHILLY_CLOSE_EXTERNAL_TASKS=true # Включить/выключить все интеграции
# GitHub
WHILLY_GITHUB_AUTO_CLOSE=true # Закрывать Issues автоматически
WHILLY_GITHUB_ADD_COMMENTS=true # Добавлять комментарии о завершении
# Jira
WHILLY_JIRA_ENABLED=false # Включить Jira интеграцию
WHILLY_JIRA_SERVER_URL="" # URL Jira сервера
WHILLY_JIRA_USERNAME="" # Jira username
WHILLY_JIRA_AUTO_CLOSE=true # Закрывать задачи автоматически
WHILLY_JIRA_ADD_COMMENTS=true # Добавлять комментарии
WHILLY_JIRA_TRANSITION_TO="Done" # Статус для закрытия
# Безопасность (токены всегда через env)
JIRA_API_TOKEN="" # Jira API токен
Конфигурационный файл
Скопируй config/integrations.example.json → config/integrations.json:
{
"enabled": true,
"github": {
"enabled": true,
"auto_close": true,
"add_comments": true
},
"jira": {
"enabled": true,
"server_url": "https://company.atlassian.net",
"username": "user@company.com",
"auto_close": true,
"add_comments": true,
"transition_to": "Done"
}
}
🔧 Как это работает
GitHub Issues
- Извлечение из Issues -
--from-githubсохраняет номер Issue и URL - Выполнение задачи - Whilly делает коммиты
- Автоматическое закрытие:
- Добавляет комментарий с информацией о завершении
- Закрывает Issue с reason “completed”
Jira Tasks
- Обнаружение Jira ключей:
- Из отдельного поля
jira_key - Из описания задачи (паттерн
ABC-123)
- Из отдельного поля
- Завершение:
- Добавляет комментарий о завершении
- Переводит в статус “Done” (настраивается)
Пример коментария
🤖 **Whilly Task Completed**
- **Task ID**: `gh-1-add-contributing-badge`
- **Status**: ✅ Completed successfully
- **Commit**: f04ebb1a
*Automated by [Whilly Orchestrator](https://github.com/mshegolev/whilly-orchestrator)*
🎯 Интеграция с воркшопом
# 1. Извлечь GitHub Issues
python3 -m whilly --from-github workshop,whilly:ready
# 2. Запустить с автозакрытием
WHILLY_GITHUB_AUTO_CLOSE=true python3 -m whilly tasks-from-github.json
# 3. Issues автоматически закроются после выполнения! 🎉
🛠️ Расширение
Для добавления новых систем (Linear, Asana, etc):
- Наследуй
ExternalIntegration - Реализуй
close_task()иadd_comment() - Добавь в
ExternalIntegrationManager._setup_integrations() - Обновить
github_converter.pyдля извлечения ссылок
🚨 Troubleshooting
GitHub
# Проверь авторизацию
gh auth status
# Очисти проблемный токен
unset GITHUB_TOKEN
gh auth refresh
Jira
# Проверь подключение
curl -u "username:$JIRA_API_TOKEN" \
"$JIRA_SERVER_URL/rest/api/2/myself"
# Проверь доступные переходы
curl -u "username:$JIRA_API_TOKEN" \
"$JIRA_SERVER_URL/rest/api/2/issue/ABC-123/transitions"
Логи
# Включи отладку
export WHILLY_LOG_LEVEL=DEBUG
# Проверь логи
tail -f whilly.log | grep -i "external\|integration\|close"
Результат: Полностью автоматический цикл от GitHub Issue → выполнение → закрытие задачи! 🔄✨