GitHub Actions

Уведомления GitHub Actions на телефон.

Положите NERVE_DSN в secrets и отправляйте статус deploy, smoke-test или release прямо в Nerve.

Workflow step

- name: Notify Nerve
  if: always()
  env:
    NERVE_DSN: ${{ secrets.NERVE_DSN }}
  run: |
    go install github.com/nerve-ink/nerve-cli/cmd/nerve@latest
    echo "backend deploy ${{ job.status }}" | nerve send

Почему не просто webhook

Sender DSN умеет только отправлять зашифрованные сигналы. Он не читает историю, не подключается как агент и не выполняет команды.

Только ошибки, без шума

Для большинства репозиториев лучше не отправлять каждый успешный build. Success-сообщения быстро превращают канал в фон. Оставьте push для ситуаций, где нужно действие: failed tests, failed deploy, failed migration, failed smoke test.

- name: Notify only on failure
  if: failure()
  env:
    NERVE_DSN: ${{ secrets.NERVE_DSN }}
  run: |
    go install github.com/nerve-ink/nerve-cli/cmd/nerve@latest
    echo "FAILED: ${{ github.repository }} / ${{ github.ref_name }}
run: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
      | nerve send --severity critical

Что класть в сообщение

Organization secret

Если репозиториев много, создайте organization secret NERVE_DSN и разрешите его только нужным production repos. Тогда все workflow используют один паттерн, а ротация sender DSN делается в одном месте.

Pull request безопасность

Не отправляйте Nerve-сигналы из workflow, который выполняет недоверенный код из fork-а. Для public repos безопаснее ограничить уведомления push-ами в protected branches или production environment jobs.

if: failure() && github.event_name == 'push' && github.ref == 'refs/heads/main'

Smoke test после deploy

Самый ценный сигнал — не “workflow завершился”, а “после deploy production endpoint реально отвечает”. Добавьте отдельный шаг curl/smoke и шлите critical только если проверка не прошла.