CLI Reference¶
Установка¶
Требуется Python 3.12+. Работает на Linux, macOS, Windows.
Нет pipx?
Установите: apt install pipx (Debian/Ubuntu), brew install pipx (macOS) или pip install pipx.
В CI
В CI пайплайнах используется Docker-образ lab.xmonetize.net:5050/infrastructure/hive/hive-api/cli:latest с предустановленным hive. Ручная установка не нужна.
DevContainer
hive-cli устанавливается автоматически из исходников при использовании Hive DevContainer.
hive init¶
Регистрирует репозиторий в Hive: создаёт deploy token в GitLab и добавляет репо в ArgoCD.
Аргументы:
| Аргумент | Описание |
|---|---|
remote_url |
Git remote URL репозитория |
Пример:
Note
Обычно hive init вызывается один раз при создании проекта. После этого CI делает всё автоматически.
hive build¶
Собирает контейнер из исходников с помощью Cloud Native Buildpacks. Автоматически определяет язык (Go, Python, Java, .NET, Node.js и др.).
Флаги:
| Флаг | Короткий | Default | Описание |
|---|---|---|---|
--all |
-a |
— | Собрать все обнаруженные сервисы |
--service |
-s |
— | Собрать конкретный сервис по имени |
--builder |
-b |
paketobuildpacks/builder-jammy-base |
Образ buildpack builder |
--path |
-p |
. |
Путь к исходникам |
--build-arg |
— | — | Аргумент сборки KEY=VALUE или KEY (из env). Можно повторять |
Примеры:
# Собрать текущий сервис
hive build
# Собрать все сервисы в репозитории
hive build --all
# Собрать конкретный сервис
hive build --service auth-service
Docker daemon
hive build требует Docker daemon. В CI используется Docker-in-Docker (dind).
Выбор builder
Укажите builder: docker в .hive.yml для сборки через Dockerfile вместо Buildpacks. По умолчанию — paketo (Cloud Native Buildpacks). При builder: docker в директории сервиса должен быть Dockerfile.
Аргументы сборки
Build args можно задать в .hive.yml или через флаг --build-arg. Значения поддерживают динамическую подстановку из env:
buildArgs:
NODE_ENV: production # Статическое значение
GITHUB_TOKEN: ${GITHUB_TOKEN} # Из переменной окружения
CI_COMMIT_SHA: # Целиком из env (как docker --build-arg KEY)
CLI --build-arg перекрывает значения из .hive.yml. Для Docker — передаётся как --build-arg. Для Buildpacks — как --env.
hive test¶
Запускает собранный контейнер и проверяет что health endpoint отвечает. Генерирует JUnit XML отчёт.
Флаги:
| Флаг | Короткий | Default | Описание |
|---|---|---|---|
--all |
-a |
— | Тестировать все сервисы |
--service |
-s |
— | Тестировать конкретный сервис |
--timeout |
-t |
30 |
Таймаут health check в секундах |
--report |
-r |
hive-test-report.xml |
Путь для JUnit отчёта |
Что делает:
- Пуллит собранный образ
- Запускает контейнер (
docker run) - Ждёт HTTP 2xx на health endpoint (poll каждые 2 секунды)
- Если ответ — pass. Если таймаут или контейнер упал — fail + логи контейнера
- Останавливает и удаляет контейнер
Пример:
# Тестировать текущий сервис
hive test
# Тестировать с увеличенным таймаутом
hive test --timeout 60
# Тестировать все сервисы
hive test --all
hive deploy¶
Деплоит сервис на платформу через Hive API → ArgoCD → Knative.
Флаги:
| Флаг | Короткий | Default | Описание |
|---|---|---|---|
--all |
-a |
— | Задеплоить все сервисы |
--service |
-s |
— | Задеплоить конкретный сервис |
--env |
-e |
— | Переменная окружения KEY=VALUE (можно повторять) |
--bootstrap |
— | — | Деплоить напрямую в ArgoCD, минуя Hive API |
--timeout |
-t |
300 |
Таймаут деплоя в секундах |
Bootstrap mode
Флаг --bootstrap используется для деплоя самого Hive API (или когда API недоступен). Он создаёт ArgoCD Application напрямую через ArgoCD API, без обращения к Hive API. Требует переменные ARGOCD_URL и ARGOCD_TOKEN.
Примеры:
# Задеплоить текущий сервис
hive deploy
# Задеплоить с переменными окружения
hive deploy --env DATABASE_URL=postgres://prod/db --env LOG_LEVEL=warn
# Задеплоить все сервисы
hive deploy --all
# Первый деплой (провижн сертификата может занять больше времени)
hive deploy --timeout 600
Переменные окружения CI:
| Переменная | Описание |
|---|---|
HIVE_API_URL |
URL Hive API |
HIVE_API_TOKEN |
Bearer token для аутентификации |
CI_REGISTRY_IMAGE |
Адрес образа в registry |
CI_COMMIT_SHORT_SHA |
Тег образа (commit SHA) |
hive list¶
Показывает все обнаруженные сервисы в репозитории.
Пример вывода:
Discovered services:
helloworld-go (port: 8080, path: helloworld-go)
helloworld-python (port: 8080, path: helloworld-python)
helloworld-dotnet (port: 8080, path: helloworld-dotnet)
hive ci¶
Генерирует .gitlab-ci.yml pipeline из обнаруженных .hive.yml файлов. Выводит YAML в stdout.
Флаги:
| Флаг | Короткий | Описание |
|---|---|---|
--global |
-g |
Генерировать pipeline для всех обнаруженных сервисов |
--environment |
-E |
Имя GitLab environment (например, staging, production) |
Примеры:
# Генерировать для всех сервисов (stdout)
hive ci --global
# С привязкой к окружению — deploy jobs получат environment
hive ci --global --environment staging
# Сохранить в файл
hive ci --global -E production > child-pipeline.yml
Конфиг окружений
Когда указан --environment, Hive читает cli/environments.yaml и инжектит переменные окружения (HIVE_API_URL, HIVE_DOMAIN) напрямую в сгенерированный pipeline. Это единственный источник истины для конфигурации per-environment — не нужны GitLab environment-scoped variables (которые не пробрасываются в child pipelines). Без флага — используется захардкоженный staging URL (обратная совместимость).
Подробнее о CI — в разделе CI/CD Integration.