Skip to content

1.36.0

Choose a tag to compare

@github-actions github-actions released this 19 Feb 23:54
· 424 commits to refs/heads/main since this release
0de6f38

1.36.0 - Phase

This release makes Vortex AI-native, migration-ready, and more production-safe by introducing structured agent support, CI-testable migrations, full-stack JS testing, hardened provisioning, and improved CI/infrastructure capabilities.


πŸ” Highlights

  • Migration Framework Integration
    Added secondary database support during provisioning to import existing sites and run migrations in a controlled, CI-testable sequence.

  • AI-Native Development Support
    Introduced AGENTS.md and an AI-friendly installer with structured schema and validation flags, enabling reliable non-interactive and agent-driven workflows.

  • Functional JavaScript Testing
    Enabled browser-based Functional JS tests via a Chrome container, extending Vortex’s full-stack automated testing capabilities.

  • Safer, More Reliable Provisioning
    Prevent config imports from overriding database updates and simplified provisioning logic to use direct Drush commands.

  • Improved CI & Infrastructure Flexibility
    Added S3 database download support, surfaced coverage thresholds in CI summaries, and improved artifact handling for better visibility and debugging.


πŸ’₯ Breaking changes

None.


What's new since 1.35.3

πŸŒ€ Template

  • ✨ New

    • [#1642] Added support for migrations. @AlexSkrypnyk
      A secondary database can now be used during provisioning to import an existing Drupal site's database dump, and then run the migration commands in a pre-defined order. This allows to test migrations locally and in CI.

    • [#1968] Added a fallback for installing from profile if the DB is not available during provision. @AlexSkrypnyk (#2294)
      When setting up a project in an environment where the database is not available, a "seed" databases is needed. But the environment not exist to seed that database. This change allows to use a Drupal profile to provision a seed database in the environment, and later override it with the real one.

    • [#1654] Added a check that config import does not override database updates during provision. @AlexSkrypnyk (#2304)
      Updated modules may bring databased updates via update hook. When the provision runs, the config import runs after these database updates, and may revert them. This change allows to check the configs before and after import and fail the provision if there are changes that may indicate that database updates were reverted.

    • [#532] Added support for Functional JS tests. @AlexSkrypnyk (#2300)
      Functional JS tests can now run using the Chrome container. The setup is similar to existing Behat configuration.

    • Added support for all AI agents + docs. @AlexSkrypnyk (#2272)
      Vortex now has AGENTS.md file that provides instructions for AI agents on how to work with projects based on Vortex, including how to read generic documentation from https://www.vortextemplate.com/docs, and project-specific documentation from the project's docs/ directory. This allows teams to document only the project-related specifics and let AI agents use the generic documentation for all the common tasks.

    • [#699] Added support for downloading DB from S3. @AlexSkrypnyk (#2256)
      Added AWS S3 bucket as a new source of the database dump storage. This is useful for when the database dump cannot be sourced directly from the production environment and is stored in the intermediary location, such as S3.

    • [#1913] Allow to modify Drush PHP runtime configuration. @AlexSkrypnyk (#2268)
      This allows to provide a custom drush.ini file with PHP configuration targeted for Drush commands. This is useful for commands that require more memory or longer execution time.

    • [#2198] Added support for ACME challenge in Shield. @AlexSkrypnyk (#2254)
      This allows to use Let's Encrypt certificates with Shield module by bypassing ACME challenge endpoint /.well-known/acme-challenge/*.

    • [#1979] Added support for xmlsitemap module for sitemap.xml generation. @AlexSkrypnyk (#2264)
      This allows to generate sitemap.xml file, which every website should have.

    • Added coverage threshold to CI job summary. @AlexSkrypnyk (#2251)
      Coverage threshold existed before, but it was only visible in the logs. Now it is also added to the CI job summary, so it is more visible and easier to track.

    • Added config to Renovate to update root FE deps. @AlexSkrypnyk (#2278, #2277)
      Renovate was configured to manage PHP, Docker and GitHub Action dependencies, but not the NPM dependencies used for module development. This change adds the root package.json to Renovate's scope, so that it can keep the FE dependencies up to date as well.

  • πŸ›  Changed

    • Simplified provision to use direct commands rather than drush:deploy. @AlexSkrypnyk (#2303)
      We used both drush:deploy and direct Drush commands in the provision script based on whether the configuration files were present or not. This change simplifies the logic by always using direct Drush commands, which are more straightforward and easier to maintain.

    • Added missing namespaced variables to Vortex scripts. @AlexSkrypnyk (#2267)
      Namespaced variables are variables that have a specific prefix to indicate that they are used in a context of a specific script. This allows to target variables more precisely. Some of the scripts did not have namespaced variables, which made certain overrides impossible. This change fixes that.

    • Removed the Docker builder cache to free up CI container space. @AlexSkrypnyk (#2290)
      In some edge cases, the container could run out of space due to the builder cache, which is not needed in CI and can be safely removed.

    • Disabled Renovate for development .vortex files. @AlexSkrypnyk (#2285)
      These dependencies are locked and managed manually.

    • [#2202] Updated Acquia settings to use env variables to include the cloud setting file. @AlexSkrypnyk (#2260)
      Prior to this change, the Acquia settings file was included using the project details specified as strings in the settings.acquia.php file, making it less upgradable.

    • Increased test coverage for Acquia env settings. @AlexSkrypnyk
      Some of the code paths in Acquia settings were not covered by tests, which made it more difficult to maintain and refactor. This change adds more tests to cover these paths.

    • [#1976] Upload SUT test artifacts in vortex-test-workflow CI. @AlexSkrypnyk (#2255)
      This allows to have access to the test artifacts produced by the SUT tests, such as screenshots and logs, which can be useful for debugging test failures.

  • 🐞 Fixed

    • [#2270] Fixed follow-up deployments to mark deployment in GitHub as inactive. @AlexSkrypnyk (#2299)
      This was making follow-up deployments of peer PRs to mark the deployments of the other PRs as inactive. The fix was to correctly name the deployment in GitHub after the PR number or branch.

    • [#2261] Fixed Acquia settings to allow DRUPAL_CONFIG_PATH override independently of config_vcs_directory. @AlexSkrypnyk (#2263)
      This fixes the issues where the config sync directory in Acquia could be overridden with a value from DRUPAL_CONFIG_PATH environment variable only if $settings['config_vcs_directory'] existed. After this fix, the DRUPAL_CONFIG_PATH variable can be used to override the config sync directory in Acquia regardless of the presence of config_vcs_directory setting.

    • Fixed incorrectly prefixed environment variables. @AlexSkrypnyk (#2265)
      Renamed VORTEX_DB_<ACTION>_* to VORTEX_<ACTION>_DB_* for consistency with other variables.

    • Fixed SIGPIPE (exit code 141) in CI coverage threshold check caused by head -1 closing pipe under pipefail. @AlexSkrypnyk (#2289)

    • [#1219] Fixed tag deployment mode skip in Lagoon deploy script. @AlexSkrypnyk (#2301)
      Prior to this change, the tag deployment wouldbe triggered from CI and hiy Lagoon, which would respond with an error, causing the CI job to fail.

    • [#2249] Changed Renovate rangeStrategy to bump. @AlexSkrypnyk (#2250)
      This fixes Renovate configuration to also update composer.json when bumping dependencies. Not adding this earlier when we switched to using "bumping" of versions in composer.json was an oversight.

  • ⬆️ Updated


πŸŽ› Installer

  • ✨ New

    • [#2302] Added support for prompts schema to make the installer AI-friendly. @AlexSkrypnyk (#2306)
      AI agents now can use --schema flag to get structured information about the installer options, requirements and steps, and use it to run the installer in a non-interactive way.
      They can also use --validate flag to validate the config before running the installer.
      There is also a new --agent-help flag that provides detailed information about the installer's commands and options. This is useful for AI agents.
  • πŸ›  Changed

    • None.
  • 🐞 Fixed

    • None.

πŸ“– Documentation


πŸ“‹ Release checklist

  • Updated all dependencies outside of the schedule
  • Updated container images to the latest versions and checked that @see links
  • Updated PHP version in composer.json for config.platform.
  • Updated PHP version in phpcs.xml for testVersion.
  • Updated PHP version in phpstan.neon for phpVersion.
  • Updated minor version of all packages in composer.json.
  • Updated minor version of dependencies in theme's package.json.
  • Update drevops/ci-runner to the latest version in .circleci/config.yml and .github/workflows/build-test-deploy.yml.
  • Incremented the cache version in .circleci/config.yml and .github/workflows/build-test-deploy.yml.
  • Updated documentation.

Full Changelog: 1.35.3...1.36.0

@AlexSkrypnyk, @renovate[bot] and renovate[bot]