7.4 KiB
- Получение API токена в Gitea Войдите в Gitea
Перейдите в Настройки пользователя → Приложения (Settings → Applications)
В разделе "Manage Access Tokens" нажмите "Generate Token"
Укажите имя: webhook-handler
Выберите права: read:repository (достаточно для чтения коммитов)
Нажмите "Generate Token" и скопируйте токен (он показывается только один раз)
- Настройка 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"
- . Подготовка сервера Установите 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