1.37.0 - Resonance
This release extracts demo code into a dedicated module, splits linting into a standalone CI job, restructures CircleCI config for maintainability, and includes multiple CI/CD fixes for Docker permissions, coverage reporting, and branch filtering.
π Highlights
-
Demo Module Extraction
Demo code (counter block, deploy hooks, CSS/JS, tests) moved fromys_baseinto a newys_demomodule, making it easy to remove demo content from production projects. -
Standalone Lint CI Job
All linting tools extracted into a dedicated CI job that runs in parallel with the build, providing faster code style feedback. -
CircleCI Config Split
CircleCI configuration split into multiple files for better maintainability and separation of concerns. -
CI/CD Hardening
Fixed Docker permission warnings in GHA, improved coverage comment handling, and corrected branch filtering for feature/bugfix branches.
π₯ Breaking changes
None
What's new since 1.36.1
π Template
-
β¨ New
-
[#2340] Moved demo code from
ys_baseto newys_demomodule. @AlexSkrypnyk (#2349)
Demo code (counter block with CSS/JS, deploy hooks, and example tests across Unit, Kernel, Functional, and FunctionalJavascript test types) has been extracted into a dedicatedys_demomodule. This makes it straightforward to remove all demo content from production projects by simply disabling one module. -
[#2363] Added colour to
ahoy confirm. @AlexSkrypnyk (#2366)
Confirmation prompts for destructiveahoycommands now display in red with dimmed[y/N]text, making them more visually prominent and harder to accidentally dismiss. -
[#2353] Allow running CI builds against PR branches. @AlexSkrypnyk (#2354)
Addedpull_request_targettrigger to GitHub Actions workflow so that CI builds can run against PR branches. Previously, only push events to specific branches triggered builds. -
[#2368] Switched
git-artifactto download from GitHub Releases with SHA256 verification. @AlexSkrypnyk (#2370)
Thegit-artifactdeployment tool is now downloaded as a binary from GitHub Releases instead of being installed via Composer. Each download is verified against a SHA256 checksum, improving supply chain security and removing the Composer dependency from the deploy process. -
Updated posting of coverage comments to replace existing comments. @AlexSkrypnyk (#2380)
Coverage comments posted to PRs now replace the previous comment instead of creating duplicates. This uses a dedicatedpost-coverage-comment.shscript that finds and updates existing comments, keeping PR conversations clean. -
Added consistent Chromium flags to Behat and PHPUnit configs. @AlexSkrypnyk (#2378)
Added--disable-popup-blockingflag to Chrome browser arguments in both Behat and PHPUnit configurations. This ensures consistent browser behaviour across both testing frameworks and prevents popup-related test flakiness.
-
-
π Changed
-
[#1571] Split CircleCI config into multiple files. @AlexSkrypnyk (#2105)
The monolithic CircleCIconfig.ymlhas been split intoconfig.yml,vortex-test-common.yml, andupdate-dependencies.yml. This reduces the main config size and makes each CI concern (project builds, Vortex integration tests, dependency updates) independently maintainable. The installer now also cleans up these internal Vortex CI files during installation. -
[#2154] Extracted linting into standalone
lintCI job. @AlexSkrypnyk (#2346)
All linting tools (PHPCS, PHPStan, PHPMD, Rector, Twig CS Fixer, ESLint, Stylelint, Gherkin Lint) now run in a dedicatedlintjob that executes in parallel with thebuildjob. This provides faster feedback on code style issues without waiting for the full build to complete. -
[#2362] Use
yieldin data providers. @AlexSkrypnyk (#2367)
Converted all PHPUnit data providers across the project to useyieldstatements instead of returning arrays. This improves memory efficiency for large test suites and makes data providers more readable by naming each test case inline. -
Removed stale references to
asset-packagist's installer types. @AlexSkrypnyk (#2359)
Cleaned up leftoverasset-packagistreferences that were no longer relevant after previous dependency changes.
-
-
π Fixed
-
Fixed docker permissions in GHA. @AlexSkrypnyk (#2376)
SetDOCKER_CONFIG=/tmp/.dockerat workflow level to work around the Actions runner creating/root/.docker/config.jsonwith permissions that prevent the container from reading it (actions/runner#863). -
Fixed pushes to
feature/*andbugfix/*branches should not run CI builds. @AlexSkrypnyk (#2365)
Removedfeature/**andbugfix/**from the push trigger list. These branches should only trigger CI via pull request events, not on every push. -
Fixed S3 upload not stopping on failed upload. @AlexSkrypnyk (#2371)
The S3 upload script now captures the HTTP response status code and fails with an error message on non-2xx responses. Previously, upload failures were silently ignored. -
[#2350] Fixed local settings file being included during settings unit tests. @AlexSkrypnyk (#2352)
Added a guard to preventsettings.local.phpfrom being loaded during unit tests. Developer-specific local settings were polluting the test environment and causing inconsistent results. -
Fixed DB download variables inconsistencies. @AlexSkrypnyk (#2360)
Standardised variable naming across all database download scripts (download-db-acquia.sh,download-db-s3.sh,download-db-ftp.sh, etc.) and added test coverage for the main download orchestration script. -
Fixed migration Drupal variables not starting with
DRUPAL_. @AlexSkrypnyk (#2357)
Renamed migration-related environment variables to use theDRUPAL_prefix, matching the project's variable naming convention. -
Fixed coverage threshold check not storing results on low values in CI. @AlexSkrypnyk (#2372)
When coverage values were very low, the threshold check failed to store results, causing CI job summaries to be incomplete. -
Fixed missed pinned GHA actions not being updated with Renovate. @AlexSkrypnyk (#2375)
Pinnedshimataro/ssh-key-actionto a commit SHA digest so Renovate can track and update it automatically. Previously it used a tag reference that Renovate did not manage. -
Fixed ownership permissions warning in GHA. @AlexSkrypnyk (#2358)
-
Fixed GH test token not being passed to tests in CI. @AlexSkrypnyk (#2364)
-
[#2338] Fixed installer replacement and PHPMD discovery. @AlexSkrypnyk (#2369)
Fixed PHPMD tool discovery logic in the installer's Tools handler and a replacement issue in the Webroot handler.
-
-
β¬οΈ Updated
- Update PHP - Drupal core - Minor and patch to ~11.3.5. @AlexSkrypnyk (#2342)
- Update dawidd6/action-download-artifact action to v17. @renovate[bot] (#2377)
- Update clamav/clamav-debian Docker tag to v1.5.2-32. @renovate[bot] (#2348)
- Update clamav/clamav-debian Docker tag to v1.5.2-31. @AlexSkrypnyk (#2341)
- Update actions/download-artifact digest to 3e5f45b. @renovate[bot] (#2356)
- Update renovatebot/github-action action to v46.1.4. @renovate[bot] (#2345)
- Update release-drafter/release-drafter digest to 6a93d82. @renovate[bot] (#2343)
- Update GitHub Actions - All - Major, minor and patch. @renovate[bot] (#2339)
- Updated Renovate docs. @AlexSkrypnyk (#2361)
π Installer
-
β¨ New
- [#2340] Added
CustomModuleshandler for selecting custom modules during installation. @AlexSkrypnyk (#2349)
A new installer prompt allows users to choose which custom modules (Base, Demo, Search) to include. Previously, all modules were always included. The Demo module can now be easily excluded for production projects, and the Search module selection is linked to Solr service availability.
- [#2340] Added
-
π Changed
-
[#1571] Installer now removes Vortex-internal CircleCI config files during installation. @AlexSkrypnyk (#2105)
Internalvortex-*.ymlCircleCI configs are cleaned up during installation, matching the existing cleanup of internal GHA workflows. -
[#2340] Updated
ServicesandModulePrefixhandlers for demo module support. @AlexSkrypnyk (#2349)
The Services handler now conditionally includes the Solr service based on Search module selection. The ModulePrefix handler applies prefix renaming to the new demo module alongside the base module.
-
-
π Fixed
- [#2338] Fixed PHPMD discovery in Tools handler and Webroot handler replacement. @AlexSkrypnyk (#2369)
π Documentation
- π Changed
- Updated CI documentation to reflect the split CircleCI config structure and standalone lint job. @AlexSkrypnyk (#2105, #2346)
- Updated Renovate documentation. @AlexSkrypnyk (#2361)
π Release checklist
- Updated all dependencies outside of the schedule (run Renovate locally)
- Updated container images to the latest versions and checked that
@seelinks (v26.2.0) - Updated PHP version in
composer.jsonforconfig.platform. (8.3.28 β 8.3.30) - Updated PHP version in
phpcs.xmlfortestVersion. (8.3 β unchanged, still on 8.3.x) - Updated PHP version in
phpstan.neonforphpVersion. (80328 β 80330) - Updated minor version of all packages in
composer.json. (composer update -W && composer bumpdone) - Updated minor version of dependencies in theme's
package.json. (yarn upgradedone) - Update
drevops/ci-runnerto the latest version in.circleci/config.ymland.github/workflows/build-test-deploy.yml. (26.2.0) - Incremented the cache version in
.circleci/config.ymland.github/workflows/build-test-deploy.yml. (v26.2.0-db11 β v26.2.0-db12) - Updated documentation. (
cd .vortex && ahoy update-docsdone)
Full Changelog: 1.36.1...1.37.0
@AlexSkrypnyk, @renovate[bot] and renovate[bot]