From 047728fdfad1604e4d4c650403856bc638a56d14 Mon Sep 17 00:00:00 2001 From: Jordi Plana Date: Fri, 7 May 2021 09:53:27 -0700 Subject: [PATCH 01/11] First commit. --- .ddev/config.yaml | 184 ++++++++++++++++++++++++++++++++++++++++++ README.md | 73 +++++------------ composer.json | 83 +++++++++++++------ composer.patches.json | 5 ++ 4 files changed, 265 insertions(+), 80 deletions(-) create mode 100644 .ddev/config.yaml create mode 100644 composer.patches.json diff --git a/.ddev/config.yaml b/.ddev/config.yaml new file mode 100644 index 0000000000..839d17c9da --- /dev/null +++ b/.ddev/config.yaml @@ -0,0 +1,184 @@ +name: drupal-project +type: drupal9 +docroot: public +php_version: "7.4" +webserver_type: apache-fpm +router_http_port: "80" +router_https_port: "443" +xdebug_enabled: false +additional_hostnames: [] +additional_fqdns: [] +mariadb_version: "" +mysql_version: "5.7" +provider: default +webimage_extra_packages: [php-bcmath, php-intl, php-ldap, php-soap, php-zip] +project_tld: test +use_dns_when_possible: true +timezone: America/Vancouver +composer_version: "2" +disable_settings_management: true + + +# This config.yaml was created with ddev version v1.17.2 +# webimage: drud/ddev-webserver:v1.17.2 +# dbimage: drud/ddev-dbserver-mariadb-10.3:v1.17.0 +# dbaimage: phpmyadmin:5 +# However we do not recommend explicitly wiring these images into the +# config.yaml as they may break future versions of ddev. +# You can update this config.yaml using 'ddev config'. + +# Key features of ddev's config.yaml: + +# name: # Name of the project, automatically provides +# http://projectname.ddev.site and https://projectname.ddev.site + +# type: # drupal6/7/8, backdrop, typo3, wordpress, php + +# docroot: # Relative path to the directory containing index.php. + +# php_version: "7.4" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4" "8.0" + +# You can explicitly specify the webimage, dbimage, dbaimage lines but this +# is not recommended, as the images are often closely tied to ddev's' behavior, +# so this can break upgrades. + +# webimage: # nginx/php docker image. +# dbimage: # mariadb docker image. +# dbaimage: + +# mariadb_version and mysql_version +# ddev can use many versions of mariadb and mysql +# However these directives are mutually exclusive +# mariadb_version: 10.2 +# mysql_version: 8.0 + +# router_http_port: # Port to be used for http (defaults to port 80) +# router_https_port: # Port for https (defaults to 443) + +# xdebug_enabled: false # Set to true to enable xdebug and "ddev start" or "ddev restart" +# Note that for most people the commands +# "ddev xdebug" to enable xdebug and "ddev xdebug off" to disable it work better, +# as leaving xdebug enabled all the time is a big performance hit. + +# webserver_type: nginx-fpm # or apache-fpm + +# timezone: Europe/Berlin +# This is the timezone used in the containers and by PHP; +# it can be set to any valid timezone, +# see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones +# For example Europe/Dublin or MST7MDT + +# composer_version: "" +# if composer_version:"" it will use the current ddev default composer release. +# It can also be set to "1", to get most recent composer v1 +# or "2" for most recent composer v2. +# It can be set to any existing specific composer version. +# After first project 'ddev start' this will not be updated until it changes + +# additional_hostnames: +# - somename +# - someothername +# would provide http and https URLs for "somename.ddev.site" +# and "someothername.ddev.site". + +# additional_fqdns: +# - example.com +# - sub1.example.com +# would provide http and https URLs for "example.com" and "sub1.example.com" +# Please take care with this because it can cause great confusion. + +# upload_dir: custom/upload/dir +# would set the destination path for ddev import-files to custom/upload/dir. + +# working_dir: +# web: /var/www/html +# db: /home +# would set the default working directory for the web and db services. +# These values specify the destination directory for ddev ssh and the +# directory in which commands passed into ddev exec are run. + +# omit_containers: [db, dba, ddev-ssh-agent] +# Currently only these containers are supported. Some containers can also be +# omitted globally in the ~/.ddev/global_config.yaml. Note that if you omit +# the "db" container, several standard features of ddev that access the +# database container will be unusable. + +# nfs_mount_enabled: false +# Great performance improvement but requires host configuration first. +# See https://ddev.readthedocs.io/en/stable/users/performance/#using-nfs-to-mount-the-project-into-the-container + +# fail_on_hook_fail: False +# Decide whether 'ddev start' should be interrupted by a failing hook + +# host_https_port: "59002" +# The host port binding for https can be explicitly specified. It is +# dynamic unless otherwise specified. +# This is not used by most people, most people use the *router* instead +# of the localhost port. + +# host_webserver_port: "59001" +# The host port binding for the ddev-webserver can be explicitly specified. It is +# dynamic unless otherwise specified. +# This is not used by most people, most people use the *router* instead +# of the localhost port. + +# host_db_port: "59002" +# The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic +# unless explicitly specified. + +# phpmyadmin_port: "8036" +# phpmyadmin_https_port: "8037" +# The PHPMyAdmin ports can be changed from the default 8036 and 8037 + +# mailhog_port: "8025" +# mailhog_https_port: "8026" +# The MailHog ports can be changed from the default 8025 and 8026 + +# webimage_extra_packages: [php7.4-tidy, php-bcmath] +# Extra Debian packages that are needed in the webimage can be added here + +# dbimage_extra_packages: [telnet,netcat] +# Extra Debian packages that are needed in the dbimage can be added here + +# use_dns_when_possible: true +# If the host has internet access and the domain configured can +# successfully be looked up, DNS will be used for hostname resolution +# instead of editing /etc/hosts +# Defaults to true + +# project_tld: ddev.site +# The top-level domain used for project URLs +# The default "ddev.site" allows DNS lookup via a wildcard +# If you prefer you can change this to "ddev.local" to preserve +# pre-v1.9 behavior. + +# ngrok_args: --subdomain mysite --auth username:pass +# Provide extra flags to the "ngrok http" command, see +# https://ngrok.com/docs#http or run "ngrok http -h" + +# disable_settings_management: false +# If true, ddev will not create CMS-specific settings files like +# Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalConfiguration.php +# In this case the user must provide all such settings. + +# You can inject environment variables into the web container with: +# web_environment: +# - SOMEENV=somevalue +# - SOMEOTHERENV=someothervalue + +# no_project_mount: false +# (Experimental) If true, ddev will not mount the project into the web container; +# the user is responsible for mounting it manually or via a script. +# This is to enable experimentation with alternate file mounting strategies. +# For advanced users only! + +# Many ddev commands can be extended to run tasks before or after the +# ddev command is executed, for example "post-start", "post-import-db", +# "pre-composer", "post-composer" +# See https://ddev.readthedocs.io/en/stable/users/extending-commands/ for more +# information on the commands that can be extended and the tasks you can define +# for them. Example: +#hooks: +# post-import-db: +# - exec: drush cr +# - exec: drush updb diff --git a/README.md b/README.md index 93c66aea64..769cc92cd0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Composer template for Drupal projects +# Composer template for CS Drupal projects [![CI](https://github.com/drupal-composer/drupal-project/actions/workflows/ci.yml/badge.svg?branch=9.x)](https://github.com/drupal-composer/drupal-project/actions/workflows/ci.yml) @@ -13,38 +13,27 @@ First you need to [install Composer](https://getcomposer.org/doc/00-intro.md#ins You might need to replace `composer` with `php composer.phar` (or similar) for your setup. -After that you can create the project: +After that you can install the project: ``` -composer create-project drupal-composer/drupal-project:9.x-dev some-dir --no-interaction +composer install ``` -With `composer require ...` you can download new dependencies to your -installation. - -``` -cd some-dir -composer require drupal/devel -``` - -The `composer create-project` command passes ownership of all files to the -project that is created. You should create a new Git repository, and commit -all files not excluded by the `.gitignore` file. - ## What does the template do? When installing the given `composer.json` some tasks are taken care of: -* Drupal will be installed in the `web`-directory. +* Drupal will be installed in the `public`-directory. * Autoloader is implemented to use the generated composer autoloader in `vendor/autoload.php`, - instead of the one provided by Drupal (`web/vendor/autoload.php`). -* Modules (packages of type `drupal-module`) will be placed in `web/modules/contrib/` -* Theme (packages of type `drupal-theme`) will be placed in `web/themes/contrib/` -* Profiles (packages of type `drupal-profile`) will be placed in `web/profiles/contrib/` + instead of the one provided by Drupal (`public/vendor/autoload.php`). +* Modules (packages of type `drupal-module`) will be placed in `public/modules/contrib/` +* Theme (packages of type `drupal-theme`) will be placed in `public/themes/contrib/` +* Profiles (packages of type `drupal-profile`) will be placed in `public/profiles/contrib/` * Creates default writable versions of `settings.php` and `services.yml`. -* Creates `web/sites/default/files`-directory. +* Creates `public/sites/default/files`-directory. * Latest version of drush is installed locally for use at `vendor/bin/drush`. * Latest version of DrupalConsole is installed locally for use at `vendor/bin/drupal`. +* Latest version of deployer is installed locally for use at `vendor/bin/dep`. * Creates environment variables based on your .env file. See [.env.example](.env.example). ## Updating Drupal Core @@ -62,7 +51,7 @@ Follow the steps below to update your core files. 2. Run `git diff` to determine if any of the scaffolding files have changed. Review the files for any changes and restore any customizations to `.htaccess` or `robots.txt`. -1. Commit everything all together in a single commit, so `web` will remain in +1. Commit everything all together in a single commit, so `public` will remain in sync with the `core` when checking out branches or running `git bisect`. 1. In the event that there are non-trivial conflicts in step 2, you may wish to perform these steps on a branch, and use `git merge` to combine the @@ -78,60 +67,36 @@ Follow the steps below to update your core files. Composer recommends **no**. They provide [argumentation against but also workrounds if a project decides to do it anyway](https://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md). -### Should I commit the scaffolding files? - -The [Drupal Composer Scaffold](https://github.com/drupal/core-composer-scaffold) -plugin can download the scaffold files (like index.php, update.php, …) to the -web/ directory of your project. If you have not customized those files you could -choose to not check them into your version control system (e.g. git). If that is -the case for your project it might be convenient to automatically run the -drupal-scaffold plugin after every install or update of your project. You can -achieve that by registering `@composer drupal:scaffold` as post-install and -post-update command in your composer.json: - -```json -"scripts": { - "post-install-cmd": [ - "@composer drupal:scaffold", - "..." - ], - "post-update-cmd": [ - "@composer drupal:scaffold", - "..." - ] -}, -``` - ### How can I apply patches to downloaded modules? If you need to apply patches (depending on the project being modified, a pull request is often a better solution), you can do so with the [composer-patches](https://github.com/cweagans/composer-patches) plugin. -To add a patch to drupal module foobar insert the patches section in the extra -section of composer.json: +To add a patch to drupal module foobar insert the patches section in the +section of composer.patches.json: ```json -"extra": { +{ "patches": { - "drupal/foobar": { + "drupal/foobar": { "Patch description": "URL or local path to patch" - } + } } } ``` ### How do I specify a PHP version ? -This project supports PHP 7.3 as minimum version (see [Environment requirements of Drupal 9](https://www.drupal.org/docs/understanding-drupal/how-drupal-9-was-made-and-what-is-included/environment-requirements-of)), however it's possible that a `composer update` will upgrade some package that will then require PHP 7.3+. +This project supports PHP 7.4.9 as minimum version (see [Environment requirements of Drupal 9](https://www.drupal.org/docs/understanding-drupal/how-drupal-9-was-made-and-what-is-included/environment-requirements-of)), however it's possible that a `composer update` will upgrade some package that will then require PHP 7.4+. To prevent this you can add this code to specify the PHP version you want to use in the `config` section of `composer.json`: ```json "config": { - "sort-packages": true, + ... "platform": { - "php": "7.3.19" + "php": "7.4.9" } }, ``` diff --git a/composer.json b/composer.json index 1e5828add3..82810d4d3c 100644 --- a/composer.json +++ b/composer.json @@ -1,14 +1,8 @@ { "name": "drupal-composer/drupal-project", - "description": "Project template for Drupal 9 projects with Composer", + "description": "Project template for CS Drupal 9 projects with Composer", "type": "project", "license": "GPL-2.0-or-later", - "authors": [ - { - "name": "", - "role": "" - } - ], "repositories": [ { "type": "composer", @@ -16,18 +10,27 @@ } ], "require": { - "php": ">=7.3", - "composer/installers": "^1.9", - "cweagans/composer-patches": "^1.7", - "drupal/core-composer-scaffold": "^9.1", - "drupal/core-recommended": "^9.1", - "drush/drush": "^10.3", - "vlucas/phpdotenv": "^5.1", - "webflo/drupal-finder": "^1.2" + "composer/installers": "^1.0", + "cweagans/composer-patches": "^1.0", + "drupal/backup_migrate": "^5.0@RC", + "drupal/composer_deploy": "^1.0", + "drupal/config_split": "^1.0", + "drupal/core-composer-scaffold": "^9.0", + "drupal/core-recommended": "^9.0", + "drupal/environment_indicator": "^4.0", + "drupal/ctools": "^3.0", + "drupal/masquerade": "^2.0@beta", + "drupal/module_filter": "^3.0", + "drupal/pathauto": "^1.0", + "drush/drush": "^10.0", + "ubc-web-services/galactus": "dev-develop", + "vlucas/phpdotenv": "^5.0" }, "require-dev": { - "drupal/core-dev": "^9.1", - "zaporylie/composer-drupal-optimizations": "^1.2" + "deployer/deployer": "^6.0", + "drupal/core-dev": "^9.0", + "joachim-n/composer-manifest": "^1.0", + "roave/security-advisories": "dev-latest" }, "conflict": { "drupal/drupal": "*" @@ -36,6 +39,10 @@ "prefer-stable": true, "config": { "discard-changes": true, + "optimize-autoloader": true, + "platform": { + "php": "7.4.9" + }, "sort-packages": true }, "autoload": { @@ -60,23 +67,47 @@ }, "extra": { "drupal-scaffold": { + "gitignore": false, "locations": { - "web-root": "web/" + "web-root": "public/" + }, + "file-mapping": { + "[web-root]/.csslintrc": false, + "[web-root]/.eslintignore": false, + "[web-root]/.eslintrc.json": false, + "[web-root]/.ht.router.php": false, + "[web-root]/INSTALL.txt": false, + "[web-root]/README.txt": false, + "[web-root]/example.gitignore": false, + "[web-root]/sites/development.services.yml": false, + "[web-root]/web.config": false } }, "installer-paths": { - "web/core": ["type:drupal-core"], - "web/libraries/{$name}": ["type:drupal-library"], - "web/modules/contrib/{$name}": ["type:drupal-module"], - "web/profiles/contrib/{$name}": ["type:drupal-profile"], - "web/themes/contrib/{$name}": ["type:drupal-theme"], - "drush/Commands/contrib/{$name}": ["type:drupal-drush"] + "public/core": [ + "type:drupal-core" + ], + "public/libraries/{$name}": [ + "type:drupal-library" + ], + "public/modules/contrib/{$name}": [ + "type:drupal-module" + ], + "public/profiles/contrib/{$name}": [ + "type:drupal-profile" + ], + "public/themes/contrib/{$name}": [ + "type:drupal-theme", + "ubc-web-services/galactus" + ], + "drush/Commands/contrib/{$name}": [ + "type:drupal-drush" + ] }, "composer-exit-on-patch-failure": true, "patchLevel": { "drupal/core": "-p2" }, - "patches": { - } + "patches-file": "composer.patches.json" } } diff --git a/composer.patches.json b/composer.patches.json new file mode 100644 index 0000000000..2316a47750 --- /dev/null +++ b/composer.patches.json @@ -0,0 +1,5 @@ +{ + "patches": { + + } +} \ No newline at end of file From 15c3ea1e1a1e7a24ccc76effb27a348c4db3309c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joe=CC=88l=20Pittet?= Date: Fri, 7 May 2021 10:57:17 -0700 Subject: [PATCH 02/11] We shouldn't need ctools unless it's explicitly required by something else --- composer.json | 1 - 1 file changed, 1 deletion(-) diff --git a/composer.json b/composer.json index 82810d4d3c..0633703e1f 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,6 @@ "drupal/core-composer-scaffold": "^9.0", "drupal/core-recommended": "^9.0", "drupal/environment_indicator": "^4.0", - "drupal/ctools": "^3.0", "drupal/masquerade": "^2.0@beta", "drupal/module_filter": "^3.0", "drupal/pathauto": "^1.0", From 4640600956b978a5415f3480bdd4b29757a17d4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joe=CC=88l=20Pittet?= Date: Fri, 7 May 2021 10:57:48 -0700 Subject: [PATCH 03/11] galactus now has the proper type in composer.json so installer knows what to do --- composer.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 0633703e1f..675c8e00a4 100644 --- a/composer.json +++ b/composer.json @@ -96,8 +96,7 @@ "type:drupal-profile" ], "public/themes/contrib/{$name}": [ - "type:drupal-theme", - "ubc-web-services/galactus" + "type:drupal-theme" ], "drush/Commands/contrib/{$name}": [ "type:drupal-drush" From eed5420cf6fc8c715a06356668b252e27bc59a0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joe=CC=88l=20Pittet?= Date: Sat, 22 Jan 2022 02:04:22 -0800 Subject: [PATCH 04/11] composer updates and add nvm to ddev --- .ddev/config.yaml | 27 ++++++++++++--------------- .ddev/web-build/Dockerfile | 11 +++++++++++ composer.json | 36 ++++++++++++++++++++++++------------ 3 files changed, 47 insertions(+), 27 deletions(-) create mode 100644 .ddev/web-build/Dockerfile diff --git a/.ddev/config.yaml b/.ddev/config.yaml index 839d17c9da..0bfd048ecc 100644 --- a/.ddev/config.yaml +++ b/.ddev/config.yaml @@ -17,11 +17,14 @@ use_dns_when_possible: true timezone: America/Vancouver composer_version: "2" disable_settings_management: true +hooks: + post-start: + - exec: 'bash -l -c "nvm install && nvm use"' -# This config.yaml was created with ddev version v1.17.2 -# webimage: drud/ddev-webserver:v1.17.2 -# dbimage: drud/ddev-dbserver-mariadb-10.3:v1.17.0 +# This config.yaml was created with ddev version v1.16.2 +# webimage: drud/ddev-webserver:v1.16.2 +# dbimage: drud/ddev-dbserver-mariadb-10.2:v1.16.0 # dbaimage: phpmyadmin:5 # However we do not recommend explicitly wiring these images into the # config.yaml as they may break future versions of ddev. @@ -36,7 +39,7 @@ disable_settings_management: true # docroot: # Relative path to the directory containing index.php. -# php_version: "7.4" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4" "8.0" +# php_version: "7.3" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4" "8.0" # You can explicitly specify the webimage, dbimage, dbaimage lines but this # is not recommended, as the images are often closely tied to ddev's' behavior, @@ -68,7 +71,7 @@ disable_settings_management: true # see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones # For example Europe/Dublin or MST7MDT -# composer_version: "" +# composer_version: "2" # if composer_version:"" it will use the current ddev default composer release. # It can also be set to "1", to get most recent composer v1 # or "2" for most recent composer v2. @@ -107,9 +110,6 @@ disable_settings_management: true # Great performance improvement but requires host configuration first. # See https://ddev.readthedocs.io/en/stable/users/performance/#using-nfs-to-mount-the-project-into-the-container -# fail_on_hook_fail: False -# Decide whether 'ddev start' should be interrupted by a failing hook - # host_https_port: "59002" # The host port binding for https can be explicitly specified. It is # dynamic unless otherwise specified. @@ -134,7 +134,7 @@ disable_settings_management: true # mailhog_https_port: "8026" # The MailHog ports can be changed from the default 8025 and 8026 -# webimage_extra_packages: [php7.4-tidy, php-bcmath] +# webimage_extra_packages: [php7.3-tidy, php-bcmath] # Extra Debian packages that are needed in the webimage can be added here # dbimage_extra_packages: [telnet,netcat] @@ -158,20 +158,17 @@ disable_settings_management: true # disable_settings_management: false # If true, ddev will not create CMS-specific settings files like -# Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalConfiguration.php +# Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalSettings.php # In this case the user must provide all such settings. -# You can inject environment variables into the web container with: -# web_environment: -# - SOMEENV=somevalue -# - SOMEOTHERENV=someothervalue - # no_project_mount: false # (Experimental) If true, ddev will not mount the project into the web container; # the user is responsible for mounting it manually or via a script. # This is to enable experimentation with alternate file mounting strategies. # For advanced users only! +# provider: default # Currently either "default" or "pantheon" +# # Many ddev commands can be extended to run tasks before or after the # ddev command is executed, for example "post-start", "post-import-db", # "pre-composer", "post-composer" diff --git a/.ddev/web-build/Dockerfile b/.ddev/web-build/Dockerfile new file mode 100644 index 0000000000..0fd9c00b95 --- /dev/null +++ b/.ddev/web-build/Dockerfile @@ -0,0 +1,11 @@ +ARG BASE_IMAGE +FROM $BASE_IMAGE + +ENV NVM_DIR=/usr/local/nvm + +# Install NVM. +RUN curl -sL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh -o install_nvm.sh +RUN mkdir -p $NVM_DIR && bash install_nvm.sh +RUN echo "source $NVM_DIR/nvm.sh" >>/etc/profile +RUN chmod -R ugo+w $NVM_DIR + diff --git a/composer.json b/composer.json index 675c8e00a4..181fc36659 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "drupal-composer/drupal-project", + "name": "ubccs/drupal-project", "description": "Project template for CS Drupal 9 projects with Composer", "type": "project", "license": "GPL-2.0-or-later", @@ -10,26 +10,28 @@ } ], "require": { - "composer/installers": "^1.0", + "composer/installers": "^2.0", "cweagans/composer-patches": "^1.0", - "drupal/backup_migrate": "^5.0@RC", + "drupal/backup_migrate": "^5.0", "drupal/composer_deploy": "^1.0", - "drupal/config_split": "^1.0", - "drupal/core-composer-scaffold": "^9.0", - "drupal/core-recommended": "^9.0", + "drupal/config_split": "^2.0@beta", + "drupal/core-composer-scaffold": "^9.0.0", + "drupal/core-recommended": "^9.0.0", + "drupal/core-vendor-hardening": "^9.0.0", "drupal/environment_indicator": "^4.0", "drupal/masquerade": "^2.0@beta", "drupal/module_filter": "^3.0", "drupal/pathauto": "^1.0", - "drush/drush": "^10.0", - "ubc-web-services/galactus": "dev-develop", + "drush/drush": "^11.0", + "ubc-web-services/galactus": "dev-master", "vlucas/phpdotenv": "^5.0" }, "require-dev": { "deployer/deployer": "^6.0", - "drupal/core-dev": "^9.0", + "drupal/core-dev": "^9.0.0", "joachim-n/composer-manifest": "^1.0", - "roave/security-advisories": "dev-latest" + "roave/security-advisories": "dev-latest", + "ubc-cpsc/deployer-recipes": "^1.0" }, "conflict": { "drupal/drupal": "*" @@ -42,13 +44,22 @@ "platform": { "php": "7.4.9" }, - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "composer/installers": true, + "cweagans/composer-patches": true, + "drupal/core-composer-scaffold": true, + "drupal/core-vendor-hardening": true, + "joachim-n/composer-manifest": true + } }, "autoload": { "classmap": [ "scripts/composer/ScriptHandler.php" ], - "files": ["load.environment.php"] + "files": [ + "load.environment.php" + ] }, "scripts": { "pre-install-cmd": [ @@ -77,6 +88,7 @@ "[web-root]/.ht.router.php": false, "[web-root]/INSTALL.txt": false, "[web-root]/README.txt": false, + "[web-root]/README.md": false, "[web-root]/example.gitignore": false, "[web-root]/sites/development.services.yml": false, "[web-root]/web.config": false From 4a7c6761f660aaef288731125313f319043192d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=ABl=20Pittet?= Date: Tue, 23 Aug 2022 12:44:29 -0700 Subject: [PATCH 05/11] Updated ddev config --- .ddev/config.yaml | 156 ++++++++++++++++++++++++++++--------- .ddev/web-build/Dockerfile | 11 --- 2 files changed, 119 insertions(+), 48 deletions(-) delete mode 100644 .ddev/web-build/Dockerfile diff --git a/.ddev/config.yaml b/.ddev/config.yaml index 0bfd048ecc..b236498f14 100644 --- a/.ddev/config.yaml +++ b/.ddev/config.yaml @@ -8,27 +8,19 @@ router_https_port: "443" xdebug_enabled: false additional_hostnames: [] additional_fqdns: [] -mariadb_version: "" -mysql_version: "5.7" -provider: default +database: + type: mysql + version: "5.7" +nfs_mount_enabled: false +mutagen_enabled: false webimage_extra_packages: [php-bcmath, php-intl, php-ldap, php-soap, php-zip] project_tld: test use_dns_when_possible: true timezone: America/Vancouver composer_version: "2" disable_settings_management: true -hooks: - post-start: - - exec: 'bash -l -c "nvm install && nvm use"' - - -# This config.yaml was created with ddev version v1.16.2 -# webimage: drud/ddev-webserver:v1.16.2 -# dbimage: drud/ddev-dbserver-mariadb-10.2:v1.16.0 -# dbaimage: phpmyadmin:5 -# However we do not recommend explicitly wiring these images into the -# config.yaml as they may break future versions of ddev. -# You can update this config.yaml using 'ddev config'. +web_environment: [] +nodejs_version: "16" # Key features of ddev's config.yaml: @@ -39,21 +31,19 @@ hooks: # docroot: # Relative path to the directory containing index.php. -# php_version: "7.3" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4" "8.0" +# php_version: "7.4" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1" -# You can explicitly specify the webimage, dbimage, dbaimage lines but this +# You can explicitly specify the webimage but this # is not recommended, as the images are often closely tied to ddev's' behavior, # so this can break upgrades. # webimage: # nginx/php docker image. -# dbimage: # mariadb docker image. -# dbaimage: -# mariadb_version and mysql_version -# ddev can use many versions of mariadb and mysql -# However these directives are mutually exclusive -# mariadb_version: 10.2 -# mysql_version: 8.0 +# database: +# type: # mysql, mariadb +# version: # database version, like "10.3" or "8.0" +# Note that mariadb_version or mysql_version from v1.18 and earlier +# will automatically be converted to this notation with just a "ddev config --auto" # router_http_port: # Port to be used for http (defaults to port 80) # router_https_port: # Port for https (defaults to 443) @@ -63,6 +53,11 @@ hooks: # "ddev xdebug" to enable xdebug and "ddev xdebug off" to disable it work better, # as leaving xdebug enabled all the time is a big performance hit. +# xhprof_enabled: false # Set to true to enable xhprof and "ddev start" or "ddev restart" +# Note that for most people the commands +# "ddev xhprof" to enable xhprof and "ddev xhprof off" to disable it work better, +# as leaving xhprof enabled all the time is a big performance hit. + # webserver_type: nginx-fpm # or apache-fpm # timezone: Europe/Berlin @@ -71,12 +66,25 @@ hooks: # see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones # For example Europe/Dublin or MST7MDT +# composer_root: +# Relative path to the composer root directory from the project root. This is +# the directory which contains the composer.json and where all Composer related +# commands are executed. + # composer_version: "2" -# if composer_version:"" it will use the current ddev default composer release. -# It can also be set to "1", to get most recent composer v1 -# or "2" for most recent composer v2. -# It can be set to any existing specific composer version. -# After first project 'ddev start' this will not be updated until it changes +# You can set it to "" or "2" (default) for Composer v2 or "1" for Composer v1 +# to use the latest major version available at the time your container is built. +# It is also possible to select a minor version for example "2.2" which will +# install the latest release of that branch. Alternatively, an explicit Composer +# version may be specified, for example "1.0.22". Finally, it is also possible +# to use one of the key words "stable", "preview" or "snapshot" see Composer +# documentation. +# To reinstall Composer after the image was built, run "ddev debug refresh". + +# nodejs_version: "16" +# change from the default system Node.js version to another supported version, like 12, 14, 17, 18. +# Note that you can use 'ddev nvm' or nvm inside the web container to provide nearly any +# Node.js version, including v6, etc. # additional_hostnames: # - somename @@ -91,7 +99,9 @@ hooks: # Please take care with this because it can cause great confusion. # upload_dir: custom/upload/dir -# would set the destination path for ddev import-files to custom/upload/dir. +# would set the destination path for ddev import-files to /custom/upload/dir +# When mutagen is enabled this path is bind-mounted so that all the files +# in the upload_dir don't have to be synced into mutagen # working_dir: # web: /var/www/html @@ -104,12 +114,20 @@ hooks: # Currently only these containers are supported. Some containers can also be # omitted globally in the ~/.ddev/global_config.yaml. Note that if you omit # the "db" container, several standard features of ddev that access the -# database container will be unusable. +# database container will be unusable. In the global configuration it is also +# possible to omit ddev-router, but not here. # nfs_mount_enabled: false # Great performance improvement but requires host configuration first. # See https://ddev.readthedocs.io/en/stable/users/performance/#using-nfs-to-mount-the-project-into-the-container +# mutagen_enabled: false +# Performance improvement using mutagen asynchronous updates. +# See https://ddev.readthedocs.io/en/latest/users/performance/#using-mutagen + +# fail_on_hook_fail: False +# Decide whether 'ddev start' should be interrupted by a failing hook + # host_https_port: "59002" # The host port binding for https can be explicitly specified. It is # dynamic unless otherwise specified. @@ -130,11 +148,19 @@ hooks: # phpmyadmin_https_port: "8037" # The PHPMyAdmin ports can be changed from the default 8036 and 8037 +# host_phpmyadmin_port: "8036" +# The phpmyadmin (dba) port is not normally bound on the host at all, instead being routed +# through ddev-router, but it can be specified and bound. + # mailhog_port: "8025" # mailhog_https_port: "8026" # The MailHog ports can be changed from the default 8025 and 8026 -# webimage_extra_packages: [php7.3-tidy, php-bcmath] +# host_mailhog_port: "8025" +# The mailhog port is not normally bound on the host at all, instead being routed +# through ddev-router, but it can be bound directly to localhost if specified here. + +# webimage_extra_packages: [php7.4-tidy, php-bcmath] # Extra Debian packages that are needed in the webimage can be added here # dbimage_extra_packages: [telnet,netcat] @@ -152,27 +178,83 @@ hooks: # If you prefer you can change this to "ddev.local" to preserve # pre-v1.9 behavior. -# ngrok_args: --subdomain mysite --auth username:pass +# ngrok_args: --basic-auth username:pass1234 # Provide extra flags to the "ngrok http" command, see # https://ngrok.com/docs#http or run "ngrok http -h" # disable_settings_management: false # If true, ddev will not create CMS-specific settings files like -# Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalSettings.php +# Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalConfiguration.php # In this case the user must provide all such settings. +# You can inject environment variables into the web container with: +# web_environment: +# - SOMEENV=somevalue +# - SOMEOTHERENV=someothervalue + # no_project_mount: false # (Experimental) If true, ddev will not mount the project into the web container; # the user is responsible for mounting it manually or via a script. # This is to enable experimentation with alternate file mounting strategies. # For advanced users only! -# provider: default # Currently either "default" or "pantheon" -# +# bind_all_interfaces: false +# If true, host ports will be bound on all network interfaces, +# not just the localhost interface. This means that ports +# will be available on the local network if the host firewall +# allows it. + +# default_container_timeout: 120 +# The default time that ddev waits for all containers to become ready can be increased from +# the default 120. This helps in importing huge databases, for example. + +#web_extra_exposed_ports: +#- name: nodejs +# container_port: 3000 +# http_port: 2999 +# https_port: 3000 +#- name: something +# container_port: 4000 +# https_port: 4000 +# http_port: 3999 +# Allows a set of extra ports to be exposed via ddev-router +# The port behavior on the ddev-webserver must be arranged separately, for example +# using web_extra_daemons. +# For example, with a web app on port 3000 inside the container, this config would +# expose that web app on https://.ddev.site:9999 and http://.ddev.site:9998 +# web_extra_exposed_ports: +# - container_port: 3000 +# http_port: 9998 +# https_port: 9999 + +#web_extra_daemons: +#- name: "http-1" +# command: "/var/www/html/node_modules/.bin/http-server -p 3000" +# directory: /var/www/html +#- name: "http-2" +# command: "/var/www/html/node_modules/.bin/http-server /var/www/html/sub -p 3000" +# directory: /var/www/html + +# override_config: false +# By default, config.*.yaml files are *merged* into the configuration +# But this means that some things can't be overridden +# For example, if you have 'nfs_mount_enabled: true'' you can't override it with a merge +# and you can't erase existing hooks or all environment variables. +# However, with "override_config: true" in a particular config.*.yaml file, +# 'nfs_mount_enabled: false' can override the existing values, and +# hooks: +# post_start: [] +# or +# web_environment: [] +# or +# additional_hostnames: [] +# can have their intended affect. 'override_config' affects only behavior of the +# config.*.yaml file it exists in. + # Many ddev commands can be extended to run tasks before or after the # ddev command is executed, for example "post-start", "post-import-db", # "pre-composer", "post-composer" -# See https://ddev.readthedocs.io/en/stable/users/extending-commands/ for more +# See https://ddev.readthedocs.io/en/stable/users/extend/custom-commands/ for more # information on the commands that can be extended and the tasks you can define # for them. Example: #hooks: diff --git a/.ddev/web-build/Dockerfile b/.ddev/web-build/Dockerfile deleted file mode 100644 index 0fd9c00b95..0000000000 --- a/.ddev/web-build/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -ARG BASE_IMAGE -FROM $BASE_IMAGE - -ENV NVM_DIR=/usr/local/nvm - -# Install NVM. -RUN curl -sL https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh -o install_nvm.sh -RUN mkdir -p $NVM_DIR && bash install_nvm.sh -RUN echo "source $NVM_DIR/nvm.sh" >>/etc/profile -RUN chmod -R ugo+w $NVM_DIR - From 71b13ccb3f8a909ba260b41faed89240c8affdc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=ABl=20Pittet?= Date: Tue, 23 Aug 2022 12:45:21 -0700 Subject: [PATCH 06/11] Updated dot files --- .editorconfig | 17 ++++++++++++ .env.example | 19 ++++++++------ .gitattributes | 61 +++++++++++++++++++++++++++++++++++++++++++ .gitignore | 70 ++++++++++++++++++++++++++++++++++++++------------ .nvmrc | 1 + 5 files changed, 143 insertions(+), 25 deletions(-) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .nvmrc diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..686c443cec --- /dev/null +++ b/.editorconfig @@ -0,0 +1,17 @@ +# Drupal editor configuration normalization +# @see http://editorconfig.org/ + +# This is the top-most .editorconfig file; do not search in parent directories. +root = true + +# All files. +[*] +end_of_line = LF +indent_style = space +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[composer.{json,lock}] +indent_size = 4 diff --git a/.env.example b/.env.example index 4d04ef831b..665ac6e41a 100644 --- a/.env.example +++ b/.env.example @@ -15,13 +15,16 @@ # 'prefix' => '', # 'username' => $_ENV['MYSQL_USER'], # ]; -# -# Uncomment and populate as needed. -# MYSQL_DATABASE= -# MYSQL_HOSTNAME= -# MYSQL_PASSWORD= -# MYSQL_PORT= -# MYSQL_USER= + +# Database settings. +MYSQL_DATABASE='db' +MYSQL_HOSTNAME='db' +MYSQL_PASSWORD='db' +MYSQL_PORT='3306' +MYSQL_USER='db' + +# Hash salt. +HASH_SALT='add rosemary too, bake at 400 deg' # Another common use case is to set Drush's --uri via environment. -# DRUSH_OPTIONS_URI=http://example.com +# DRUSH_OPTIONS_URI=https://example.test diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..a37894e8e4 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,61 @@ +# Drupal git normalization +# @see https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html +# @see https://www.drupal.org/node/1542048 + +# Normally these settings would be done with macro attributes for improved +# readability and easier maintenance. However macros can only be defined at the +# repository root directory. Drupal avoids making any assumptions about where it +# is installed. + +# Define text file attributes. +# - Treat them as text. +# - Ensure no CRLF line-endings, neither on checkout nor on checkin. +# - Detect whitespace errors. +# - Exposed by default in `git diff --color` on the CLI. +# - Validate with `git diff --check`. +# - Deny applying with `git apply --whitespace=error-all`. +# - Fix automatically with `git apply --whitespace=fix`. + +*.config text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.css text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.dist text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.engine text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.html text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=html +*.inc text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.install text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.js text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.json text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.lock text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.map text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.md text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.module text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.php text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.po text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.profile text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.script text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.sh text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.sql text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.svg text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.theme text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php +*.twig text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.txt text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.xml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 +*.yml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 + +# Define binary file attributes. +# - Do not treat them as text. +# - Include binary diff in patches instead of "binary files differ." +*.eot -text diff +*.exe -text diff +*.gif -text diff +*.gz -text diff +*.ico -text diff +*.jpeg -text diff +*.jpg -text diff +*.otf -text diff +*.phar -text diff +*.png -text diff +*.svgz -text diff +*.ttf -text diff +*.woff -text diff +*.woff2 -text diff diff --git a/.gitignore b/.gitignore index 12ad63d871..6ae1f1a3f7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,25 +1,61 @@ -# Ignore directories generated by Composer +# Ignore directories generated by Composer. /drush/contrib/ /vendor/ -/web/core/ -/web/modules/contrib/ -/web/themes/contrib/ -/web/profiles/contrib/ -/web/libraries/ +/public/core/ +/public/modules/contrib/ +/public/themes/contrib/ +/public/profiles/contrib/ -# Ignore sensitive information -/web/sites/*/settings.php -/web/sites/*/settings.local.php +# Ignore directories generated by NPM/Yarn. +/node_modules/ -# Ignore Drupal's file directory -/web/sites/*/files/ +# Ignore configuration files that may contain sensitive information. +settings.local.php -# Ignore SimpleTest multi-site environment -/web/sites/simpletest +# Ignore development config services. +/public/sites/default/development.services.yml -# Ignore files generated by common IDEs -/.idea/ -/.vscode/ +# User-generated content. +*/sites/*/files +*/sites/*/private -# Ignore .env files as they are personal +# Mounted or symlinked directories. +/private + +# Ignore SimpleTest multi-site environment. +*/sites/simpletest + +# Deployer Build Directory. +/.build/ + +# Ignore .env files as they are personal. /.env + +# Apache and other log folder for the project. +/logs + +# Logs and databases. +*.log +*.sql +*.sqlite + +# OS generated files. +.DS_Store* +ehthumbs.db +Thumbs.db + +# Patch generated files. +*.orig +*.rej +*.bak + +# Tool generated. +.svn +.sass-cache +*.swp + +# IDE files & folders (PHPStorm, Netbeans, etc). +.idea +nbproject +*.project +.vscode diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000000..53d838af21 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +lts/gallium From 7caefd4cf25680e8627d380196bb10e4a9454016 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=ABl=20Pittet?= Date: Tue, 23 Aug 2022 12:45:47 -0700 Subject: [PATCH 07/11] Updated composer json --- composer.json | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/composer.json b/composer.json index 181fc36659..be141aaaae 100644 --- a/composer.json +++ b/composer.json @@ -10,37 +10,48 @@ } ], "require": { + "php": ">=7.4", + "ext-json": "*", "composer/installers": "^2.0", "cweagans/composer-patches": "^1.0", + "drupal/admin_toolbar": "^3.0", "drupal/backup_migrate": "^5.0", - "drupal/composer_deploy": "^1.0", - "drupal/config_split": "^2.0@beta", - "drupal/core-composer-scaffold": "^9.0.0", - "drupal/core-recommended": "^9.0.0", - "drupal/core-vendor-hardening": "^9.0.0", + "drupal/config_split": "^2.0@RC", + "drupal/core-composer-scaffold": "^9.0", + "drupal/core-recommended": "^9.0", + "drupal/core-vendor-hardening": "^9.0", "drupal/environment_indicator": "^4.0", "drupal/masquerade": "^2.0@beta", - "drupal/module_filter": "^3.0", + "drupal/monolog": "^2.0", "drupal/pathauto": "^1.0", "drush/drush": "^11.0", - "ubc-web-services/galactus": "dev-master", + "ubc-web-services/galactus": "^1.0", "vlucas/phpdotenv": "^5.0" }, "require-dev": { - "deployer/deployer": "^6.0", - "drupal/core-dev": "^9.0.0", + "deployer/deployer": "^7.0", + "drupal-composer/drupal-security-advisories": "9.x-dev", + "drupal/coder": "^8.0", + "drupal/core-dev": "^9.0", + "drupal/devel": "^4.0", + "drupal/stage_file_proxy": "^1.0", + "drupal/upgrade_status": "^3.0", "joachim-n/composer-manifest": "^1.0", + "mglaman/phpstan-drupal": "^1.1", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", "roave/security-advisories": "dev-latest", - "ubc-cpsc/deployer-recipes": "^1.0" + "squizlabs/php_codesniffer": "^3.0", + "ubc-cpsc/deployer-recipes": "^2.0" }, "conflict": { "drupal/drupal": "*" }, - "minimum-stability": "dev", + "minimum-stability": "stable", "prefer-stable": true, "config": { "discard-changes": true, - "optimize-autoloader": true, "platform": { "php": "7.4.9" }, @@ -48,9 +59,11 @@ "allow-plugins": { "composer/installers": true, "cweagans/composer-patches": true, + "dealerdirect/phpcodesniffer-composer-installer": true, "drupal/core-composer-scaffold": true, "drupal/core-vendor-hardening": true, - "joachim-n/composer-manifest": true + "joachim-n/composer-manifest": true, + "phpstan/extension-installer": true } }, "autoload": { From 0912d4ea7c5f1088273a643f61a843ce9b7f705d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=ABl=20Pittet?= Date: Tue, 23 Aug 2022 12:47:12 -0700 Subject: [PATCH 08/11] Update github workflows from upstream --- .github/workflows/ci.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 435662706d..669bb18ef4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,14 +13,14 @@ jobs: strategy: fail-fast: false matrix: - php-versions: ['7.3', '7.4', '8.0'] + php-versions: ['7.4', '8.1'] drupal-release: ['stable'] composer-channel: ['stable'] include: - - php-versions: '8.0' + - php-versions: '8.1' drupal-release: dev composer-channel: stable - - php-versions: '8.0' + - php-versions: '8.1' drupal-release: stable composer-channel: snapshot steps: @@ -41,7 +41,7 @@ jobs: - name: Update composer run: composer --verbose self-update --${{ matrix.composer-channel }} - - name: Dump composer verson + - name: Dump composer version run: composer --version - name: Validate composer.json @@ -51,7 +51,7 @@ jobs: run: composer --verbose install - if: matrix.drupal-release == 'dev' - run: composer --verbose require --no-update drupal/core-recommended:9.2.x-dev && composer --verbose require --no-update --dev drupal/core-dev:9.2.x-dev + run: composer --verbose require --no-update drupal/core-recommended:9.4.x-dev && composer --verbose require --no-update --dev drupal/core-dev:9.4.x-dev - if: matrix.drupal-release == 'dev' run: composer --verbose update @@ -64,7 +64,7 @@ jobs: # https://www.drupal.org/project/drupal/issues/3182653 # https://www.drupal.org/node/3176567 - - if: ${{ matrix.php-versions == '7.4' }} || ${{ matrix.php-versions == '8.0' }} + - if: ${{ matrix.php-versions == '7.4' }} || ${{ matrix.php-versions == '8.1' }} run: composer require phpspec/prophecy-phpunit:^2 - name: Run a single unit test to verfiy the testing setup. From a2e16b2eecf8986848e9079f960de0ad93865e09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=ABl=20Pittet?= Date: Tue, 23 Aug 2022 12:57:17 -0700 Subject: [PATCH 09/11] Update README.md with changes upstream and forked web-root path changes --- README.md | 48 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 769cc92cd0..38dd86973e 100644 --- a/README.md +++ b/README.md @@ -13,12 +13,24 @@ First you need to [install Composer](https://getcomposer.org/doc/00-intro.md#ins You might need to replace `composer` with `php composer.phar` (or similar) for your setup. -After that you can install the project: +After that you can create the project: ``` -composer install +composer create-project ubc-cpsc/drupal-project:9.x-dev some-dir --no-interaction ``` +With `composer require ...` you can download new dependencies to your +installation. + +``` +cd some-dir +composer require drupal/devel +``` + +The `composer create-project` command passes ownership of all files to the +project that is created. You should create a new Git repository, and commit +all files not excluded by the `.gitignore` file. + ## What does the template do? When installing the given `composer.json` some tasks are taken care of: @@ -67,21 +79,45 @@ Follow the steps below to update your core files. Composer recommends **no**. They provide [argumentation against but also workrounds if a project decides to do it anyway](https://getcomposer.org/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md). +### Should I commit the scaffolding files? + +The [Drupal Composer Scaffold](https://github.com/drupal/core-composer-scaffold) +plugin can download the scaffold files (like index.php, update.php, …) to the +public/ directory of your project. If you have not customized those files you +could choose to not check them into your version control system (e.g. git). If +that is the case for your project it might be convenient to automatically run +the drupal-scaffold plugin after every install or update of your project. You can +achieve that by registering `@composer drupal:scaffold` as post-install and +post-update command in your composer.json: + +```json +"scripts": { + "post-install-cmd": [ + "@composer drupal:scaffold", + "..." + ], + "post-update-cmd": [ + "@composer drupal:scaffold", + "..." + ] +}, +``` + ### How can I apply patches to downloaded modules? If you need to apply patches (depending on the project being modified, a pull request is often a better solution), you can do so with the [composer-patches](https://github.com/cweagans/composer-patches) plugin. -To add a patch to drupal module foobar insert the patches section in the +To add a patch to drupal module foobar insert the patches section in the section of composer.patches.json: ```json { "patches": { - "drupal/foobar": { + "drupal/foobar": { "Patch description": "URL or local path to patch" - } + } } } ``` @@ -94,7 +130,7 @@ To prevent this you can add this code to specify the PHP version you want to use ```json "config": { - ... + "sort-packages": true, "platform": { "php": "7.4.9" } From 55cd9b30e390f0041bb6e263bb3942b3b0dafb8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=ABl=20Pittet?= Date: Thu, 1 Sep 2022 09:30:01 -0700 Subject: [PATCH 10/11] move tests from web to public --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 669bb18ef4..595b6aed5b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,6 +68,6 @@ jobs: run: composer require phpspec/prophecy-phpunit:^2 - name: Run a single unit test to verfiy the testing setup. - run: ./vendor/bin/phpunit -c ./web/core ./web/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php + run: ./vendor/bin/phpunit -c ./public/core ./public/core/modules/user/tests/src/Unit/UserAccessControlHandlerTest.php - run: ./vendor/bin/drush From ec72abbffca1e67eabfe07d9a255284ed9f0df94 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=ABl=20Pittet?= Date: Thu, 20 Apr 2023 15:48:30 -0700 Subject: [PATCH 11/11] Upgrade MySQL to 8.0 --- .ddev/config.yaml | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/.ddev/config.yaml b/.ddev/config.yaml index b236498f14..a1d23dd388 100644 --- a/.ddev/config.yaml +++ b/.ddev/config.yaml @@ -9,8 +9,8 @@ xdebug_enabled: false additional_hostnames: [] additional_fqdns: [] database: - type: mysql - version: "5.7" + type: mysql + version: "8.0" nfs_mount_enabled: false mutagen_enabled: false webimage_extra_packages: [php-bcmath, php-intl, php-ldap, php-soap, php-zip] @@ -31,7 +31,7 @@ nodejs_version: "16" # docroot: # Relative path to the directory containing index.php. -# php_version: "7.4" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1" +# php_version: "7.4" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2" # You can explicitly specify the webimage but this # is not recommended, as the images are often closely tied to ddev's' behavior, @@ -74,11 +74,12 @@ nodejs_version: "16" # composer_version: "2" # You can set it to "" or "2" (default) for Composer v2 or "1" for Composer v1 # to use the latest major version available at the time your container is built. -# It is also possible to select a minor version for example "2.2" which will -# install the latest release of that branch. Alternatively, an explicit Composer -# version may be specified, for example "1.0.22". Finally, it is also possible -# to use one of the key words "stable", "preview" or "snapshot" see Composer -# documentation. +# It is also possible to use each other Composer version channel. This includes: +# - 2.2 (latest Composer LTS version) +# - stable +# - preview +# - snapshot +# Alternatively, an explicit Composer version may be specified, for example "2.2.18". # To reinstall Composer after the image was built, run "ddev debug refresh". # nodejs_version: "16" @@ -119,11 +120,11 @@ nodejs_version: "16" # nfs_mount_enabled: false # Great performance improvement but requires host configuration first. -# See https://ddev.readthedocs.io/en/stable/users/performance/#using-nfs-to-mount-the-project-into-the-container +# See https://ddev.readthedocs.io/en/latest/users/install/performance/#nfs # mutagen_enabled: false # Performance improvement using mutagen asynchronous updates. -# See https://ddev.readthedocs.io/en/latest/users/performance/#using-mutagen +# See https://ddev.readthedocs.io/en/latest/users/install/performance/#mutagen # fail_on_hook_fail: False # Decide whether 'ddev start' should be interrupted by a failing hook @@ -243,7 +244,7 @@ nodejs_version: "16" # However, with "override_config: true" in a particular config.*.yaml file, # 'nfs_mount_enabled: false' can override the existing values, and # hooks: -# post_start: [] +# post-start: [] # or # web_environment: [] # or