Skip to main content

Deploy applications

Deploying 9 systems out at the same time can be a non-trivial task. This should help explain how we do it.


Deploying GovWifi is done via Concourse, maintained by GovWifi.

You will need to be part of the GovWifi CI/CD Github team, logged in to the Concourse console via Github single sign-on, and be on the VPN.

Core services

For the core services, there is a central deployment pipeline.

The code is hosted in the pipeline repo

This covers the:

  • Admin site
  • Authentication API
  • Logging API
  • User Signup API
  • Frontend RADIUS
  • Safe ‘Canary’ Restarter

The general process is:

  1. Run tests.
  2. Deploy Staging.
  3. Run the smoke tests.
  4. Manually trigger “Confirm Deploy to Production” to allow Production deploy.
  5. Deploy Production.

Each service is deployed independently.

To ensure interoperability between the services, we run Cross-Service tests for the Frontend, and APIs. This ensures that an update to a service will work between the rest of the services.

Trigger a deployment

  1. Merge your development branch to master.
  2. Concourse will test, build, and deploy a new image to ECR in Staging.
  3. Run the job in the pipeline, titled Confirm Deploy to <service> Production.
  4. Concourse will deploy a new image to ECR in Production.

Deployments also force the relevant ECS task to update via the script (e.g., here and see here for the specific command).

Forcing the task to update means the ECS task definition will point to the newly deployed (latest) image in ECR for either Staging or Production.

Note: govwifi-frontend is an exception to this pattern. In order to propagate changes, the frontend-cluster tasks must be restarted.

We recommend restarting the cluster using the safe-restarter scheduled task which is part of the api-cluster. This can take 1-2 hours.

Docs and the product page

The Dev Docs, Tech Docs, and Product Page use a static site generator called Middleman.

Pull Request Previews

Automatic branch previews are deployed to Heroku.

When a PR is raised, a deploy is triggered automatically and the link appears inline on the PR.


Each repo has it’s own pipeline which deploys out to GovPaaS whenever a change is made to the master branch.

Trigger a deployment

  1. Merge your development branch to master.
  2. Concourse will build + deploy to GovPaaS.
  3. Verify contents is deployed (you may need to add a GET parameter to bust the cache).
This page was last reviewed on 7 September 2022. It needs to be reviewed again on 7 March 2023 by the page owner #govwifi .
This page was set to be reviewed before 7 March 2023 by the page owner #govwifi. This might mean the content is out of date.