# Hello Gitea API Простой REST API сервер, построенный на Go с использованием Gin framework. ## 🚀 Возможности - ✅ REST API с JSON ответами - ✅ Health check endpoint - ✅ CORS поддержка - ✅ Мультиплатформенная сборка - ✅ Docker образы для Linux AMD64/ARM64 - ✅ Автоматические релизы через Gitea Actions ## 📦 Установка ### Из бинарного файла 1. Скачайте бинарный файл для вашей платформы из [релизов](https://direct-dev.ru/gitea/GiteaAdmin/hello_gitea/releases) 2. Распакуйте архив 3. Запустите: `./hello-api-` ### Из Docker образа ```bash docker pull /hello-api:latest docker run -p 8080:8080 /hello-api:latest ``` ### Из исходного кода ```bash git clone https://direct-dev.ru/gitea/GiteaAdmin/hello_gitea.git cd hello_gitea go mod download go run main.go ``` ## 🔧 Конфигурация Сервер запускается на порту 8080 по умолчанию. Можно изменить через переменную окружения: ```bash export PORT=3000 ./hello-api ``` ## 📡 API Endpoints ### GET / Основной endpoint **Ответ:** ```json { "message": "Hello, World!", "version": "1.0.0" } ``` ### GET /healthz Health check endpoint **Ответ:** ```json { "status": "ok", "version": "1.0.0" } ``` ### GET /api/v1/info Информация о сервисе **Ответ:** ```json { "service": "hello-api", "status": "running", "version": "1.0.0" } ``` ### POST /api/v1/echo Echo endpoint - возвращает отправленное сообщение **Запрос:** ```json { "message": "Hello from client!" } ``` **Ответ:** ```json { "echo": "Hello from client!", "version": "1.0.0" } ``` ## 🛠 Разработка ### Зависимости - Go 1.21+ - Gin framework ### Сборка ```bash # Для текущей платформы go build -o hello-api main.go # Для Linux AMD64 GOOS=linux GOARCH=amd64 go build -o hello-api-linux-amd64 main.go # Для Linux ARM64 GOOS=linux GOARCH=arm64 go build -o hello-api-linux-arm64 main.go # Для Windows GOOS=windows GOARCH=amd64 go build -o hello-api-windows-amd64.exe main.go # Для macOS GOOS=darwin GOARCH=amd64 go build -o hello-api-darwin-amd64 main.go GOOS=darwin GOARCH=arm64 go build -o hello-api-darwin-arm64 main.go ``` ### Тестирование ```bash # Запуск сервера go run main.go # Тестирование API curl http://localhost:8080/ curl http://localhost:8080/healthz curl http://localhost:8080/api/v1/info curl -X POST http://localhost:8080/api/v1/echo \ -H "Content-Type: application/json" \ -d '{"message":"Hello!"}' ``` ## 🚀 CI/CD При создании тега (например, `v1.1.20`) автоматически: 1. Собираются бинарники для всех платформ 2. Создается Docker образ для Linux AMD64/ARM64 3. Образ публикуется в Docker Hub 4. Создается релиз в Gitea с бинарниками Дополнительно `.gitea/workflows/build_build.yaml` предназначен для автоматизации процесса сборки и публикации Docker-образов билдера - то есть образа который будет использоваться в основном процессе сборки и релиза. Этот workflow запускается (триггерится) автоматически при пуше тега, начинающегося с `builder-` (например, `builder-v1.2.3`), в репозиторий на сервере Gitea. Когда такой тег появляется, workflow выполняет следующие задачи: - Клонирует репозиторий и переключается на соответствующую версию кода. - Настраивает окружение для сборки Docker-образов с поддержкой мультиплатформенности (amd64 и arm64). - Выполняет аутентификацию в Docker Hub. - Собирает и публикует Docker-образы для разных архитектур (tag DOCKERHUB_USERNAME/my-build-golang-runnerr:builder-v1.2.3 и tag DOCKERHUB_USERNAME/my-build-golang-runner:latest. - Для сборки используется специальный Dockerfile (`Dockerfile.builder`) для создания образа билдера. Таким образом, данный файл обеспечивает автоматическую сборку и публикацию артефактов проекта при выпуске новых версий, что упрощает процесс релиза и гарантирует наличие актуальных образов и бинарников для пользователей. ## 📄 Лицензия MIT License