Skip to main content

Run the development deployment workflow

The .github/workflows/dev.yml workflow tests, packages, and deploys the API, web app, and documentation site to the development environment.

Trigger the workflow​

The workflow runs automatically when commits reach the dev branch. To start it manually:

  1. Open the repository's Actions tab in GitHub.
  2. Select hetzner dev (api + web + docs).
  3. Choose Run workflow and select the dev branch.
  4. Follow the run until every required job completes.

Understand the flow​

The workflow performs these stages:

  1. test-api installs the lockfile and runs the API tests on Node 25.
  2. test-web installs the lockfile and runs the web tests on Node 20.
  3. After both test jobs pass, separate jobs build the API, web, and docs Docker images and push their latest tags to Amazon ECR.
  4. The deploy job connects to the Hetzner host, pulls each successful image, replaces the corresponding container, and attaches it to the shared Docker network behind Traefik.

The deploy job runs only when both tests and all three image builds succeed.

Required repository secrets​

The workflow reads AWS OIDC, ECR repository, Hetzner SSH, and application configuration values from GitHub Actions secrets. Do not print or copy secret values into workflow logs or documentation. When a job reports a missing value, update the repository or environment secret in GitHub and re-run only after the configuration is complete.

Re-run a failed deployment​

Fix the failing test, image build, credential, or host condition first. Then use GitHub's Re-run failed jobs action. A deployment retry reuses the images associated with that workflow run; start a new run when the source or image must change.