Skip to content

⚡ Parallelize independent steps in Integration workflow - #1332

Merged
0x46616c6b merged 4 commits into
mainfrom
ci/parallel-steps
Jul 25, 2026
Merged

⚡ Parallelize independent steps in Integration workflow#1332
0x46616c6b merged 4 commits into
mainfrom
ci/parallel-steps

Conversation

@0x46616c6b

Copy link
Copy Markdown
Member

Summary

  • Groups the composer install and yarn install/asset build as parallel steps, since the PHP and Node toolchains are independent of each other.
  • Groups the four checks that only depend on their own toolchain's install (cs-check, DB schema creation, TypeScript typecheck, Vitest) as a second parallel group.
  • Leaves PHPUnit and Behat sequential, since both share the same SQLite test database file (var/db_test.sqlite) and running them concurrently would risk file-level write conflicts.

This uses GitHub's parallel step keyword announced in the 2026-06-25 changelog. The official workflow syntax docs hadn't been updated with this keyword as of writing, so this is a best-effort implementation based on the changelog description — the first CI run on this PR is the real verification of the syntax.

Test plan

  • Confirm the workflow parses and the parallel groups actually execute concurrently (check the Actions run's timing/logs)
  • Confirm composer install and asset prep don't race on any shared file/cache
  • Confirm cs-check/db-schema/typecheck/vitest all still pass and their outputs (coverage files, schema) are available to later sequential steps
  • Confirm PHPUnit and Behat still pass sequentially against the shared SQLite DB
  • Compare total workflow duration against a recent main run

0x46616c6b and others added 3 commits July 25, 2026 21:40
webpack-encore >=7 ships as a pure ES module (`type: module`). On
Node 22+, `require()` of an ES module returns the namespace object
`{ default: Encore }` instead of `Encore` directly, causing
`Encore.setOutputPath is not a function`. Use `_encore.default ?? _encore`
so the config works with both encore 6 (CJS) and encore 7 (ESM).

Also resolves a merge conflict in LoadReservedNameData, keeping the
'abuse' reserved name addition from the stashed changes.

Co-Authored-By: Claude <claude@anthropic.com>
Groups the composer/yarn installs and the four independent
checks (cs-check, DB schema, typecheck, vitest) using GitHub's
new parallel step keyword, since none of them depend on each
other within their group. PHPUnit and Behat stay sequential
because they share the same SQLite test database file.
The parallel keyword is a regular step property, so the group
itself can carry a name for clearer labeling in the Actions UI.
@0x46616c6b 0x46616c6b changed the title Parallelize independent steps in Integration workflow ⚡ Parallelize independent steps in Integration workflow Jul 25, 2026
GitHub's Actions validator rejects `parallel:` as a step property
("Unexpected value 'parallel'... Add one of these properties:
cancel, run, shell, uses, wait, wait-all, with, working-directory").
That confirms `background`/`wait-all` are the real primitives from
the 2026-06-25 changelog, with no `parallel` sugar keyword.

Rewritten as explicit background steps followed by a wait-all
barrier for both the install phase and the checks/tests phase.
@sonarqubecloud

Copy link
Copy Markdown

@0x46616c6b
0x46616c6b marked this pull request as ready for review July 25, 2026 19:59
@0x46616c6b
0x46616c6b merged commit c9a2f29 into main Jul 25, 2026
10 checks passed
@0x46616c6b
0x46616c6b deleted the ci/parallel-steps branch July 25, 2026 20:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant