Scripts and recipes¶
This page covers two related-but-distinct components: the scripts that automate install/config/export, and the recipes that add optional features to a tenant site.
Scripts (fedms/scripts)¶
GitLab: fedms/components/scripts
Composer: fedms/scripts — installed to vendor/fedms/scripts/.
What it ships¶
1 2 3 4 5 6 7 8 9 | |
Ahoy commands exposed¶
| Command | What it does |
|---|---|
l3d ahoy fedms install |
Run install.sh — full fresh install. |
l3d ahoy fedms update-config |
Run config.sh — apply idempotent config updates. |
l3d ahoy fedms export-config |
Run drush config:devel-export for the profile and all seven modules in one shot. |
install.sh¶
The fresh-install pipeline:
- Workaround for book#3563936 —
copy
field.storage.node.body.ymlfrom core'sarticle_content_typerecipe into thebookmodule'sconfig/optional/. - Base setup (
.base.sh). - Import profile config from
web/profiles/contrib/fedms/config/optional. - Import
fedms_contentconfig. - Import
fedms_ecaconfig. - Import
fedms_federationconfig. - Disable the ECA modeler (
drush modeler_api:disable eca) so the next imports don't trigger model auto-generation. - User setup (
.user.sh). - Config tweaks (
config.sh). - Optional
config/install.shfor site-specific extras. - Re-enable the ECA modeler.
drush cronto flush any post-install jobs.
config.sh¶
Idempotent config updates. Whenever a structural change ships in a release that needs imperative SQL or Drush commands beyond what config sync handles, the relevant line goes here.
fedms.gitlab-ci.yml¶
The CI pipeline template. Site .gitlab-ci.yml files include this:
1 2 3 4 | |
The pipeline enforces deployment, ignores CSP in outdated checks, and ignores composer audit (until upstream is clean).
Recipes¶
Drupal recipes are Composer-published bundles of config that add optional features.
The shipped recipes¶
| Recipe | GitLab | Composer |
|---|---|---|
| Attachment Recording | fedms/components/recipes/attachment-recording |
fedms-recipe/attachment_recording |
| Send Email | fedms/components/recipes/send-email |
fedms-recipe/send_email |
| Zoom Video | fedms/components/recipes/zoom-video |
fedms-recipe/zoom_video |
Plus the parent recipe scaffold at
fedms/components/recipe
which provides the shared composer.json skeleton.
Recipe anatomy¶
A recipe is a directory with:
1 2 3 4 5 6 | |
recipe.yml typically looks like this:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
Applying a recipe¶
1 2 | |
(The exact path depends on the installer-paths config.)
Authoring a new recipe¶
- Fork the parent recipe scaffold at
fedms/components/recipe. - Set the name, description, install list, input, and config
actions in
recipe.yml. - Add any starter config files under
config/. - Test on a clean install of a tenant site.
- Open an MR.
- Tag a release once approved.
Site-level recipes vs framework recipes¶
Site repositories may have their own recipes under recipes/.
The Amplius site, for example, has alerts and monitoring recipes
that are part of the LakeDrops operational stack — these are
site-level and unrelated to the FedMS framework.
Keep this distinction clear: framework recipes ship under
fedms-recipe/* in the FedMS group; site-level recipes live in the
site repo and are private to the site.
Next steps¶
- Admin → Recipes — applying recipes.
- Profile — how the install pipeline is wired up.
- Repository layout — where everything lives.