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. Используйте оба.