Skip to content

Epic: the API chain stops being the wall behind the frontend suite #1321

Description

@ExtraToast

#1308 takes the frontend e2e job from 14 minutes to about 5. This epic is the other half: once e2e stops being the longest job, the API chain is what the run waits on.

Measured on run 35332899202, a green run on current main:

path ends
fe-staticfe-e2e 18m04s 10:25:28
api-static 5m40s → api-tests 8m20s 10:22:51
api-staticbuild-images 4m33s → system-tests 4m44s 10:19:16

The whole run was 20m11s. Two paths finish within three minutes of each other, which is why #1308 alone does not move the pipeline number much.

What is already done

#1284 took the image build off the critical path: the system tests run the jar and the bundle natively, so nothing downstream waits for build-images any more. That work is not repeated here.

The decisions

  • Split the test job before sharding it. Unit tests need no database; they were only slow because they shared a job with the integration suite.
  • One sharding mechanism across the repo. :tests:system, the frontend e2e suite and now :services:api:integrationTest all partition by a stable hash of the test class, so there is one pattern to learn and a class always lands on the same shard.
  • A shard gets its own database. The fixtures collide on unique fields, so maxParallelForks against a shared MariaDB was never an option. Six services is the cost of the split.
  • The coverage floors do not weaken. ci(coverage): the floors are run, and the unit report reaches the artifact #1282 put real floors on this suite days ago. Sharding merges the execution data and measures the whole picture rather than lowering anything.
  • Linting is not a gate on testing. ktlint and detekt are source-only and nothing waits on them.

Slices

What is deliberately not here

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:ci-cdciepicA parent issue holding a set of slices

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions