This commit is contained in:
2026-09-19 09:50:20 +00:00
parent c5db3fefad
commit 9eb352f2c2
4 changed files with 395 additions and 0 deletions

243
Readme.md Normal file
View File

@@ -0,0 +1,243 @@
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