Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/rolling-update.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Rolling update

# Manually-triggered production rollout. Joins the Tailnet, SSHes over
# MagicDNS into each node, and invokes scripts/rolling-update.sh.
# See docs/design/2026_04_24_proposed_deploy_via_tailscale.md.
# See docs/design/2026_04_24_implemented_deploy_via_tailscale.md.

on:
workflow_dispatch:
Expand Down
2 changes: 1 addition & 1 deletion docs/deploy_via_tailscale_runbook.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Deploy via Tailscale + GitHub Actions — Runbook

Companion doc to `docs/design/2026_04_24_proposed_deploy_via_tailscale.md`. This
Companion doc to `docs/design/2026_04_24_implemented_deploy_via_tailscale.md`. This
runbook is for operators: what to configure on GitHub and Tailscale so the
`rolling-update` workflow can execute a production deploy.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,27 @@
# Deploy via Tailscale + GitHub Actions

**Status:** Proposed
**Status:** Implemented
**Author:** bootjp
**Date:** 2026-04-24

---

## Implementation status

Implemented on `main`.

- `.github/workflows/rolling-update.yml` defines the manual production
`Rolling update` workflow, joins Tailscale with an ephemeral OAuth-backed
node, verifies the target GHCR image, renders `NODES` / `SSH_TARGETS`, runs
an SSH reachability gate, and invokes `scripts/rolling-update.sh`.
- `docs/deploy_via_tailscale_runbook.md` documents the production environment,
Tailscale ACL/OAuth setup, secrets, variables, dry-run flow, rollback, and
cancellation recovery procedure.
- `scripts/rolling-update.sh` remains the canonical node-by-node rolling
restart implementation used by both the workflow and manual fallback.

The original v1 implementation plan is retained below as historical context.

## 1. Background

Today the rolling-update flow is manual: an operator SSHes to their workstation,
Expand Down Expand Up @@ -228,7 +244,7 @@ before production cutover.
- Tailscale SSH (option A above).
- A shared `deploy` user with restricted sudo.

## 5. Implementation plan
## 5. Original implementation plan

1. Write `.github/workflows/rolling-update.yml` implementing §2.1.
2. Document the secrets/variables setup in
Expand Down
Loading