Anton Kuznetcov dd3de165f7
All checks were successful
Release Build / create-release-branch (push) Successful in 8s
Release v1.0.27
2025-07-28 11:46:04 +06:00
2025-07-28 11:46:04 +06:00
2025-07-28 09:56:39 +06:00
2025-07-28 09:56:39 +06:00
2025-07-28 11:46:04 +06:00
2025-07-28 09:56:39 +06:00
2025-07-28 11:46:04 +06:00
2025-07-28 11:46:04 +06:00
2025-07-28 09:56:39 +06:00
2025-07-28 09:56:39 +06:00
2025-07-28 09:56:39 +06:00
2025-07-28 09:56:39 +06:00
2025-07-28 09:56:39 +06:00
2025-07-28 11:46:04 +06:00
2025-07-28 11:46:04 +06:00
2025-07-28 10:13:37 +06:00

Hello Gitea API

Простой REST API сервер, построенный на Go с использованием Gin framework.

🚀 Возможности

  • REST API с JSON ответами
  • Health check endpoint
  • CORS поддержка
  • Мультиплатформенная сборка
  • Docker образы для Linux AMD64/ARM64
  • Автоматические релизы через Gitea Actions

📦 Установка

Из бинарного файла

  1. Скачайте бинарный файл для вашей платформы из релизов
  2. Распакуйте архив
  3. Запустите: ./hello-api-<platform>

Из Docker образа

docker pull <username>/hello-api:latest
docker run -p 8080:8080 <username>/hello-api:latest

Из исходного кода

git clone https://direct-dev.ru/gitea/GiteaAdmin/hello_gitea.git
cd hello_gitea
go mod download
go run main.go

🔧 Конфигурация

Сервер запускается на порту 8080 по умолчанию. Можно изменить через переменную окружения:

export PORT=3000
./hello-api

📡 API Endpoints

GET /

Основной endpoint

Ответ:

{
  "message": "Hello, World!",
  "version": "1.0.0"
}

GET /health

Health check endpoint

Ответ:

{
  "status": "ok",
  "version": "1.0.0"
}

GET /api/v1/info

Информация о сервисе

Ответ:

{
  "service": "hello-api",
  "status": "running",
  "version": "1.0.0"
}

POST /api/v1/echo

Echo endpoint - возвращает отправленное сообщение

Запрос:

{
  "message": "Hello from client!"
}

Ответ:

{
  "echo": "Hello from client!",
  "version": "1.0.0"
}

🛠 Разработка

Зависимости

  • Go 1.21+
  • Gin framework

Сборка

# Для текущей платформы
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

Тестирование

# Запуск сервера
go run main.go

# Тестирование API
curl http://localhost:8080/
curl http://localhost:8080/health
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

Description
test repo to try with actions
Readme MIT 5 MiB
2025-07-28 11:58:05 +00:00
Languages
Go 46.2%
Shell 38.6%
Dockerfile 6.1%
Ruby 5.2%
Makefile 3.9%