Skip to content

fix(install): an upgrade makes Traefik's routes readable, and checks it serves the dashboard - #27

Merged
Flosk6 merged 1 commit into
masterfrom
ci/upgrade-from-release
Oct 10, 2026
Merged

Flosk6 merged 1 commit into
masterfrom
ci/upgrade-from-release

Conversation

@Flosk6

@Flosk6 Flosk6 commented Oct 10, 2026

Copy link
Copy Markdown
Owner

What and why

The update from 2.1 to 2.2 could leave every URL of a server answering Traefik's own 404 page not found, the dashboard's included. Spawner 2.1 wrote the routes for its own user (0640), Traefik runs without capabilities since 2.2, and Traefik 3.7 never starts its file provider again once it could not read its directory or a route at start. The upgrade itself passed: wait_served waited for a certificate and only warned.

  • install.sh makes traefik/ and its routes readable (755, 644) before it starts the stack (make_routes_readable), and stops Traefik when one was not, so that the stack starts it again. Spawner's entrypoint makes the directory readable too, for a stack the installer did not start.
  • wait_served first checks that Traefik serves the dashboard (/api/v1/healthz, over HTTPS with any certificate): a Traefik that routes nothing fails the installation and puts an upgrade back, rather than pass for a certificate on its way.
  • scripts/e2e-upgrade.sh, a new CI job "Upgrade from the latest release": installs the latest release with its own install.sh (checked against its SHA256SUMS), deploys examples/node-postgres twice with its CLI, a row in each database, one environment asleep, then upgrades to the build, twice: with this install.sh --upgrade over routes as 2.1 wrote them (Traefik answering its 404), then from the dashboard. Each time it checks through Traefik: the backup, the routes' modes, the dashboard, a 401 without a token and the page with one, the waiting page and the wake-up, the data kept.

A server still on 2.1 can then update straight to the next release. The new job is not a required check of the master ruleset yet.

Checks

  • Tests next to the code, a compose fixture for a policy change, or an end-to-end check
  • Documentation and CHANGELOG.md updated when the behaviour changes

scripts/e2e-upgrade.sh changes the machine it runs on: it runs in CI only. Its first run is this pull request.

…it serves the dashboard

The update from 2.1 to 2.2 could leave every URL answering Traefik's own
404: 2.1 wrote the routes for Spawner alone (0640), Traefik runs without
capabilities since 2.2, and Traefik 3.7 never starts its file provider
again once it could not read its directory or a route.

- install.sh makes the route directory and files readable (755, 644)
  before it starts the stack, and stops Traefik when one was not, for the
  stack to start it again. The entrypoint does it for the directory too.
- wait_served first checks that Traefik serves the dashboard, over HTTPS
  with any certificate: a Traefik that routes nothing fails the
  installation and puts an upgrade back, rather than pass for a
  certificate on its way.
- scripts/e2e-upgrade.sh, a new CI job: installs the latest release,
  deploys two environments, and upgrades to the build with install.sh
  over routes as 2.1 wrote them, then from the dashboard.
@Flosk6
Flosk6 merged commit b095938 into master Oct 10, 2026
5 checks passed
@Flosk6
Flosk6 deleted the ci/upgrade-from-release branch October 10, 2026 23:54
@Flosk6 Flosk6 mentioned this pull request Oct 10, 2026
2 tasks done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant