PHPackages                             pantheon-systems/example-drops-8-composer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [DevOps &amp; Deployment](/categories/devops)
4. /
5. pantheon-systems/example-drops-8-composer

AbandonedArchivedProject[DevOps &amp; Deployment](/categories/devops)

pantheon-systems/example-drops-8-composer
=========================================

Install drops-8 with Composer on Pantheon.

2.3.2(5y ago)9520.6k123[18 issues](https://github.com/pantheon-systems/example-drops-8-composer/issues)[11 PRs](https://github.com/pantheon-systems/example-drops-8-composer/pulls)MITShellPHP &gt;=7.3

Since Nov 10Pushed 3y ago4 watchersCompare

[ Source](https://github.com/pantheon-systems/example-drops-8-composer)[ Packagist](https://packagist.org/packages/pantheon-systems/example-drops-8-composer)[ RSS](/packages/pantheon-systems-example-drops-8-composer/feed)WikiDiscussions master Synced yesterday

READMEChangelog (4)Dependencies (22)Versions (189)Used By (0)

Example Drops 8 Composer
========================

[](#example-drops-8-composer)

[![CircleCI](https://camo.githubusercontent.com/93ecbbd4e4c86027d31474497e73f0b5ae21f8548fad6eec8d67a0761d770a9a/68747470733a2f2f636972636c6563692e636f6d2f67682f70616e7468656f6e2d73797374656d732f6578616d706c652d64726f70732d382d636f6d706f7365722e7376673f7374796c653d736869656c64)](https://circleci.com/gh/pantheon-systems/example-drops-8-composer)[![Deprecated](https://camo.githubusercontent.com/19ce980e24846b0433e0a167f429d6824cfb00eebce15cd1f657a8cba03ba2e1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f50616e7468656f6e2d446570726563617465642d79656c6c6f773f6c6f676f3d70616e7468656f6e26636f6c6f723d464644433238)](https://pantheon.io/docs/oss-support-levels#deprecated)

[![Pantheon example-drops-8-composer](https://camo.githubusercontent.com/2eb1095f27130dec9b13701d5f55b7b972c39e01c81b39ad0ff713357fcef40e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f64617368626f6172642d64726f70735f382d79656c6c6f772e737667)](https://dashboard.pantheon.io/sites/c401fd14-f745-4e51-9af2-f30b45146a0c#dev/code)[![Dev Site example-drops-8-composer](https://camo.githubusercontent.com/8192cbeb799f004370e87f158a0ed7fba0fa29fc56a9318a263df6bf149184e1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f736974652d64726f70735f382d626c75652e737667)](http://dev-example-drops-8-composer.pantheonsite.io/)

This repository is a reference implementation and start state for a modern Drupal 8 workflow utilizing [Composer](https://getcomposer.org/), Continuous Integration (CI), Automated Testing, and Pantheon. Even though this is a good starting point, you will need to customize and maintain the CI/testing set up for your projects.

This repository is meant to be copied one-time by the the [Terminus Build Tools Plugin](https://github.com/pantheon-systems/terminus-build-tools-plugin) but can also be used as a template. It should not be cloned or forked directly.

The Terminus Build Tools plugin will scaffold a new project, including:

- A Git repository
- A free Pantheon sandbox site
- Continuous Integration configuration/credential set up

For more details and instructions on creating a new project, see the [Terminus Build Tools Plugin](https://github.com/pantheon-systems/terminus-build-tools-plugin/).

Important files and directories
-------------------------------

[](#important-files-and-directories)

### `/web`

[](#web)

Pantheon will serve the site from the `/web` subdirectory due to the configuration in `pantheon.yml`. This is necessary for a Composer based workflow. Having your website in this subdirectory also allows for tests, scripts, and other files related to your project to be stored in your repo without polluting your web document root or being web accessible from Pantheon. They may still be accessible from your version control project if it is public. See [the `pantheon.yml`](https://pantheon.io/docs/pantheon-yml/#nested-docroot) documentation for details.

#### `/config`

[](#config)

One of the directories moved to the git root is `/config`. This directory holds Drupal's `.yml` configuration files. In more traditional repo structure these files would live at `/sites/default/config/`. Thanks to [this line in `settings.php`](https://github.com/pantheon-systems/example-drops-8-composer/blob/54c84275cafa66c86992e5232b5e1019954e98f3/web/sites/default/settings.php#L19), the config is moved entirely outside of the web root.

### `composer.json`

[](#composerjson)

This project uses Composer to manage third-party PHP dependencies.

The `require` section of `composer.json` should be used for any dependencies your web project needs, even those that might only be used on non-Live environments. All dependencies in `require` will be pushed to Pantheon.

The `require-dev` section should be used for dependencies that are not a part of the web application but are necesarry to build or test the project. Some example are `php_codesniffer` and `phpunit`. Dev dependencies will not be deployed to Pantheon.

If you are just browsing this repository on GitHub, you may not see some of the directories mentioned above. That is because Drupal core and contrib modules are installed via Composer and ignored in the `.gitignore` file.

This project uses the following required dependencies:

- **composer/installers**: Relocates the installation location of certain Composer projects by type; for example, this component allows Drupal modules to be installed to the `modules` directory rather than `vendor`.
- **drupal/core-composer-scaffold**: Allows certain necessary files, e.g. index.php, to be copied into the required location at installation time.
- **drupal/core-recommended**: This package contains Drupal itself, including the Drupal scaffold files.
- **pantheon-systems/drupal-integrations**: This package provides additional scaffold files required to install this site on the Pantheon platform. These files do nothing if the site is deployed elsewhere.

The following optional dependencies are also included as suggestions:

- **pantheon-systems/quicksilver-pushback**: This component allows commits from the Pantheon Dashboard to be automatically pushed back to GitHub for sites using the Build Tools Workflow. This package does nothing if that workflow has not been set up for this site.
- **drush/drush**: Drush is a commandline tool that provides ways to interact with site maintenance from the command line.
- **drupal/console**: Drupal Console is similar to and an alternative for Drush. You may use either or both.
- **cweagans/composer-patches**: Allows a site to be altered with patch files at installation time.
- **drupal/config\_direct\_save**: Provides a way to export configuration directly to the filesystem (in SFTP mode) directly from the Drupal admin interface. This is a convenient way to manage configuration files.
- **drupal/config\_installer**: Allows a site to be re-installed through the Drupal web installer using existing exported configuration files.
- **drush-ops/behat-drush-endpoint**: Used by Behat tests.
- **rvtraveller/qs-composer-installer**: Allows a site to install quicksilver hooks from a Composer package.
- **zaporylie/composer-drupal-optimizations**: This package makes `composer update` operations run more quickly when updating Drupal and Drupal's dependencies.

Any of the optional dependencies may be removed if they are not needed or desired.

### `.ci`

[](#ci)

This `.ci` directory is where all of the scripts that run on Continuous Integration are stored. Provider specific configuration files, such as `.circle/config.yml` and `.gitlab-ci.yml`, make use of these scripts.

The scripts are organized into subdirectories of `.ci` according to their function: `build`, `deploy`, or `test`.

#### Build Scripts `.ci/build`

[](#build-scripts-cibuild)

Steps for building an artifact suitable for deployment. Feel free to add other build scripts here, such as installing Node dependencies, depending on your needs.

- `.ci/build/php` installs PHP dependencies with Composer

#### Build Scripts `.ci/deploy`

[](#build-scripts-cideploy)

Scripts for facilitating code deployment to Pantheon.

- `.ci/deploy/pantheon/create-multidev` creates a new [Pantheon multidev environment](https://pantheon.io/docs/multidev/) for branches other than the default Git branch
    - Note that not all users have multidev access. Please consult [the multidev FAQ doc](https://pantheon.io/docs/multidev-faq/) for details.
- `.ci/deploy/pantheon/dev-multidev` deploys the built artifact to either the Pantheon `dev` or a multidev environment, depending on the Git branch

#### Automated Test Scripts `.ci/tests`

[](#automated-test-scripts-citests)

Scripts that run automated tests. Feel free to add or remove scripts here depending on your testing needs.

#### Github Actions Workflows `.ci/.github`

[](#github-actions-workflows-cigithub)

This folder should be copied to .github folder in root to enable Github Actions. Also, some secrets need to be added to Github Actions configuration.

**Static Testing** `.ci/test/static` and `tests/unit`Static tests analyze code without executing it. It is good at detecting syntax error but not functionality.

- `.ci/test/static/run` Runs [PHP CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) with [Drupal coding standards](https://www.drupal.org/project/coder), PHP Unit, and [PHP syntax checking](https://www.php.net/manual/en/function.php-check-syntax.php).
- `tests/unit/bootstrap.php` Bootstraps the Composer autoloader
- `tests/unit/TestAssert.php` An example Unit test. Project specific test files will need to be created in `tests/unit`.

**Visual Regression Testing** `.ci/test/visual-regression`Visual regression testing uses a headless browser to take screenshots of web pages and compare them for visual differences.

- `.ci/test/visual-regression/run` Runs [BackstopJS](https://github.com/garris/BackstopJS) visual regression testing.
- `.ci/test/visual-regression/backstopConfig.js` The [BackstopJS](https://github.com/garris/BackstopJS) configuration file. Setting here will need to be updated for your project. For example, the `pathsToTest` variable determines the URLs to test.

**Behat Testing** `.ci/test/behat` and `tests/behat`[Behat](http://behat.org/en/latest/) is an acceptance/end-to-end testing framework written in PHP. It faciliates testing the fully built Drupal site on Pantheon infrastucture. [The Drupal Behat Extension](https://www.drupal.org/project/drupalextension) is used to help with integrating Behat and Drupal.

- `.ci/test/behat/initialize` creates a backup of the environment to be tested
- `.ci/test/behat/run` sets the `BEHAT_PARAMS` environment variable with dynamic information necessary for Behat and configure it to use Drush via [Terminus](https://pantheon.io/docs/terminus/) and starts headless Chrome, and runs Behat
- `.ci/test/behat/cleanup` restores the previously made database backup and saves screenshots taken by Behat
- `tests/behat/behat-pantheon.yml` Behat configuration file compatible with running tests against a Pantheon site
- `tests/behat/tests/behat/features` Where Behat test files, with the `.feature` extension, should be stored. The provided example tests will need to be replaced with project specific tests.
    - `tests/behat/tests/behat/features/content.feature` A Behat test file which logs into the Drupal dashboard, creates nodes, users and terms, and verifies their existience in the Drupal admin interface and the front end of the site

Github Actions
--------------

[](#github-actions)

If you need to enable Github Actions for an existing project, you should copy .ci/.github to .github and then add the following secrets to Github Actions configuration:

- ADMIN\_EMAIL
- ADMIN\_PASSWORD
- ADMIN\_USERNAME
- TERMINUS\_TOKEN
- TERMINUS\_SITE
- SSH\_PRIVATE\_KEY
- GH\_TOKEN

Updating your site
------------------

[](#updating-your-site)

When using this repository to manage your Drupal site, you will no longer use the Pantheon dashboard to update your Drupal version. Instead, you will manage your updates using Composer. Ensure your site is in Git mode, clone it locally, and then run composer commands from there. Commit and push your files back up to Pantheon as usual.

Re-enabling automation
----------------------

[](#re-enabling-automation)

The automation which ran daily to check for composer updates has been disabled as of `12/1/22`. Build Tools users can re-enable automation to check for composer updates by uncommenting the `scheduled_update_check` in `.circleci/config.yml`.

###  Health Score

43

—

FairBetter than 90% of packages

Maintenance16

Infrequent updates — may be unmaintained

Popularity39

Limited adoption so far

Community31

Small or concentrated contributor base

Maturity77

Established project with proven stability

 Bus Factor1

Top contributor holds 60.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~35 days

Recently: every ~88 days

Total

41

Last Release

2093d ago

Major Versions

1.4.5 → 2.0.02019-08-29

PHP version history (3 changes)1.3.4PHP &gt;=7.0

1.3.5PHP &gt;=7.0.8

2.3.1PHP &gt;=7.3

### Community

Maintainers

![](https://www.gravatar.com/avatar/b34cc6bd882277b6c6dda19bf6631ae5c3a909fd667c826a15121642cdc051b2?d=identicon)[greg.1.anderson](/maintainers/greg.1.anderson)

![](https://www.gravatar.com/avatar/5a89f5f15357797cbd6ec7833a28626478ae3c0ceb5fa1faa8a26d0960584c65?d=identicon)[pantheon-systems](/maintainers/pantheon-systems)

![](https://avatars.githubusercontent.com/u/2133004?v=4)[Andrew Taylor](/maintainers/ataylorme)[@ataylorme](https://github.com/ataylorme)

---

Top Contributors

[![greg-1-anderson](https://avatars.githubusercontent.com/u/612191?v=4)](https://github.com/greg-1-anderson "greg-1-anderson (138 commits)")[![g1a-pantheon](https://avatars.githubusercontent.com/u/290197609?v=4)](https://github.com/g1a-pantheon "g1a-pantheon (16 commits)")[![stevector](https://avatars.githubusercontent.com/u/211029?v=4)](https://github.com/stevector "stevector (15 commits)")[![ataylorme](https://avatars.githubusercontent.com/u/2133004?v=4)](https://github.com/ataylorme "ataylorme (13 commits)")[![pantheon-upstream](https://avatars.githubusercontent.com/u/13386743?v=4)](https://github.com/pantheon-upstream "pantheon-upstream (10 commits)")[![kporras07](https://avatars.githubusercontent.com/u/2217820?v=4)](https://github.com/kporras07 "kporras07 (9 commits)")[![rwagner00](https://avatars.githubusercontent.com/u/1789035?v=4)](https://github.com/rwagner00 "rwagner00 (3 commits)")[![jproctor](https://avatars.githubusercontent.com/u/363484?v=4)](https://github.com/jproctor "jproctor (2 commits)")[![shaal](https://avatars.githubusercontent.com/u/22901?v=4)](https://github.com/shaal "shaal (2 commits)")[![derimagia](https://avatars.githubusercontent.com/u/999489?v=4)](https://github.com/derimagia "derimagia (2 commits)")[![aaronbauman](https://avatars.githubusercontent.com/u/508451?v=4)](https://github.com/aaronbauman "aaronbauman (2 commits)")[![kyletaylored](https://avatars.githubusercontent.com/u/1759794?v=4)](https://github.com/kyletaylored "kyletaylored (1 commits)")[![nelsonamaya82](https://avatars.githubusercontent.com/u/6953921?v=4)](https://github.com/nelsonamaya82 "nelsonamaya82 (1 commits)")[![petemcw](https://avatars.githubusercontent.com/u/131408?v=4)](https://github.com/petemcw "petemcw (1 commits)")[![rvtraveller](https://avatars.githubusercontent.com/u/1789427?v=4)](https://github.com/rvtraveller "rvtraveller (1 commits)")[![szipfel](https://avatars.githubusercontent.com/u/856298?v=4)](https://github.com/szipfel "szipfel (1 commits)")[![alisonjo315](https://avatars.githubusercontent.com/u/2660348?v=4)](https://github.com/alisonjo315 "alisonjo315 (1 commits)")[![benjifisher](https://avatars.githubusercontent.com/u/1170799?v=4)](https://github.com/benjifisher "benjifisher (1 commits)")[![cmcky](https://avatars.githubusercontent.com/u/5117005?v=4)](https://github.com/cmcky "cmcky (1 commits)")[![dalin-](https://avatars.githubusercontent.com/u/1127349?v=4)](https://github.com/dalin- "dalin- (1 commits)")

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/pantheon-systems-example-drops-8-composer/health.svg)

```
[![Health](https://phpackages.com/badges/pantheon-systems-example-drops-8-composer/health.svg)](https://phpackages.com/packages/pantheon-systems-example-drops-8-composer)
```

###  Alternatives

[drupal/recommended-project

Project template for Drupal projects with a relocated document root

1492.8M1](/packages/drupal-recommended-project)[fourkitchens/sous-drupal-project

Starter project for Sous a Drupal distribution featuring a theme based on Emulsify Design System.

141.1k](/packages/fourkitchens-sous-drupal-project)[az-digital/az_quickstart

Arizona Quickstart

52265.6k3](/packages/az-digital-az-quickstart)[helsingborg-stad/municipio

A bootstrap theme for creating municipality sites.

4028.3k10](/packages/helsingborg-stad-municipio)[vardot/varbase-project

Project template for Varbase distribution.

5162.4k](/packages/vardot-varbase-project)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
