Скрипты и CI/CD
Status200 CLI рассчитан на автоматизацию: аутентификация через переменные окружения, JSON для парсинга и осмысленные exit code для пайплайнов.
Переменные окружения
Без сохранённых контекстов:
export S200_API_KEY=sk-your-api-key
export S200_URL=https://status200.ruИмеют приоритет над сохранёнными контекстами, но уступают флагам CLI.
Коды выхода
| Код | Значение |
|---|---|
0 | Успех |
1 | Общая ошибка |
2 | Ошибка аутентификации (нет или неверные учётные данные) |
3 | Не найдено (404) |
Пример в скрипте:
if ! status200 monitor list > /dev/null 2>&1; then
echo "Не удалось получить список мониторов"
exit 1
fiОбработка JSON через jq
# Заголовки инцидентов
status200 incident list -o json | jq '.[].title'
# ID созданного монитора
NEW_ID=$(status200 monitor create --data '{"name":"API Health"}' -o json | jq -r '._id')
echo "Создан монитор: $NEW_ID"
# Количество по severity
status200 incident count --query '{"incidentSeverityId":"<severity-id>"}'Создание из файлов
--file удобен для версионируемой инфраструктуры:
# monitor.json
# {
# "name": "API Health Check",
# "projectId": "your-project-id"
# }
status200 monitor create --file monitor.jsonПакетные операции
# Несколько мониторов из JSON-массива
cat monitors.json | jq -r '.[] | @json' | while read monitor; do
status200 monitor create --data "$monitor"
doneПримеры CI/CD
GitHub Actions
name: Check Active Incidents
on:
schedule:
- cron: '*/5 * * * *'
jobs:
health-check:
runs-on: ubuntu-latest
steps:
- name: Install Status200 CLI
run: npm install -g @status200/cli
- name: Check for active incidents
env:
S200_API_KEY: ${{ secrets.S200_API_KEY }}
S200_URL: https://status200.ru
run: |
INCIDENT_COUNT=$(status200 incident count)
if [ "$INCIDENT_COUNT" -gt 0 ]; then
echo "WARNING: $INCIDENT_COUNT incidents found"
exit 1
fiУниверсальный скрипт CI/CD
#!/bin/bash
set -e
export S200_API_KEY="$CI_S200_API_KEY"
export S200_URL="$CI_S200_URL"
# Инцидент о деплое и захват ID
# currentIncidentStateId и incidentSeverityId должны ссылаться на существующие ID в проекте
INCIDENT_ID=$(status200 incident create --data '{
"title": "Deployment Started",
"currentIncidentStateId": "'"$INVESTIGATING_STATE_ID"'",
"incidentSeverityId": "'"$SEVERITY_ID"'",
"declaredAt": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
}' -o json | jq -r '._id')
# шаги деплоя...
# Закрытие инцидента после успешного деплоя
status200 incident update "$INCIDENT_ID" --data '{"currentIncidentStateId":"'"$RESOLVED_STATE_ID"'"}'Docker
FROM node:20-slim
RUN npm install -g @status200/cli
ENV S200_API_KEY=""
ENV S200_URL=""
ENTRYPOINT ["status200"]docker run --rm \
-e S200_API_KEY=sk-abc123 \
-e S200_URL=https://status200.ru \
status200-cli incident listКонтекст в скриптах
status200 --context production incident list
status200 --context staging monitor count