1. Получение API токена в Gitea Войдите в Gitea Перейдите в Настройки пользователя → Приложения (Settings → Applications) В разделе "Manage Access Tokens" нажмите "Generate Token" Укажите имя: webhook-handler Выберите права: read:repository (достаточно для чтения коммитов) Нажмите "Generate Token" и скопируйте токен (он показывается только один раз) 2. Настройка Webhook в Gitea Откройте репозиторий в Gitea Перейдите в Настройки → Вебхуки (Settings → Webhooks) Нажмите "Add Webhook" → выберите "Gitea" Заполните форму: Поле Значение Target URL http://IP-вашего-сервера:5000/webhook (например, http://192.168.1.100:5000/webhook) HTTP Method POST POST Content Type application/json Secret (опционально) можно оставить пустым Trigger On Выберите "Push Events" и "Delete Events" Branch filter Оставьте пустым (или укажите конкретные ветки) Active ✅ Включено Нажмите "Add Webhook" 3. . Подготовка сервера Установите Python и зависимости: bash # Установка Python (если не установлен) # Для Ubuntu/Debian: sudo apt update sudo apt install python3 python3-pip # Для Windows: скачайте с python.org # Установка зависимостей pip install flask requests Скачайте и настройте приложение: bash # Создайте директорию mkdir gitea-webhook cd gitea-webhook и скопируйте в нее файл app.py #Настройте переменные окружения: bash # Установите переменные (для Linux/Mac) export GITEA_URL=https://gitea.your-company.com export GITEA_TOKEN=your_api_token_here # Для Windows (cmd) set GITEA_URL=https://gitea.your-company.com set GITEA_TOKEN=your_api_token_here # Для Windows (PowerShell) $env:GITEA_URL="https://gitea.your-company.com" $env:GITEA_TOKEN="your_api_token_here" Запустите приложение: bash python app.py Инструкция по тестированию обнаружения новых и удаленных коммитов Подготовка bash # 1. Создайте тестовый репозиторий или используйте существующий mkdir test-webhook cd test-webhook # 2. Инициализируйте репозиторий git init # 3. Добавьте удаленный репозиторий (Gitea) git remote add origin https://gitea.daes.prosyst.ru/YOUR_USER/test-webhook.git # 4. Создайте первый коммит (базовый) echo "Initial content" > README.md git add README.md git commit -m "Initial commit" git push -u origin main Сценарий 1: Создание ветки с несколькими коммитами bash # 1. Создайте ветку feature git checkout -b feature/TSK-100 # 2. Создайте 3 коммита с задачами echo "Feature 1" > feature1.txt git add feature1.txt git commit -m "TSK-100: Add feature 1" echo "Feature 2" > feature2.txt git add feature2.txt git commit -m "TSK-100: Add feature 2" echo "Feature 3" > feature3.txt git add feature3.txt git commit -m "TSK-100: Add feature 3" # 3. Push ветку git push -u origin feature/TSK-100 Ожидаемый вывод в консоли: text ====================================================================== [PUSH] user/test-webhook:feature/TSK-100 [NEW] 3 commits: + abc123: TSK-100: Add feature 1 + def456: TSK-100: Add feature 2 + ghi789: TSK-100: Add feature 3 [SUMMARY] Found tasks: TSK-100 Сценарий 2: Rebase (переписывание истории) Вариант A: Изменение сообщения коммита (reword) bash # 1. Сделайте rebase последних 3 коммитов git rebase -i HEAD~3 # В редакторе появится: # pick abc123 TSK-100: Add feature 1 # pick def456 TSK-100: Add feature 2 # pick ghi789 TSK-100: Add feature 3 # 2. Измените pick на reword для второго коммита: # pick abc123 TSK-100: Add feature 1 # reword def456 TSK-100: Add feature 2 # pick ghi789 TSK-100: Add feature 3 # 3. В открывшемся редакторе измените сообщение на: # "TSK-100: Update feature 2" # 4. Сохраните и выйдите # 5. Force push git push --force origin feature/TSK-100 Ожидаемый вывод в консоли: text ====================================================================== [PUSH] user/test-webhook:feature/TSK-100 [NEW] 3 commits: + abc123: TSK-100: Add feature 1 + def456: TSK-100: Update feature 2 + ghi789: TSK-100: Add feature 3 [REMOVED] 1 commits: - def456_old: TSK-100: Add feature 2 Вариант B: Объединение коммитов (squash) bash # 1. Начните rebase git rebase -i HEAD~3 # 2. Измените на squash: # pick abc123 TSK-100: Add feature 1 # squash def456 TSK-100: Add feature 2 # squash ghi789 TSK-100: Add feature 3 # 3. В редакторе объедините сообщения: # TSK-100: Add all features # 4. Сохраните и выйдите # 5. Force push git push --force origin feature/TSK-100 Ожидаемый вывод в консоли: text ====================================================================== [PUSH] user/test-webhook:feature/TSK-100 [NEW] 1 commits: + abc123_new: TSK-100: Add all features [REMOVED] 2 commits: - def456_old: TSK-100: Add feature 2 - ghi789_old: TSK-100: Add feature 3 Вариант C: Удаление коммита (drop) bash # 1. Начните rebase git rebase -i HEAD~3 # 2. Удалите строку с коммитом: # pick abc123 TSK-100: Add feature 1 # drop def456 TSK-100: Add feature 2 # pick ghi789 TSK-100: Add feature 3 # 3. Сохраните и выйдите # 4. Force push git push --force origin feature/TSK-100 Ожидаемый вывод в консоли: text ====================================================================== [PUSH] user/test-webhook:feature/TSK-100 [NEW] 2 commits: + abc123: TSK-100: Add feature 1 + ghi789: TSK-100: Add feature 3 [REMOVED] 1 commits: - def456: TSK-100: Add feature 2 Сценарий 3: Изменение последнего коммита (amend) bash # 1. Измените последний коммит echo "Updated feature" > feature3.txt git add feature3.txt git commit --amend -m "TSK-100: Updated feature 3" # 2. Force push git push --force origin feature/TSK-100 Ожидаемый вывод в консоли: text ====================================================================== [PUSH] user/test-webhook:feature/TSK-100 [NEW] 1 commits: + ghi789_new: TSK-100: Updated feature 3 [REMOVED] 1 commits: - ghi789_old: TSK-100: Add feature 3 Сценарий 4: Удаление ветки bash # 1. Удалите ветку локально и на сервере git checkout main git branch -d feature/TSK-100 git push origin --delete feature/TSK-100 Ожидаемый вывод в консоли: text ====================================================================== [WEBHOOK] Event: delete [BRANCH DELETED] refs/heads/feature/TSK-100 [TASKS IN DELETED BRANCH] TSK-100