GitHub Actions: гейт деплоя через API uptime StillOnline
Зелёные unit-тесты не доказывают, что production отвечает 200 из интернета. GitHub Actions может после деплоя вызвать read-only API StillOnline и остановить workflow, если внешняя проверка красная.
HTML парсить не нужно: GET /v1/public/status/{slug} без ключа или GET /v1/projects/{id}/checks с Bearer sk_live_… на Pro. Алерты владельца отдельно: Telegram через бота StillOnline.
Краткий ответ
После деплоя добавьте шаг: curl к публичному JSON StillOnline (operational) или на Pro — private checks с Authorization: Bearer и secret STILLONLINE_API_KEY. sk_live_… только в GitHub Secrets. Публичный endpoint: 60 зап/мин на IP; private: 120/мин на ключ. Инциденты обслуживания из CI — CI/CD и обслуживание.
Публичный или private JSON
| Endpoint | Auth | Когда |
|---|---|---|
GET /v1/public/status/{slug} | Нет | Клиентский slug; безопасно в логах |
GET /v1/projects/{id}/checks | Bearer sk_live_… | Нужны last_status, last_probed_at |
База: https://api.stillonline.tech/v1. REST.
Пример workflow (публичный статус)
name: Post-deploy smoke
on:
workflow_dispatch:
push:
branches: [main]
jobs:
stillonline-status:
runs-on: ubuntu-latest
steps:
- name: Check public status JSON
run: |
STATUS=$(curl -sS "https://api.stillonline.tech/v1/public/status/my-saas" | jq -r '.status')
echo "overall=$STATUS"
test "$STATUS" = "operational"
Подставьте свой slug. Ненулевой exit code падает job.
Пример (private checks, Pro)
- name: Check StillOnline probes (private API)
env:
STILLONLINE_API_KEY: ${{ secrets.STILLONLINE_API_KEY }}
STILLONLINE_PROJECT_ID: ${{ vars.STILLONLINE_PROJECT_ID }}
run: |
curl -sS -H "Authorization: Bearer $STILLONLINE_API_KEY" \
"https://api.stillonline.tech/v1/projects/$STILLONLINE_PROJECT_ID/checks" \
| jq -e '.checks[] | select(.last_status != "OPERATIONAL")' && exit 1 || exit 0
Ключ — настройки API.
Типичные ошибки
- Preview вместо production — гейтите prod slug (редиректы и antibot).
- Нет health URL — сначала быстрый старт.
- Ключ в логах — не
echosecret. - Путают JSON статуса и вход в SaaS — это разные системы.
Ссылку на страницу статуса — в README: публичная страница.
FAQ
Есть ли официальный GitHub Action StillOnline в Marketplace?
Достаточно curl/jq к REST (REST). Отдельная карточка для v1 не обязательна.
Может ли Actions создавать проверки StillOnline?
В CI обычно чтение статуса. Создание — через API/MCP на Pro для агентов; см. MCP.
HTTP 429 от StillOnline?
Публичный JSON: 60 зап/мин на IP. Не опрашивайте каждую секунду.
Падать на degraded или только down?
Ваша политика. В jq можно требовать строго operational.
Telegram-алерты и GitHub Actions?
Actions — автоматический гейт; Telegram — человек on-call. Используйте оба.
Дополнительно
REST API uptime и статус сервиса
Публичный JSON статуса без ключа и checks.list с last_status по Bearer — примеры curl, лимиты, пауза проверок, API-ключ Pro. StillOnline. Без установки на сервер.
CI/CD, обслуживание и API статуса StillOnline
CI/CD и StillOnline: окно обслуживания на status page из пайплайна, Pro API инцидентов ($9/мес), resolve в UI и Telegram-алерты, если проба падает во время работ.
Health URL для SaaS — быстрый старт за 5 минут
Публичный GET /health или /api/health с ответом 200 и внешняя проверка StillOnline со страницей статуса. Лимиты Free указаны честно. StillOnline.
Cursor MCP для uptime после деплоя
Cursor MCP и StillOnline после деплоя: пакет stillonline-mcp, API-ключ Pro в конфиге IDE. Промпты, wizard setup и чем MCP отличается от Telegram-алертов владельцу.