5.8 KiB
Gitea Actions для автоматической сборки Docker образов
Обзор
В проекте настроены два workflow для автоматической сборки Docker образов:
docker-build.yml- для публикации в Docker Hubdocker-build-local.yml- для публикации в локальный registry
Настройка
1. Включение Gitea Actions
Убедитесь, что Actions включены в вашем Gitea instance:
# app.ini
[actions]
ENABLED = true
DEFAULT_ACTIONS_URL = https://gitea.com
2. Настройка Secrets
Для Docker Hub (docker-build.yml):
В настройках репозитория -> Security -> Secrets добавьте:
DOCKER_USERNAME- ваш username в Docker HubDOCKER_PASSWORD- токен доступа или пароль Docker Hub
Для локального registry (docker-build-local.yml):
REGISTRY_USERNAME- username для локального registryREGISTRY_PASSWORD- пароль для локального registry
3. Конфигурация registry
Docker Hub
Workflow использует docker.io по умолчанию. Образы будут доступны как:
docker.io/YOUR_USERNAME/salvagedb-bot:latest
docker.io/YOUR_USERNAME/salvagedb-bot:main
docker.io/YOUR_USERNAME/salvagedb-bot:v1.0.0
Локальный registry
Отредактируйте файл .gitea/workflows/docker-build-local.yml:
env:
REGISTRY: your-registry.example.com # Замените на ваш URL
IMAGE_NAME: salvagedb/salvagedb-bot # Замените на желаемое имя
Триггеры сборки
Автоматические триггеры:
-
Push в ветки
mainилиdevelop- Создает образы с тегами:
latest,main,develop
- Создает образы с тегами:
-
Создание тегов начинающихся с
v(например,v1.0.0)- Создает образы с семантическими тегами:
1.0.0,1.0,1,latest
- Создает образы с семантическими тегами:
-
Pull Request в
main- Собирает образ для тестирования (не публикует)
Ручной запуск:
Для локального registry доступен ручной запуск через веб-интерфейс Gitea:
- Actions -> Workflows -> "Build and Push Docker Image (Local Registry)"
- Можно указать произвольный тег
Структура тегов
Docker Hub workflow:
latest- только для main веткиmain,develop- соответствующие веткиv1.0.0,1.0.0,1.0,1- семантические версииpr-123- для pull requests
Локальный registry workflow:
latest- для main ветки и версионных теговmain,develop- соответствующие ветки- Версионные теги как есть (
v1.0.0) - Произвольные теги при ручном запуске
Оптимизация
Кэширование
Workflows используют GitHub Actions cache для ускорения сборки:
- Кэшируются Docker слои между сборками
- Значительно ускоряет повторные сборки
Мультиплатформенная сборка
Docker Hub workflow собирает образы для:
linux/amd64(Intel/AMD)linux/arm64(ARM, включая Apple Silicon)
Локальный workflow собирает только для linux/amd64 для экономии времени.
Мониторинг
Просмотр логов
- Перейдите в Actions в веб-интерфейсе Gitea
- Выберите нужный workflow run
- Просмотрите детальные логи каждого шага
Troubleshooting
Ошибки аутентификации:
- Проверьте правильность secrets
- Убедитесь, что токены имеют права на push
Ошибки сборки:
- Проверьте валидность Dockerfile
- Убедитесь, что все зависимости доступны
Проблемы с registry:
- Проверьте доступность registry
- Убедитесь в правильности URL
Использование собранных образов
Запуск локально:
# Docker Hub
docker run -d --name salvagedb-bot \
--env-file .env \
your-username/salvagedb-bot:latest
# Локальный registry
docker run -d --name salvagedb-bot \
--env-file .env \
registry.example.com/salvagedb/salvagedb-bot:latest
Docker Compose:
version: '3.8'
services:
bot:
image: your-username/salvagedb-bot:latest
# или
# image: registry.example.com/salvagedb/salvagedb-bot:latest
env_file: .env
restart: unless-stopped
Безопасность
- Secrets хранятся зашифрованными в Gitea
- Токены должны иметь минимальные необходимые права
- Рекомендуется использовать отдельные токены для CI/CD
- Регулярно ротируйте access tokens
Дополнительные возможности
Уведомления
Можно добавить уведомления в Slack/Discord/Telegram о статусе сборки.
Сканирование безопасности
Можно интегрировать сканеры уязвимостей (Trivy, Snyk).
Деплой
Можно расширить workflow для автоматического деплоя в staging/production.