Перейти к содержанию

Quick Start

От нуля до работающего сервиса за 5 минут.

Предусловия

  • Репозиторий в GitLab (группа infrastructure/hive/)
  • Сервис слушает HTTP на каком-либо порту
  • Сервис имеет health endpoint (может быть просто /)

Шаг 1: Создайте .hive.yml

В корне вашего репозитория создайте файл .hive.yml:

name: my-service
port: 8080

Это минимальная конфигурация. Hive автоматически определит язык и соберёт контейнер.

Имя по умолчанию

Если не указать name, Hive возьмёт имя директории или имя проекта из git remote.

Шаг 2: Настройте CI

Создайте .gitlab-ci.yml в корне репозитория:

stages:
  - generate
  - run

generate-pipeline:
  stage: generate
  image: lab.xmonetize.net:5050/infrastructure/hive/hive-api/cli:latest
  script:
    - hive ci --global > child-pipeline.yml
  artifacts:
    paths:
      - child-pipeline.yml

run-pipeline:
  stage: run
  trigger:
    include:
      - artifact: child-pipeline.yml
        job: generate-pipeline
    strategy: depend

Это генерирует полный CI pipeline автоматически из ваших .hive.yml файлов.

Шаг 3: Push

git add .hive.yml .gitlab-ci.yml
git commit -m "Add Hive configuration"
git push

Pipeline запустится автоматически:

  1. init — регистрирует репозиторий в ArgoCD
  2. build — собирает контейнер через Cloud Native Buildpacks (или Dockerfile)
  3. test — запускает контейнер и проверяет health endpoint
  4. deploy — деплоит через ArgoCD на Kubernetes

Шаг 4: Получите URL

После успешного деплоя сервис будет доступен:

Окружение URL
Staging https://{name}.{namespace}.knative-staging.svcik.org
Production https://{name}.{namespace}.knative.svcik.org

Например: https://my-service.hive-examples.knative-staging.svcik.org

Примеры

Посмотрите готовые примеры в репозитории hive-examples:

# helloworld-go/.hive.yml
name: helloworld-go
port: 8080
// main.go
package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintln(w, "Hello World from Go!")
    })
    http.ListenAndServe(":8080", nil)
}
# helloworld-python/.hive.yml
name: helloworld-python
port: 8080
# app.py
from http.server import HTTPServer, BaseHTTPRequestHandler

class Handler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.end_headers()
        self.wfile.write(b"Hello World from Python!")

HTTPServer(("", 8080), Handler).serve_forever()
# helloworld-dotnet/.hive.yml
name: helloworld-dotnet
port: 8080
// Program.cs
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World from .NET!");
app.Run("http://0.0.0.0:8080");

Интеграция с Claude Code

Добавьте Hive skill, чтобы Claude Code мог помогать с конфигурацией, настройкой CI и отладкой.

Глобально (все проекты на вашей машине):

git clone git@lab.xmonetize.net:infrastructure/hive/hive-skills.git ~/.claude/skills/hive

Per-project (доступен команде через git):

git submodule add git@lab.xmonetize.net:infrastructure/hive/hive-skills.git .claude/skills/hive
git commit -m "Add hive skill for Claude Code"

Обновление: cd ~/.claude/skills/hive && git pull (глобально) или git submodule update --remote .claude/skills/hive (per-project).

Перед работой с Hive

Всегда начинайте с /hive в Claude Code. Это загрузит актуальный контекст skill и проверит обновления. Возьмите за привычку — как git pull перед началом работы.

Что дальше

  • Конфигурация — все параметры .hive.yml
  • CLI — команды для локальной разработки
  • Multi-service — несколько сервисов в одном репозитории