Skip to content
Exlogare
← Ко всем постам
Команда Exlogare CLI Go DevOps Релиз

Запуск `exl` — CLI Exlogare доступен всем

Командная строка для отправки CI-логов и чтения AI-разборов вышла. Один Go-бинарь, GitHub Releases, deb/rpm package assets и Docker — без лишних рантайм-зависимостей.

Сегодня выходит exl — командная строка Exlogare. Это один Go-бинарь, который оборачивает публичный ingest-эндпоинт и Read API: положили в CI-раннер, на ноут разработчика или в cron — и получили полный цикл «лог упал -> AI-разбор» прямо в терминале.

В одном абзаце: exl auth login один раз, потом exl ingest из любого post-build шага, потом exl analyses list --since 24h --json | jq из шелла или утреннего cron-а. CLI открыт (github.com/exlogare/exlogare-cli), Apache-2.0, без рантайм-зависимостей.

Установка

Самый универсальный способ — скачать архив под вашу OS/arch на странице GitHub Releases, достать exl и положить его в $PATH.

Для Linux также доступны package assets в релизах:

# Debian / Ubuntu
curl -fsSL https://github.com/exlogare/exlogare-cli/releases/latest/download/exlogare-cli_amd64.deb -o exl.deb
sudo dpkg -i exl.deb

# Fedora / RHEL / Alma / Rocky
sudo rpm -i https://github.com/exlogare/exlogare-cli/releases/latest/download/exlogare-cli_amd64.rpm

# Docker
docker run --rm -e EXLOGARE_TOKEN ghcr.io/exlogare/exl:latest analyses list --since 24h

После установки запустите exl auth login и вставьте токен из Integrations -> API tokens. Токен ляжет в OS-нативное хранилище (libsecret, Windows Credential Manager) — не в конфиг-файл и не в shell-history. В CI используйте EXLOGARE_TOKEN.

Сценарий 1 — встроить в standalone CI

Многие приходят в Exlogare через OAuth-интеграции с GitLab / GitHub / Bitbucket, но огромный кусок CI-пайплайнов до сих пор живёт на Jenkins, Buildkite, Drone, TeamCity или самописном Bash-CI. Для всего этого CLI — самый простой хук:

# Buildkite step
make test 2>&1 | tee build.log
[[ ${PIPESTATUS[0]} -ne 0 ]] && exl ingest \
    --provider buildkite \
    --project "$BUILDKITE_PIPELINE_SLUG" \
    --status failed \
    --commit "$BUILDKITE_COMMIT" \
    --branch "$BUILDKITE_BRANCH" \
    --pipeline-url "$BUILDKITE_BUILD_URL" \
    --log-file build.log

Один раз положите EXLOGARE_TOKEN в секреты раннера — и тот же сниппет работает на Jenkins (post { failure { sh '...' } }), Drone (when: status: [failure]), TeamCity (buildFinished trigger) и всём, что умеет шелл. Слаг --provider нормализуется на сервере, так что Buildkite, BUILDKITE или My CI 1.0 (prod) приведутся к нормальному id — регулярку запоминать не нужно.

Сценарий 2 — утренние сводки

Несколько бета-команд уже пишут маленькие скрипты поверх Read API, чтобы получать на почту вчерашние красные сборки. С exl и jq это превращается в один пайп:

exl analyses list --since 24h --severity high --json \
  | jq -r '.items[] | "[\(.severity)] \(.created_at) \(.project_path) — \(.root_cause)"' \
  | mail -s "Вчерашние красные CI" oncall@yourco.io

Пагинация курсорная — границы страниц стабильны, новые инсёрты не сдвигают окно (в отличие от offset/limit). Для простой сводки вы всегда внутри первой страницы; если нужно пройти всё окно — итерируйте по next_cursor, пока он не опустеет.

Сценарий 3 — панели в Grafana через Read API

Если вы уже импортировали наш Grafana-дашборд, exl пригодится при онбординге как sanity-check: вставьте read-токен в exl auth login, потом exl analyses list --severity high --limit 5 — чтобы убедиться, что данные едут, до того как вы подключите Grafana datasource. Тот же эндпоинт, но удобный для глаз.

Чего в CLI намеренно нет

Несколько вещей, которые мы сознательно не клали в 0.1.0:

  • Нет интерактивного TUI. Команды скриптуемые — в этом весь смысл. Если нужен UI, у нас есть дашборд.
  • Нет exl webhook / exl integration. OAuth-флоу живёт в браузере. CLI — про ingest и read.
  • Нет npm-дистрибуции. Обёртка Go-бинарника в Node-пакет не даёт пользы и добавляет лишний хоп в supply chain.
  • Нет конфиг-файла. Настройки — флаги, env, keychain. Секреты не утекают в dotfiles by design.

Куда дальше

Нашли баг — заводите issue в репо на GitHub. Хотите фичу — PR-ы приветствуются: код небольшой и идиоматичный Go, cobra для команд, go-keyring для секретов.