Skip to main content

Template for contributed Drupal modules and themes

From one drop to Drupal.org.

You write the code. Eddy carries it the rest of the way: CI on GitHub Actions, a local Drupal site, coding standards and mirroring to Drupal.org.

curl -fsSL https://eddy.drevops.com/install > install.php && php install.php

Follow the stream

The same commands carry your extension from your laptop to every tested release, and CI runs them too.

  1. Source

    Install

    Answer a few questions: name, module or theme, Drupal versions, tools and a command wrapper. The installer keeps only what you pick.

    php install.php
    The installer asking about the extension and rewriting the template to match
  2. Build

    A real Drupal site

    Drupal on your own PHP, served by PHP's webserver from an SQLite database. No containers to babysit.

    ahoy build
    ahoy build assembling the codebase, starting the webserver and installing Drupal
  3. Filter

    Coding standards

    PHPCS, PHPStan, Drupal Rector, Twig CS Fixer, ESLint, Stylelint, CSpell and Prettier, set up for Drupal.

    ahoy lint
    ahoy lint running PHPCS, PHPStan, Rector, ESLint and CSpell
  4. Test the water

    Tests

    PHPUnit Unit, Kernel, Functional and FunctionalJavascript suites in your local Chrome or Selenium, plus Jest.

    ahoy test
    ahoy test running the PHPUnit suites and the Jest tests
  5. Current

    CI on every push

    GitHub Actions runs the same commands on PHP 8.3, 8.4 and 8.5 and Drupal 10, 11 and 12, plus legacy and canary tiers.

    git push
    • lint-d10 · d11 · d12 coding standards
    • test-php-min / max on each major
    • legacy · canary the earliest supported release and the next beta
    • Codecov coverage from every test job
  6. Mouth

    Drupal.org

    Once CI passes, every tested commit and release tag is mirrored to Drupal.org, or any other git remote.

    • Branches deploy the commit that CI tested
    • Tags deploy alone, and the branches stay put
    • Never overtaken by an older run

What floats along

The tools and services that Eddy sets up for you.

  • PHPUnit
  • Jest
  • PHPStan
  • Drupal Rector
  • PHPCS
  • Twig CS Fixer
  • ESLint
  • Stylelint
  • Prettier
  • CSpell
  • pcov
  • Codecov
  • GitHub Actions
  • GitLab CI
  • Drupal.org
  • Renovate
  • Composer
  • Drush
  • Make
  • Ahoy
  • Chrome
  • Selenium
  • Xdebug
  • SQLite
  • Cloudflare Tunnel

Downstream

Contributed Drupal modules that start from Eddy.

The deep end

Under the surface, 3 parts keep every extension the same, and easy to keep current.

0 m · surface

Template

Your repository: the extension, its CI workflows, the linter and test configuration, and the docs it ships with.

10 m · current

Tooling

The drevops/eddy-tooling package, whose eddy-* commands assemble, serve, provision and deploy the site, for you and for CI.

20 m · bed

Installer

A single command that downloads a release and shapes the template to your answers. An update renders the new release the same way and merges only what changed.

Dive into the docs

Maintained since 2015, with more than 60 releases, and free under GPL-2.0.

Start with a drop.

curl -fsSL https://eddy.drevops.com/install > install.php && php install.php