Skip to main content
Last updated: 4 Apr 2025

The development pipeline

When responding to a security incident, you should make any code changes in private, so that you don’t accidentally disclose the vulnerability. To do this, follow the instructions for making a repo private.

Our development and deployment pipeline looks like this:

  1. Open a Pull Request (PR)
  2. Wait for Continuous Integration to pass
  3. Review your own changes
  4. Get someone to review your Pull Request
  5. Check for or implement a deploy freeze
  6. Merge your own Pull Request
  7. Deploy through each of the environments

Wait for Continuous Integration to pass

When a Pull Request (PR) is opened, it often triggers an automated job, which typically lints the code and runs the tests.

Read about Continuous Integration checks.

Review your own changes

As well as double-checking your code and commits, you may refer to the following:

Heroku App Review

Sometimes you may need to demo a running version of your change. All frontend applications and some publishing apps have Heroku Review Apps enabled, with a link near the bottom of each PR.

Branch Deploy Review

Sometimes you may need to deploy your change in Integration in order to test it works on real infrastructure. Refer to the manual deployments documentation.

Get someone to review your Pull Request

The GDS Way has guidelines on how to review code.

Only when the tests pass and the code has been approved the Pull Request can be merged, since we’ve configured GitHub to prevent merges otherwise.

Check for or implement a deployment freeze

We sometimes have a deployment freeze on applications, e.g. during periods where accidental bad deploys would be particularly disruptive, such as during an election.

You should check whether or not there is a code freeze in effect by referring to the relevant section in the deployments documentation.

Merge your own Pull Request

We’ve got guidelines on merging of Pull Requests.

Some applications have restrictions on who can merge PRs. If you are unable to merge your own PR, you should ask someone else to merge (and deploy) it for you.

Code that is merged to main is tested again on CI. This is because the main branch may have changed since the tests last ran on the PR.

WARNING: some applications have Continuous Deployment enabled, which means the deployment process is fully automated. You should do any manual testing with a temporary, branch deployment before you merge.

Deployment

Teams are responsible for deploying their own work. We believe that regular releases minimise the risk of major problems and improve recovery time.

Refer to the deployments documentation.

After a deployment: