Skip to content

Migrate the environment workflow steps to dedicated reusable job workflows #2418

Closed

Description

@Ekhorn

User Story

As a developer I want to avoid duplication in the environment workflows, to reduce the pipeline code to maintain and run jobs in parallel.

Description

In #2417 we introduce environment workflows which execute similar steps which can be combined into a separate workflow file to be reused.

In this issue we want to separate all steps in each environment workflow file into (GitHub actions) jobs rather than steps, to reduce pipeline code and the time it takes for the different environment workflows to finish.

To help organize the many jobs we create, we can put them in categories (or stages). The pipeline will consist of the following stages (these are not necessarily in order):

  • Format
  • Lint
  • Test
  • Build
  • Release
  • Deploy

Acceptance Criteria

Note: please keep in mind that this isn't the full list of all jobs, but a starting point.

  • 1. We want to at minimum have the following reusable job workflow files:
    • 1. Install dist (install-dist.yml)
    • 2. Docker build (docker-build.yml)
    • 3. Run backend tests (backend-test.yml)
    • 4. Run UI component tests (ui-component-test.yml)
    • 5. Run UI app tests (ui-app-test.yml)
    • 6. Docker push (docker-push.yml)
    • 7. Publish to NPM (npm-publish.yml)
    • 8. Publish to Maven (maven-publish.yml)
    • 9. Deploy (deploy.yml)
    • 10. Stop deployment (stop-deployment.yml)
    • 11. Validate UI dependencies (validate-ui-dependencies.yml) [Knip]
    • 12. Check translations are processed (validate-translations.yml)
    • 13. Backend files changed (backend-files-changed.yml)
    • 14. UI files changed (ui-files-changed.yml)
  • 2. Where possible run jobs in parallel
  • 3. All tests must pass before publishing artifacts for production in the release.yml workflow.
  • 4. We could consider publishing the artifacts for staging and review before tests pass in the review.yml and staging.yml workflow.

Implementation Notes

When defining the above mentioned workflows we can do so with reuse-able workflows. See them as functions that we "call" as job in our environment workflow files.

Or if you want to reuse a step you can make a composite action: https://docs.github.com/en/actions/tutorials/create-actions/create-a-composite-action

Also see: https://docs.github.com/en/actions/tutorials/create-actions

Activity

  1. added theissue type on Jan 14, 2026
  2. self-assigned this
    on Mar 24, 2026
  3. Ekhorn commented on Mar 25, 2026

    @Ekhorn
    ContributorAuthor

    Follow up issues to create

    • For gradle test and gradle installDist they share certain tasks, such as compileJava. We should consider introducing a job for this so we can reduce our cache use and the time it takes to compile in those tasks.
    • Consider pushing a container image with Playwright deps to GHCR, as it's free and allows us to persist the image for long times and prevents unnecessary artifacts being generated. The other option would be to have a runner image with everything installed by default.
    • Apply integration test sharding
    • Evenly spread UI app tests of tests files to reduce shard times
  4. self-assigned this
    on May 19, 2026
  5. added
    InfrastructureTopic Infrastructure: all features related to infrastructure features
    on Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

InfrastructureTopic Infrastructure: all features related to infrastructure features

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions