fix: #3622106 Install canvas_page_template_component from the recipe so Canvas does not install it during RecipeAppliedEvent

Issue: #3622106 drush site:install on a Drupal CMS host aborts with a synthetic service ("kernel") error

Credit

This is the same fix as Horizon Aid #3622092 / horizonaid!83 (merged), which found it first. That work is what identified the cause and the one-line resolution; this merge request applies the same change to Educare.

The fix — one line

install:
- vartheme_bs5_educare
- better_exposed_filters
+ - canvas_page_template_component

Canvas installs canvas_page_template_component lazily, during RecipeAppliedEvent. Installing a module mid-event rebuilds the container, and in the rebuilt ContainerBuilder the kernel service is synthetic and unset — so the next hook resolution that needs it throws, and the install dies.

Declaring the module in the recipe's own install: list means it is already installed before the event fires. No mid-event module install, no container rebuild, no synthetic kernel.

This corrects an earlier diagnosis. The failure had been attributed to an unfixable upstream Canvas defect; it is fixable here, in Educare's own recipe.yml.

Verified end to end

Executed, not inferred. Clean-room drupal/cms build — composer create-project drupal/cms, composer config minimum-stability dev, composer require drupal/educare, then drush si -y ../recipes/educare — on Drupal 11.4.6 with Canvas 1.11.0:

  • Before: exit 1, the install aborts.
  • After: exit 0, "Installation complete", 0 errors, 3 warnings.

Content imported: 12 canvas pages, 40 events, 20 programs, 15 news, 3 pages.

In a browser, /, /about, /programs, /news and /contact-us all render with 0 console errors. The contact form works, the header search (input[name="keywords"]) works, and the Programs listing shows Showing 1-12 of 12 with the Undergraduate/Graduate toggle working.

What this does not claim

  • The 3 remaining warnings are views_exposed_filter_block:search-block_1. They are separate and pre-existing, and this merge request does not fix them.
  • The functional suite result below is from CI on this exact commit, not from the local run that was still in progress when this was first written.

CI on this commit: green, with the suite actually running

Pipeline 955403 on c9cdd18: 23 of 23 jobs green.

  • 📦 Drupal CMS - Educare — success, at allow_failure: false. The install now passes on a runner, so nothing has to be tolerated.
  • 🧪 Functional — all 16 buckets success. They ran; they were not skipped.
  • 📦 Composer validate, 📐 YAML lint, 🔤 Cspell, 🟨 ESLint, 🧩 Cucumber dry-run, 📊 Create reports — success.

Totals across the 16 buckets: 233 scenarios and 1493 steps, all passed.

This is the first green pipeline on this branch line, and it is green because the install succeeds — not because a failure is allowed. For contrast, on the previous approach the same 16 buckets failed at exit 127 against a site that was never built.

Note the suite is 233 scenarios, one more than the 232 quoted in earlier discussion. This merge request adds no new scenarios; the count is the existing suite exercising the site this fix makes installable.

The .gitlab-ci.yml hunk is cosmetic and independent

The second commit renames the install job from 📦 (Drupal CMS) Install Educare site template to 📦 Drupal CMS - Educare. It is not part of the defect resolution — a reviewer can consider it separately.

It touches all five occurrences, including the needs: reference in 🧪 Functional. That one matters: missing it would leave a dangling reference and break the gate.

Note that with the install now able to pass, the job keeps allow_failure: false — the gate is honest again and can actually go green.

Scope

Two files, +6 / -5: recipe.yml (+1) and .gitlab-ci.yml (+5/-5). No patches. Nothing in Drupal CMS or Canvas is modified or proposed.

AI-Generated: Yes

Checkpoints

  • Testing to ensure no regression
  • Automated unit testing coverage
  • Automated functional testing coverage
  • Readability
  • Accessibility
  • Performance
  • Security
  • Developer Documentation
  • User Guide Documentation
  • Release notes snippet
  • UX/UI designer responsibilities
  • Reviewed by a human
  • Code review by maintainers
  • Full testing and approval
  • Credit contributors
  • Review with the product owner
  • Release
Edited by Rajab Natshah

Merge request reports

Loading
Loading