From de96e23537c218c4740776bbb102f3e87d988c90 Mon Sep 17 00:00:00 2001 From: Alex Skrypnyk Date: Mon, 2 Sep 2024 08:04:31 +1000 Subject: [PATCH] Updated to Vortex 24.9.1 --- .ahoy.yml | 75 +- .circleci/config.yml | 153 ++-- .docker/clamav.dockerfile | 2 +- .docker/cli.dockerfile | 2 +- .docker/mariadb.dockerfile | 2 +- .docker/nginx-drupal.dockerfile | 2 +- .docker/php.dockerfile | 2 +- .docker/solr.dockerfile | 2 +- .dockerignore | 1 + .env | 56 +- .env.local.default | 12 +- .github/workflows/draft-release-notes.yml | 12 + .gitignore | 2 +- .lagoon.yml | 50 +- .twig-cs-fixer.php | 1 + README.md | 12 +- behat.yml | 16 +- composer.json | 32 +- composer.lock | 761 +++++++++--------- docker-compose.override.default.yml | 9 - docker-compose.yml | 30 +- docs/ci.md | 2 +- docs/deployment.md | 4 +- docs/faqs.md | 4 +- docs/onboarding.md | 10 +- docs/releasing.md | 16 +- docs/testing.md | 2 +- gherkinlint.json | 16 + phpmd.xml | 1 + phpstan.neon | 2 +- phpunit.xml | 2 +- rector.php | 4 + renovate.json | 99 ++- scripts/README.md | 4 +- scripts/custom/provision-10-example.sh | 16 +- .../drevops/download-db-container-registry.sh | 88 -- scripts/drevops/notify-newrelic.sh | 102 --- scripts/drevops/notify-webhook.sh | 99 --- scripts/drevops/task-custom-lagoon.sh | 103 --- .../{drevops => vortex}/deploy-artifact.sh | 60 +- .../deploy-container-registry.sh | 38 +- scripts/{drevops => vortex}/deploy-lagoon.sh | 102 +-- scripts/{drevops => vortex}/deploy-webhook.sh | 16 +- scripts/{drevops => vortex}/deploy.sh | 66 +- scripts/{drevops => vortex}/doctor.sh | 70 +- .../{drevops => vortex}/download-db-acquia.sh | 64 +- .../vortex/download-db-container-registry.sh | 88 ++ .../{drevops => vortex}/download-db-curl.sh | 14 +- .../{drevops => vortex}/download-db-ftp.sh | 30 +- .../{drevops => vortex}/download-db-lagoon.sh | 54 +- scripts/{drevops => vortex}/download-db.sh | 46 +- scripts/{drevops => vortex}/export-db-file.sh | 6 +- .../{drevops => vortex}/export-db-image.sh | 32 +- scripts/{drevops => vortex}/export-db.sh | 16 +- scripts/{drevops => vortex}/github-labels.sh | 22 +- scripts/{drevops => vortex}/info.sh | 31 +- .../login-container-registry.sh | 22 +- scripts/{drevops => vortex}/login.sh | 2 +- scripts/{drevops => vortex}/logout.sh | 2 +- scripts/{drevops => vortex}/mirror-code.sh | 46 +- scripts/{drevops => vortex}/notify-email.sh | 42 +- scripts/{drevops => vortex}/notify-github.sh | 52 +- scripts/{drevops => vortex}/notify-jira.sh | 66 +- scripts/vortex/notify-newrelic.sh | 102 +++ scripts/vortex/notify-webhook.sh | 99 +++ scripts/{drevops => vortex}/notify.sh | 40 +- .../provision-sanitize-db.sh | 20 +- scripts/{drevops => vortex}/provision.sh | 88 +- scripts/{drevops => vortex}/reset.sh | 14 +- scripts/{drevops => vortex}/setup-ssh.sh | 12 +- .../task-copy-db-acquia.sh | 58 +- .../task-copy-files-acquia.sh | 52 +- scripts/vortex/task-custom-lagoon.sh | 103 +++ .../task-purge-cache-acquia.sh | 58 +- .../update-vortex.sh} | 16 +- tests/behat/features/homepage.feature | 2 +- tests/behat/features/login.feature | 2 +- tests/phpunit/CircleCiConfigTest.php | 20 + .../Drupal/EnvironmentSettingsTest.php | 109 ++- tests/phpunit/Drupal/SettingsTestCase.php | 4 +- .../phpunit/Drupal/SwitchableSettingsTest.php | 4 +- web/modules/custom/do_core/do_core.deploy.php | 41 - web/modules/custom/do_core/do_core.info.yml | 10 - .../tests/src/Functional/ExampleTest.php | 12 +- .../includes/modules/settings.redis.php | 4 +- .../includes/providers/settings.lagoon.php | 27 +- 86 files changed, 1887 insertions(+), 1805 deletions(-) delete mode 100644 docker-compose.override.default.yml create mode 100644 gherkinlint.json delete mode 100755 scripts/drevops/download-db-container-registry.sh delete mode 100755 scripts/drevops/notify-newrelic.sh delete mode 100755 scripts/drevops/notify-webhook.sh delete mode 100755 scripts/drevops/task-custom-lagoon.sh rename scripts/{drevops => vortex}/deploy-artifact.sh (53%) rename scripts/{drevops => vortex}/deploy-container-registry.sh (59%) rename scripts/{drevops => vortex}/deploy-lagoon.sh (60%) rename scripts/{drevops => vortex}/deploy-webhook.sh (61%) rename scripts/{drevops => vortex}/deploy.sh (54%) rename scripts/{drevops => vortex}/doctor.sh (80%) rename scripts/{drevops => vortex}/download-db-acquia.sh (69%) create mode 100755 scripts/vortex/download-db-container-registry.sh rename scripts/{drevops => vortex}/download-db-curl.sh (76%) rename scripts/{drevops => vortex}/download-db-ftp.sh (51%) rename scripts/{drevops => vortex}/download-db-lagoon.sh (54%) rename scripts/{drevops => vortex}/download-db.sh (52%) rename scripts/{drevops => vortex}/export-db-file.sh (86%) rename scripts/{drevops => vortex}/export-db-image.sh (60%) rename scripts/{drevops => vortex}/export-db.sh (75%) rename scripts/{drevops => vortex}/github-labels.sh (93%) rename scripts/{drevops => vortex}/info.sh (62%) rename scripts/{drevops => vortex}/login-container-registry.sh (52%) rename scripts/{drevops => vortex}/login.sh (97%) rename scripts/{drevops => vortex}/logout.sh (94%) rename scripts/{drevops => vortex}/mirror-code.sh (54%) rename scripts/{drevops => vortex}/notify-email.sh (60%) rename scripts/{drevops => vortex}/notify-github.sh (61%) rename scripts/{drevops => vortex}/notify-jira.sh (65%) create mode 100755 scripts/vortex/notify-newrelic.sh create mode 100755 scripts/vortex/notify-webhook.sh rename scripts/{drevops => vortex}/notify.sh (59%) rename scripts/{drevops => vortex}/provision-sanitize-db.sh (69%) rename scripts/{drevops => vortex}/provision.sh (75%) rename scripts/{drevops => vortex}/reset.sh (84%) rename scripts/{drevops => vortex}/setup-ssh.sh (89%) rename scripts/{drevops => vortex}/task-copy-db-acquia.sh (65%) rename scripts/{drevops => vortex}/task-copy-files-acquia.sh (66%) create mode 100755 scripts/vortex/task-custom-lagoon.sh rename scripts/{drevops => vortex}/task-purge-cache-acquia.sh (68%) rename scripts/{drevops/update-scaffold.sh => vortex/update-vortex.sh} (61%) diff --git a/.ahoy.yml b/.ahoy.yml index 1166fcc..2f0cd12 100644 --- a/.ahoy.yml +++ b/.ahoy.yml @@ -22,23 +22,24 @@ commands: ahoy fei # Install front-end dependencies. ahoy fe # Build front-end assets. ahoy provision # Provision the site. - DREVOPS_SHOW_LOGIN=1 ahoy info # Show information and a login link. + VORTEX_SHOW_LOGIN=1 ahoy info # Show information and a login link. info: usage: Show information about this project. cmd: | COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME:-${PWD##*/}} \ - DREVOPS_HOST_DB_PORT=$(docker compose port mariadb 3306 2>/dev/null | cut -d : -f 2) \ - DREVOPS_HOST_SOLR_PORT=$(docker compose port solr 8983 2>/dev/null | cut -d : -f 2) \ - DREVOPS_HOST_HAS_SEQUELACE=$(uname -a | grep -i -q darwin && mdfind -name 'Sequel Ace' 2>/dev/null | grep -q "Ace" && echo 1 || true) \ - ahoy cli ./scripts/drevops/info.sh "$@" + VORTEX_HOST_DB_PORT=$(docker compose port mariadb 3306 2>/dev/null | cut -d : -f 2) \ + VORTEX_HOST_SOLR_PORT=$(docker compose port solr 8983 2>/dev/null | cut -d : -f 2) \ + VORTEX_HOST_SELENIUM_VNC_PORT=$(docker compose port chrome 7900 2>/dev/null | cut -d : -f 2) \ + VORTEX_HOST_HAS_SEQUELACE=$(uname -a | grep -i -q darwin && mdfind -name 'Sequel Ace' 2>/dev/null | grep -q "Ace" && echo 1 || true) \ + ahoy cli ./scripts/vortex/info.sh "$@" db: usage: Open DB in Sequel Ace. cmd: | uname -a | grep -i -q darwin && mdfind -name 'Sequel Ace' 2>/dev/null |grep -q "Ace" \ - && DREVOPS_HOST_DB_PORT="$(docker port $(docker compose ps -q mariadb 2>/dev/null) 3306 2>/dev/null | cut -d : -f 2)" \ - && open "mysql://${MARIADB_USERNAME:-drupal}:${MARIADB_PASSWORD:-drupal}@127.0.0.1:${DREVOPS_HOST_DB_PORT}/drupal" -a "Sequel Ace" \ + && VORTEX_HOST_DB_PORT="$(docker port $(docker compose ps -q mariadb 2>/dev/null) 3306 2>/dev/null | cut -d : -f 2)" \ + && open "mysql://${MARIADB_USERNAME:-drupal}:${MARIADB_PASSWORD:-drupal}@127.0.0.1:${VORTEX_HOST_DB_PORT}/drupal" -a "Sequel Ace" \ || echo "Not a supported OS or Sequel Ace is not installed." # ---------------------------------------------------------------------------- @@ -85,9 +86,9 @@ commands: # arguments that contain spaces. cmd: | if [ "${#}" -ne 0 ]; then - docker compose exec $(env | cut -f1 -d= | grep "TERM\|COMPOSE_\|GITHUB_\|DOCKER_\|DRUPAL_\|DREVOPS_" | sed 's/^/-e /') -T cli bash -c "$*" + docker compose exec $(env | cut -f1 -d= | grep "TERM\|COMPOSE_\|GITHUB_\|DOCKER_\|DRUPAL_\|VORTEX_" | sed 's/^/-e /') -T cli bash -c "$*" else - docker compose exec $(env | cut -f1 -d= | grep "TERM\|COMPOSE_\|GITHUB_\|DOCKER_\|DRUPAL_\|DREVOPS_" | sed 's/^/-e /') cli bash + docker compose exec $(env | cut -f1 -d= | grep "TERM\|COMPOSE_\|GITHUB_\|DOCKER_\|DRUPAL_\|VORTEX_" | sed 's/^/-e /') cli bash fi composer: @@ -99,7 +100,7 @@ commands: drush: usage: Run Drush commands in the CLI service container. - cmd: ahoy cli "vendor/bin/drush -l \${DREVOPS_LOCALDEV_URL} $*" + cmd: ahoy cli "vendor/bin/drush -l \${VORTEX_LOCALDEV_URL} $*" flush-redis: usage: Flush Redis cache. @@ -112,11 +113,11 @@ commands: login: usage: Login to a website. # Unblock user 1 and generate a one time login link. - cmd: ahoy cli ./scripts/drevops/login.sh + cmd: ahoy cli ./scripts/vortex/login.sh download-db: usage: Download database. - cmd: ./scripts/drevops/download-db.sh + cmd: ./scripts/vortex/download-db.sh reload-db: usage: Reload the database container using local database image. @@ -127,47 +128,47 @@ commands: ahoy up wait_dependencies && \ sleep 15 && \ ahoy provision && \ - DREVOPS_SHOW_LOGIN=1 ahoy info + VORTEX_SHOW_LOGIN=1 ahoy info provision: usage: Provision a site from the database dump or profile. - cmd: ahoy cli ./scripts/drevops/provision.sh + cmd: ahoy cli ./scripts/vortex/provision.sh export-db: - usage: Export database dump or database image (if DREVOPS_DB_IMAGE variable is set). - cmd: ./scripts/drevops/export-db.sh "$@" + usage: Export database dump or database image (if VORTEX_DB_IMAGE variable is set). + cmd: ./scripts/vortex/export-db.sh "$@" pull-db: usage: Download database image with the latest nightly dump. Run "ahoy reload-db" to reload DB in the running stack. - cmd: \[ -n "${DREVOPS_DB_IMAGE}" \] && docker pull ${DREVOPS_DB_IMAGE} || true + cmd: \[ -n "${VORTEX_DB_IMAGE}" \] && docker pull ${VORTEX_DB_IMAGE} || true reset: usage: "Remove containers, all build files. Use with `hard` to reset repository to the last commit." cmd: | ahoy confirm "All containers and build files will be removed. Proceed?" && - AHOY_CONFIRM_RESPONSE=y ahoy down && ./scripts/drevops/reset.sh "$@" + AHOY_CONFIRM_RESPONSE=y ahoy down && ./scripts/vortex/reset.sh "$@" fei: usage: Install front-end assets. - cmd: ahoy cli "npm --prefix ${DREVOPS_WEBROOT}/themes/custom/${DRUPAL_THEME} install" + cmd: ahoy cli "npm --prefix ${VORTEX_WEBROOT}/themes/custom/${DRUPAL_THEME} install" fe: usage: Build front-end assets. - cmd: ahoy cli "cd ${DREVOPS_WEBROOT}/themes/custom/${DRUPAL_THEME} && npm run build" + cmd: ahoy cli "cd ${VORTEX_WEBROOT}/themes/custom/${DRUPAL_THEME} && npm run build" fed: usage: Build front-end assets for development. - cmd: ahoy cli "cd ${DREVOPS_WEBROOT}/themes/custom/${DRUPAL_THEME} && npm run build-dev" + cmd: ahoy cli "cd ${VORTEX_WEBROOT}/themes/custom/${DRUPAL_THEME} && npm run build-dev" few: usage: Watch front-end assets during development. cmd: | ahoy cli "pkill -9 -f grunt" || true - ahoy cli "cd ${DREVOPS_WEBROOT}/themes/custom/${DRUPAL_THEME} && npm run watch" + ahoy cli "cd ${VORTEX_WEBROOT}/themes/custom/${DRUPAL_THEME} && npm run watch" lint: usage: Lint back-end and front-end code. - cmd: ahoy lint-be && ahoy lint-fe + cmd: ahoy lint-be && ahoy lint-fe && ahoy lint-tests lint-be: usage: Lint back-end code. @@ -181,14 +182,28 @@ commands: usage: Lint front-end code. cmd: | ahoy cli vendor/bin/twig-cs-fixer lint - ahoy cli "npm run --prefix \${DREVOPS_WEBROOT}/themes/custom/\${DRUPAL_THEME} lint" + ahoy cli "npm run --prefix \${VORTEX_WEBROOT}/themes/custom/\${DRUPAL_THEME} lint" + + lint-tests: + usage: Lint tests code. + cmd: | + ahoy cli vendor/bin/gherkinlint lint tests/behat/features lint-fix: usage: Fix lint issues of back-end and front-end code. + cmd: ahoy lint-be-fix && ahoy lint-fe-fix + + lint-be-fix: + usage: Fix lint issues of back-end code. cmd: | ahoy cli vendor/bin/rector --clear-cache ahoy cli vendor/bin/phpcbf + + lint-fe-fix: + usage: Fix lint issues of front-end code. + cmd: | ahoy cli vendor/bin/twig-cs-fixer lint --fix + ahoy cli "npm run --prefix \${VORTEX_WEBROOT}/themes/custom/\${DRUPAL_THEME} lint-fix" test: usage: Run all tests. @@ -218,21 +233,21 @@ commands: usage: Run remote deployment procedures. cmd: | ahoy confirm "Deployment usually runs in CI. Are you sure you want to proceed with manual deployment? (Run as ahoy deploy [type1,[type2..]], where [type] is 'code', 'container_registry', 'webhook')" && - ./scripts/drevops/deploy.sh "$@" + ./scripts/vortex/deploy.sh "$@" github-labels: usage: Update project's GitHub labels. - cmd: ./scripts/drevops/github-labels.sh "$@" + cmd: ./scripts/vortex/github-labels.sh "$@" doctor: usage: Find problems with current project setup. - cmd: ./scripts/drevops/doctor.sh "$@" + cmd: ./scripts/vortex/doctor.sh "$@" - update-scaffold: - usage: Update DrevOps stack. + update-vortex: + usage: Update Vortex stack. cmd: | ahoy confirm "Some committed files may become overwritten. Proceed?" && - ./scripts/drevops/update-scaffold.sh $@ + ./scripts/vortex/update-vortex.sh $@ local: usage: Custom local commands. See `ahoy local help`. diff --git a/.circleci/config.yml b/.circleci/config.yml index 16fb231..e26e95a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -21,29 +21,24 @@ aliases: # Schedule to run nightly database build (to cache the database for the next day). - &nightly_db_schedule "0 18 * * *" - # Specify the correct repository to prevent the bot from accessing all - # repositories available via $RENOVATE_TOKEN. - - &renovatebot_repository 'drevops/website' # The schedule to run RenovateBot on. Defaults to running twice a day. - &renovatebot_schedule "5 11,23 * * *" - # The author details to use for commits made by RenovateBot. - - &renovatebot_git_author 'RenovateBot Self Hosted ' # Shared runner container configuration applied to each job. - &runner_config working_directory: &working_directory ~/project environment: - DREVOPS_DB_DOWNLOAD_SSH_FINGERPRINT: *db_ssh_fingerprint - DREVOPS_DEPLOY_SSH_FINGERPRINT: *deploy_ssh_fingerprint + VORTEX_DB_DOWNLOAD_SSH_FINGERPRINT: *db_ssh_fingerprint + VORTEX_DEPLOY_SSH_FINGERPRINT: *deploy_ssh_fingerprint docker: # Using the 'runner' container where each job will be executed. # This container has all the necessary tools to run a dockerized environment. # @see https://github.com/drevops/ci-runner # @see https://hub.docker.com/repository/docker/drevops/ci-runner/tags - - image: drevops/ci-runner:24.7.0 + - image: drevops/ci-runner:24.8.0 auth: - username: ${DREVOPS_CONTAINER_REGISTRY_USER} - password: ${DREVOPS_CONTAINER_REGISTRY_PASS} + username: ${VORTEX_CONTAINER_REGISTRY_USER} + password: ${VORTEX_CONTAINER_REGISTRY_PASS} environment: # Set runner timezone to ensure that executed operations use correct timestamps. # @see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones @@ -51,27 +46,27 @@ aliases: # Set runner terminal capabilities. TERM: xterm-256color # How often to refresh the cache of the DB dump. Refer to `date` command. - DREVOPS_CI_DB_CACHE_TIMESTAMP: +%Y%m%d + VORTEX_CI_DB_CACHE_TIMESTAMP: +%Y%m%d # Use previous database caches on this branch as a fallback if the above cache # does not match (for example, the cache is available only from the previous # day). If "no" is set, the cache will be rebuilt from scratch. - DREVOPS_CI_DB_CACHE_FALLBACK: "yes" + VORTEX_CI_DB_CACHE_FALLBACK: "yes" # Which branch to use as a source of DB caches. - DREVOPS_CI_DB_CACHE_BRANCH: "develop" + VORTEX_CI_DB_CACHE_BRANCH: "develop" # Directory to store test results. - DREVOPS_CI_TEST_RESULTS: &test_results /tmp/tests + VORTEX_CI_TEST_RESULTS: &test_results /tmp/tests # Directory to store test artifacts. - DREVOPS_CI_ARTIFACTS: &artifacts /tmp/artifacts + VORTEX_CI_ARTIFACTS: &artifacts /tmp/artifacts # Directory to store code exported between jobs. - DREVOPS_EXPORT_CODE_DIR: &drevops_build_export_dir /tmp/workspace/code + VORTEX_EXPORT_CODE_DIR: &vortex_build_export_dir /tmp/workspace/code # Directory to use for artifact deployments. - DREVOPS_DEPLOY_ARTIFACT_SRC: *drevops_build_export_dir + VORTEX_DEPLOY_ARTIFACT_SRC: *vortex_build_export_dir # Source code location for artifact deployments. - DREVOPS_DEPLOY_ARTIFACT_ROOT: *working_directory + VORTEX_DEPLOY_ARTIFACT_ROOT: *working_directory # Report file location for artifact deployments. - DREVOPS_DEPLOY_ARTIFACT_LOG: /tmp/artifacts/deployment_log.txt + VORTEX_DEPLOY_ARTIFACT_LOG: /tmp/artifacts/deployment_log.txt # Check only minimal stack requirements. - DREVOPS_DOCTOR_CHECK_MINIMAL: 1 + VORTEX_DOCTOR_CHECK_MINIMAL: 1 # CI runner resource class. # @see https://circleci.com/docs/2.0/configuration-reference/#resource_class # Change to 'large' for faster builds. @@ -104,10 +99,10 @@ aliases: jobs: # Database handling is a first step of the build. - # - $DREVOPS_CI_DB_CACHE_TIMESTAMP is used to determine if a fresh DB dump + # - $VORTEX_CI_DB_CACHE_TIMESTAMP is used to determine if a fresh DB dump # should be downloaded for the current build. Usually, a daily database dump # is sufficient for development activities. - # - $DREVOPS_CI_DB_CACHE_FALLBACK is used if the cache did not match $DREVOPS_CI_DB_CACHE_TIMESTAMP. + # - $VORTEX_CI_DB_CACHE_FALLBACK is used if the cache did not match $VORTEX_CI_DB_CACHE_TIMESTAMP. # This allows to rely on the cache from the previous days within the same branch. database: &job-database <<: *runner_config @@ -127,11 +122,11 @@ jobs: - run: name: Create cache keys for database caching as files command: | - echo "${DREVOPS_CI_DB_CACHE_BRANCH}" | tee /tmp/db_cache_branch - echo "${DREVOPS_CI_DB_CACHE_FALLBACK/no/${CIRCLE_BUILD_NUM}}" | tee /tmp/db_cache_fallback - echo "$(date ${DREVOPS_CI_DB_CACHE_TIMESTAMP})" | tee /tmp/db_cache_timestamp + echo "${VORTEX_CI_DB_CACHE_BRANCH}" | tee /tmp/db_cache_branch + echo "${VORTEX_CI_DB_CACHE_FALLBACK/no/${CIRCLE_BUILD_NUM}}" | tee /tmp/db_cache_fallback + echo "$(date ${VORTEX_CI_DB_CACHE_TIMESTAMP})" | tee /tmp/db_cache_timestamp echo "yes" | tee /tmp/db_cache_fallback_yes - echo 'v1.22.0-db10-{{ checksum "/tmp/db_cache_branch" }}-{{ checksum "/tmp/db_cache_fallback" }}-{{ checksum "/tmp/db_cache_timestamp" }}' + echo 'v24.9.0-db10-{{ checksum "/tmp/db_cache_branch" }}-{{ checksum "/tmp/db_cache_fallback" }}-{{ checksum "/tmp/db_cache_timestamp" }}' - restore_cache: keys: @@ -140,14 +135,14 @@ jobs: # Change 'v1' to 'v2', 'v3' etc., commit and push to force cache reset. # Lookup cache based on the default branch and a timestamp. Allows # to use cache from the very first build on the day (sanitized database dump, for example). - - v1.22.0-db10-{{ checksum "/tmp/db_cache_branch" }}-{{ checksum "/tmp/db_cache_fallback" }}-{{ checksum "/tmp/db_cache_timestamp" }} + - v24.9.0-db10-{{ checksum "/tmp/db_cache_branch" }}-{{ checksum "/tmp/db_cache_fallback" }}-{{ checksum "/tmp/db_cache_timestamp" }} # Fallback to caching by default branch name only. Allows to use # cache from the branch build on the previous day. - - v1.22.0-db10-{{ checksum "/tmp/db_cache_branch" }}-{{ checksum "/tmp/db_cache_fallback" }}- + - v24.9.0-db10-{{ checksum "/tmp/db_cache_branch" }}-{{ checksum "/tmp/db_cache_fallback" }}- - run: name: Download DB - command: DREVOPS_DB_DOWNLOAD_SEMAPHORE=/tmp/download-db-success ./scripts/drevops/download-db.sh + command: VORTEX_DB_DOWNLOAD_SEMAPHORE=/tmp/download-db-success ./scripts/vortex/download-db.sh no_output_timeout: 30m # Execute commands after database download script finished: if the @@ -160,12 +155,12 @@ jobs: name: Export DB after download command: | [ ! -f /tmp/download-db-success ] && echo "==> Database download semaphore file is missing. DB export will not proceed." && exit 0 - ./scripts/drevops/login-container-registry.sh + ./scripts/vortex/login-container-registry.sh docker compose up -d && sleep 15 docker compose exec cli mkdir -p .data && docker compose cp -L .data/db.sql cli:/app/.data/db.sql || true - docker compose exec $(env | cut -f1 -d= | sed 's/^/-e /') -T cli bash -c "DREVOPS_PROVISION_POST_OPERATIONS_SKIP=1 ./scripts/drevops/provision.sh" - grep -q ^DREVOPS_DB_IMAGE .env && rm .data/db.sql || true - ./scripts/drevops/export-db.sh db.sql + docker compose exec $(env | cut -f1 -d= | sed 's/^/-e /') -T cli bash -c "VORTEX_PROVISION_POST_OPERATIONS_SKIP=1 ./scripts/vortex/provision.sh" + grep -q ^VORTEX_DB_IMAGE .env && rm .data/db.sql || true + ./scripts/vortex/export-db.sh db.sql no_output_timeout: 30m - save_cache: @@ -173,7 +168,7 @@ jobs: # The cache will not be saved if it already exists. # Note that the cache fallback flag is enabled for this case in order # to save cache even if the fallback is not used when restoring it. - key: v1.22.0-db10-{{ checksum "/tmp/db_cache_branch" }}-{{ checksum "/tmp/db_cache_fallback_yes" }}-{{ checksum "/tmp/db_cache_timestamp" }} + key: v24.9.0-db10-{{ checksum "/tmp/db_cache_branch" }}-{{ checksum "/tmp/db_cache_fallback_yes" }}-{{ checksum "/tmp/db_cache_timestamp" }} paths: - /root/project/.data @@ -181,14 +176,14 @@ jobs: database-nightly: <<: *job-database environment: - DREVOPS_DB_DOWNLOAD_SSH_FINGERPRINT: *db_ssh_fingerprint - DREVOPS_DEPLOY_SSH_FINGERPRINT: *deploy_ssh_fingerprint + VORTEX_DB_DOWNLOAD_SSH_FINGERPRINT: *db_ssh_fingerprint + VORTEX_DEPLOY_SSH_FINGERPRINT: *deploy_ssh_fingerprint # Enforce fresh DB build (do not rely on fallback caches). - DREVOPS_CI_DB_CACHE_FALLBACK: 'no' + VORTEX_CI_DB_CACHE_FALLBACK: 'no' # Always use fresh base image for the database (if database-in-image storage is used). - DREVOPS_DB_IMAGE_BASE: drevops/mariadb-drupal-data:24.4.0 + VORTEX_DB_IMAGE_BASE: drevops/mariadb-drupal-data:24.4.0 # Deploy container image (if database-in-image storage is used). - DREVOPS_EXPORT_DB_CONTAINER_REGISTRY_DEPLOY_PROCEED: 1 + VORTEX_EXPORT_DB_CONTAINER_REGISTRY_DEPLOY_PROCEED: 1 # Build and test is a second step of the build. The testing is performed # within the same job to save time on provisioning during the job. @@ -207,27 +202,27 @@ jobs: - run: name: Set cache keys for database caching command: | - echo "${DREVOPS_CI_DB_CACHE_BRANCH}" | tee /tmp/db_cache_branch + echo "${VORTEX_CI_DB_CACHE_BRANCH}" | tee /tmp/db_cache_branch echo "yes" | tee /tmp/db_cache_fallback_yes - echo "$(date ${DREVOPS_CI_DB_CACHE_TIMESTAMP})" | tee /tmp/db_cache_timestamp + echo "$(date ${VORTEX_CI_DB_CACHE_TIMESTAMP})" | tee /tmp/db_cache_timestamp - restore_cache: keys: # Use cached artifacts from previous builds of this branch. # @see https://circleci.com/docs/2.0/caching/#restoring-cache - - v1.22.0-db10-{{ checksum "/tmp/db_cache_branch" }}-{{ checksum "/tmp/db_cache_fallback_yes" }}-{{ checksum "/tmp/db_cache_timestamp" }} - - v1.22.0-db10-{{ checksum "/tmp/db_cache_branch" }}-{{ checksum "/tmp/db_cache_fallback_yes" }}- + - v24.9.0-db10-{{ checksum "/tmp/db_cache_branch" }}-{{ checksum "/tmp/db_cache_fallback_yes" }}-{{ checksum "/tmp/db_cache_timestamp" }} + - v24.9.0-db10-{{ checksum "/tmp/db_cache_branch" }}-{{ checksum "/tmp/db_cache_fallback_yes" }}- - run: name: Lint Dockerfiles with Hadolint command: | for file in $(find .docker -name 'Dockerfile' -o -name '*.dockerfile'); do - echo "Linting ${file}" && cat "${file}" | docker run --rm -i hadolint/hadolint || [ "${DREVOPS_CI_HADOLINT_IGNORE_FAILURE:-0}" -eq 1 ] + echo "Linting ${file}" && cat "${file}" | docker run --rm -i hadolint/hadolint || [ "${VORTEX_CI_HADOLINT_IGNORE_FAILURE:-0}" -eq 1 ] done - run: name: Login to container registry - command: ./scripts/drevops/login-container-registry.sh + command: ./scripts/vortex/login-container-registry.sh - run: name: Build stack @@ -236,12 +231,12 @@ jobs: - run: name: Export built codebase command: | - mkdir -p "${DREVOPS_EXPORT_CODE_DIR}" - docker compose cp -L cli:"/app/." "${DREVOPS_EXPORT_CODE_DIR}" + mkdir -p "${VORTEX_EXPORT_CODE_DIR}" + docker compose cp -L cli:"/app/." "${VORTEX_EXPORT_CODE_DIR}" - run: name: Validate Composer configuration - command: docker compose exec cli composer validate --strict || [ "${DREVOPS_CI_COMPOSER_VALIDATE_IGNORE_FAILURE:-0}" -eq 1 ] + command: docker compose exec cli composer validate --strict || [ "${VORTEX_CI_COMPOSER_VALIDATE_IGNORE_FAILURE:-0}" -eq 1 ] - run: name: Install development dependencies @@ -252,27 +247,31 @@ jobs: - run: name: Lint code with PHPCS - command: docker compose exec -T cli vendor/bin/phpcs || [ "${DREVOPS_CI_PHPCS_IGNORE_FAILURE:-0}" -eq 1 ] + command: docker compose exec -T cli vendor/bin/phpcs || [ "${VORTEX_CI_PHPCS_IGNORE_FAILURE:-0}" -eq 1 ] - run: name: Lint code with PHPStan - command: docker compose exec -T cli vendor/bin/phpstan || [ "${DREVOPS_CI_PHPSTAN_IGNORE_FAILURE:-0}" -eq 1 ] + command: docker compose exec -T cli vendor/bin/phpstan || [ "${VORTEX_CI_PHPSTAN_IGNORE_FAILURE:-0}" -eq 1 ] - run: name: Lint code with Rector - command: docker compose exec -T cli vendor/bin/rector --clear-cache --dry-run || [ "${DREVOPS_CI_RECTOR_IGNORE_FAILURE:-0}" -eq 1 ] + command: docker compose exec -T cli vendor/bin/rector --clear-cache --dry-run || [ "${VORTEX_CI_RECTOR_IGNORE_FAILURE:-0}" -eq 1 ] - run: name: Lint code with PHPMD - command: docker compose exec -T cli vendor/bin/phpmd . text phpmd.xml || [ "${DREVOPS_CI_PHPMD_IGNORE_FAILURE:-0}" -eq 1 ] + command: docker compose exec -T cli vendor/bin/phpmd . text phpmd.xml || [ "${VORTEX_CI_PHPMD_IGNORE_FAILURE:-0}" -eq 1 ] - run: name: Lint code with Twig CS Fixer - command: docker compose exec -T cli vendor/bin/twig-cs-fixer || [ "${DREVOPS_CI_TWIG_CS_FIXER_IGNORE_FAILURE:-0}" -eq 1 ] + command: docker compose exec -T cli vendor/bin/twig-cs-fixer || [ "${VORTEX_CI_TWIG_CS_FIXER_IGNORE_FAILURE:-0}" -eq 1 ] + + - run: + name: Lint code with Gherkin Lint + command: docker compose exec -T cli vendor/bin/gherkinlint lint tests/behat/features || [ "${VORTEX_CI_GHERKIN_LINT_IGNORE_FAILURE:-0}" -eq 1 ] - run: name: Lint code with NPM linters - command: docker compose exec -T cli bash -c "npm run --prefix \${DREVOPS_WEBROOT}/themes/custom/\${DRUPAL_THEME} lint" || [ "${DREVOPS_CI_NPM_LINT_IGNORE_FAILURE:-0}" -eq 1 ] + command: docker compose exec -T cli bash -c "npm run --prefix \${VORTEX_WEBROOT}/themes/custom/\${DRUPAL_THEME} lint" || [ "${VORTEX_CI_NPM_LINT_IGNORE_FAILURE:-0}" -eq 1 ] - run: name: Provision site @@ -281,34 +280,34 @@ jobs: docker compose exec cli mkdir -p .data docker compose cp -L .data/db.sql cli:/app/.data/db.sql fi - docker compose exec $(env | cut -f1 -d= | sed 's/^/-e /') -T cli ./scripts/drevops/provision.sh + docker compose exec $(env | cut -f1 -d= | sed 's/^/-e /') -T cli ./scripts/vortex/provision.sh no_output_timeout: 30m - run: name: Test with PHPUnit command: | XDEBUG_ENABLE=true docker compose up -d cli php nginx # Restart stack with XDEBUG enabled for coverage. - docker compose exec -T -e XDEBUG_MODE=coverage cli vendor/bin/phpunit || [ "${DREVOPS_CI_PHPUNIT_IGNORE_FAILURE:-0}" -eq 1 ] + docker compose exec -T -e XDEBUG_MODE=coverage cli vendor/bin/phpunit || [ "${VORTEX_CI_PHPUNIT_IGNORE_FAILURE:-0}" -eq 1 ] docker compose up -d cli php nginx # Restart stack without XDEBUG enabled for coverage. - run: name: Test with Behat command: | - if [ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ]; then export DREVOPS_CI_BEHAT_PROFILE="${DREVOPS_CI_BEHAT_PROFILE:-p${CIRCLE_NODE_INDEX}}"; fi - echo "Running with ${DREVOPS_CI_BEHAT_PROFILE:-default} profile" - docker compose exec -T cli php -d memory_limit=-1 vendor/bin/behat --colors --strict --profile="${DREVOPS_CI_BEHAT_PROFILE:-default}" || \ - docker compose exec -T cli php -d memory_limit=-1 vendor/bin/behat --colors --strict --rerun --profile="${DREVOPS_CI_BEHAT_PROFILE:-default}" || \ - [ "${DREVOPS_CI_BEHAT_IGNORE_FAILURE:-0}" -eq 1 ] + if [ "${CIRCLE_NODE_TOTAL:-1}" -gt 1 ]; then export VORTEX_CI_BEHAT_PROFILE="${VORTEX_CI_BEHAT_PROFILE:-p${CIRCLE_NODE_INDEX}}"; fi + echo "Running with ${VORTEX_CI_BEHAT_PROFILE:-default} profile" + docker compose exec -T cli php -d memory_limit=-1 vendor/bin/behat --colors --strict --profile="${VORTEX_CI_BEHAT_PROFILE:-default}" || \ + docker compose exec -T cli php -d memory_limit=-1 vendor/bin/behat --colors --strict --rerun --profile="${VORTEX_CI_BEHAT_PROFILE:-default}" || \ + [ "${VORTEX_CI_BEHAT_IGNORE_FAILURE:-0}" -eq 1 ] no_output_timeout: 30m - run: name: Process test logs and artifacts command: | - mkdir -p "${DREVOPS_CI_TEST_RESULTS}" "${DREVOPS_CI_ARTIFACTS}" + mkdir -p "${VORTEX_CI_TEST_RESULTS}" "${VORTEX_CI_ARTIFACTS}" if docker compose ps --services --filter "status=running" | grep -q cli && docker compose exec cli test -d /app/.logs; then - docker compose cp cli:/app/.logs/. "${DREVOPS_CI_ARTIFACTS}/" + docker compose cp cli:/app/.logs/. "${VORTEX_CI_ARTIFACTS}/" if docker compose exec -T cli sh -c '[ -d /app/.logs/test_results/ ]'; then - docker compose cp cli:/app/.logs/test_results/. "${DREVOPS_CI_TEST_RESULTS}/" + docker compose cp cli:/app/.logs/test_results/. "${VORTEX_CI_TEST_RESULTS}/" fi fi when: always @@ -344,10 +343,10 @@ jobs: - run: command: | - DREVOPS_DEPLOY_BRANCH="${CIRCLE_BRANCH}" \ - DREVOPS_DEPLOY_PR="$(echo ${CIRCLE_PULL_REQUEST} | cut -d'/' -f 7)" \ - DREVOPS_DEPLOY_PR_HEAD=${CIRCLE_SHA1} \ - ./scripts/drevops/deploy.sh + VORTEX_DEPLOY_BRANCH="${CIRCLE_BRANCH}" \ + VORTEX_DEPLOY_PR="$(echo ${CIRCLE_PULL_REQUEST} | cut -d'/' -f 7)" \ + VORTEX_DEPLOY_PR_HEAD=${CIRCLE_SHA1} \ + ./scripts/vortex/deploy.sh no_output_timeout: 30m - store_artifacts: @@ -368,7 +367,7 @@ jobs: - *step_process_codebase_for_ci - run: - command: DREVOPS_DEPLOY_MODE="tag" ./scripts/drevops/deploy.sh + command: VORTEX_DEPLOY_MODE="tag" ./scripts/vortex/deploy.sh no_output_timeout: 30m - store_artifacts: @@ -378,16 +377,15 @@ jobs: # Add RENOVATE_TOKEN as an environment variable with GitHub access token in UI. renovatebot-self-hosted: docker: - - image: renovate/renovate:37.342.1 + - image: renovate/renovate:38.55.2 environment: RENOVATE_PLATFORM: 'github' RENOVATE_AUTODISCOVER: false - RENOVATE_DEPENDENCY_DASHBOARD: true - RENOVATE_DEPENDENCY_DASHBOARD_TITLE: 'RenovateBot Dependency Dashboard (self-hosted)' - RENOVATE_REPOSITORIES: *renovatebot_repository - RENOVATE_GIT_AUTHOR: *renovatebot_git_author - RENOVATE_DRY_RUN: false - LOG_LEVEL: debug + RENOVATE_REPOSITORIES: "${RENOVATE_REPOSITORIES:-${CIRCLE_PROJECT_REPONAME}/${CIRCLE_PROJECT_USERNAME}}" + RENOVATE_DEPENDENCY_DASHBOARD_TITLE: "${RENOVATE_DEPENDENCY_DASHBOARD_TITLE:-'RenovateBot Dependency Dashboard (self-hosted)'}" + RENOVATE_DEPENDENCY_DASHBOARD: "${RENOVATE_DEPENDENCY_DASHBOARD:-false}" + RENOVATE_DRY_RUN: "${RENOVATE_DRY_RUN:-false}" + RENOVATE_GIT_AUTHOR: "${RENOVATE_GIT_AUTHOR:-'Renovate Self Hosted '}" steps: - checkout - run: renovate-config-validator @@ -423,11 +421,12 @@ workflows: # - project/description # - deps/* # - feature/description, feature/123-description + # - bugfix/description, bugfix/123-description # - release/123.456.789, release/123.456.789-rc.123 (per https://semver.org/) # - release/2023-04-17, release/2023-04-17.123 (date-based) # - hotfix/123.456.789, hotfix/123.456.789-rc.1213 (per https://semver.org/) # - hotfix/2023-04-17, hotfix/2023-04-17.123 (date-based) - only: /^(production|main|master|develop)$|^project\/[a-zA-z0-9\-\.]+|^feature\/[a-zA-Z0-9\-\.\,_]+$|^ci.*|^deps\/.*|^(release|hotfix)\/[0-9]+(\.[0-9]+){2}(-rc\.[0-9]+)?$|^(release|hotfix)\/[0-9]{4}-[0-9]{2}-[0-9]{2}(\.[0-9]+)?$/ + only: /^(production|main|master|develop)$|^project\/[a-zA-z0-9\-\.]+|^(feature|bugfix)\/[a-zA-Z0-9\-\.\,_]+$|^ci.*|^deps\/.*|^(release|hotfix)\/[0-9]+(\.[0-9]+){2}(-rc\.[0-9]+)?$|^(release|hotfix)\/[0-9]{4}-[0-9]{2}-[0-9]{2}(\.[0-9]+)?$/ tags: ignore: /.*/ - deploy-tags: diff --git a/.docker/clamav.dockerfile b/.docker/clamav.dockerfile index 4de81dc..0a06215 100644 --- a/.docker/clamav.dockerfile +++ b/.docker/clamav.dockerfile @@ -9,7 +9,7 @@ # # @see https://hub.docker.com/r/uselagoon/commons/tags # @see https://github.com/uselagoon/lagoon-images/tree/main/images/commons -FROM uselagoon/commons:24.7.0 as commons +FROM uselagoon/commons:24.8.0 as commons FROM clamav/clamav:1.4.0 diff --git a/.docker/cli.dockerfile b/.docker/cli.dockerfile index 5799d19..60a39cc 100644 --- a/.docker/cli.dockerfile +++ b/.docker/cli.dockerfile @@ -6,7 +6,7 @@ # # @see https://hub.docker.com/r/uselagoon/php-8.3-cli-drupal/tags # @see https://github.com/uselagoon/lagoon-images/tree/main/images/php-cli-drupal -FROM uselagoon/php-8.3-cli-drupal:24.7.0 +FROM uselagoon/php-8.3-cli-drupal:24.8.0 # Add missing variables. # @todo Remove once https://github.com/uselagoon/lagoon/issues/3121 is resolved. diff --git a/.docker/mariadb.dockerfile b/.docker/mariadb.dockerfile index 7647c34..0261089 100644 --- a/.docker/mariadb.dockerfile +++ b/.docker/mariadb.dockerfile @@ -8,7 +8,7 @@ # @see https://github.com/drevops/mariadb-drupal-data # # The ARG value will be updated with a value passed from docker-compose.yml -ARG IMAGE=uselagoon/mariadb-10.11-drupal:24.7.0 +ARG IMAGE=uselagoon/mariadb-10.11-drupal:24.8.0 # hadolint ignore=DL3006 FROM ${IMAGE} diff --git a/.docker/nginx-drupal.dockerfile b/.docker/nginx-drupal.dockerfile index 5d884c5..cfe3964 100644 --- a/.docker/nginx-drupal.dockerfile +++ b/.docker/nginx-drupal.dockerfile @@ -9,7 +9,7 @@ FROM ${CLI_IMAGE:-cli} as cli # @see https://hub.docker.com/r/uselagoon/nginx-drupal/tags # @see https://github.com/uselagoon/lagoon-images/tree/main/images/nginx-drupal -FROM uselagoon/nginx-drupal:24.7.0 +FROM uselagoon/nginx-drupal:24.8.0 # Webroot is used for Nginx docroot configuration. ARG WEBROOT=web diff --git a/.docker/php.dockerfile b/.docker/php.dockerfile index b343160..c29f2d1 100644 --- a/.docker/php.dockerfile +++ b/.docker/php.dockerfile @@ -10,7 +10,7 @@ FROM ${CLI_IMAGE:-cli} as cli # @see https://hub.docker.com/r/uselagoon/php-8.3-fpm/tags # @see https://github.com/uselagoon/lagoon-images/tree/main/images/php-fpm -FROM uselagoon/php-8.3-fpm:24.7.0 +FROM uselagoon/php-8.3-fpm:24.8.0 RUN apk add --no-cache tzdata diff --git a/.docker/solr.dockerfile b/.docker/solr.dockerfile index 0b3c7ad..03cfcc0 100644 --- a/.docker/solr.dockerfile +++ b/.docker/solr.dockerfile @@ -5,7 +5,7 @@ FROM ${CLI_IMAGE} as cli # @see https://hub.docker.com/r/uselagoon/solr-8/tags # @see https://github.com/uselagoon/lagoon-images/blob/main/images/solr/8.Dockerfile -FROM uselagoon/solr-8:24.7.0 +FROM uselagoon/solr-8:24.8.0 # Solr Jump-start config needs to be manually copied from search_api_solr module # /app/docroot/modules/contrib/search_api_solr/jump-start/solr8/config-set. diff --git a/.dockerignore b/.dockerignore index 6c91b2e..15dc2cd 100644 --- a/.dockerignore +++ b/.dockerignore @@ -30,6 +30,7 @@ drush/contrib/ !.eslintrc.json !.sass-lint.yml !.twig-cs-fixer.php +!gherkinlint.json !Gruntfile.js !auth.json !behat.yml diff --git a/.env b/.env index c3f5694..6514576 100644 --- a/.env +++ b/.env @@ -1,7 +1,7 @@ ## # Project environment variables. # -# This is a single location where defined variables control how Scaffold +# This is a single location where defined variables control how the stack # operates and should be the primary place for modifications. Avoid overriding # values in scripts or configuration files to simplify future updates and # centralize changes. @@ -14,7 +14,7 @@ # # To customize variables locally, copy `.env.local.default` to `.env.local`. # -# @see https://docs.drevops.com/workflows/variables +# @see https://vortex.drevops.com/workflows/variables ################################################################################ # GENERAL # @@ -25,13 +25,13 @@ # Drives internal naming within the codebase. # Does not affect the names of containers and development URL - those depend on # the project directory and can be overridden with $COMPOSE_PROJECT_NAME. -DREVOPS_PROJECT=drevops-website +VORTEX_PROJECT=drevops-website # Name of the webroot directory with Drupal codebase. -DREVOPS_WEBROOT=web +VORTEX_WEBROOT=web # The timezone for the containers. -DREVOPS_TZ="Australia/Melbourne" +VORTEX_TZ="Australia/Melbourne" ################################################################################ # DRUPAL # @@ -68,31 +68,31 @@ DRUPAL_CLAMAV_MODE=daemon ################################################################################ # Variables in this section control how the site is provisioned. -# @see https://docs.drevops.com/workflows/provision +# @see https://vortex.drevops.com/workflows/provision # Set to 1 to install a site from profile instead of the database file dump. -DREVOPS_PROVISION_USE_PROFILE=0 +VORTEX_PROVISION_USE_PROFILE=0 # Overwrite existing database if it exists. # # Usually set to 0 in deployed environments and can be temporary set to 1 for # a specific deployment. # Set this to 1 in .env.local to override when developing locally. -DREVOPS_PROVISION_OVERRIDE_DB=0 +VORTEX_PROVISION_OVERRIDE_DB=0 # Skip database sanitization. # # Database sanitization is enabled by default in all non-production # environments and is always skipped in the production environment. -DREVOPS_PROVISION_SANITIZE_DB_SKIP=0 +VORTEX_PROVISION_SANITIZE_DB_SKIP=0 # Sanitization email pattern. Sanitization is enabled by default in all # non-production environments. -# @see https://docs.drevops.com/workflows/build#sanitization -DREVOPS_PROVISION_SANITIZE_DB_EMAIL="user_%uid@drevops.com" +# @see https://vortex.drevops.com/workflows/build#sanitization +VORTEX_PROVISION_SANITIZE_DB_EMAIL="user_%uid@drevops.com" # Put the site into a maintenance mode during site provisioning. -DREVOPS_PROVISION_USE_MAINTENANCE_MODE=1 +VORTEX_PROVISION_USE_MAINTENANCE_MODE=1 ################################################################################ # DATABASE # @@ -104,18 +104,18 @@ DREVOPS_PROVISION_USE_MAINTENANCE_MODE=1 # Database can be imported from a file dump into an empty database started from # the database default image or can exist in a pre-built container image. # Defaults to importing from a file. -# @see https://docs.drevops.com/workflows/database +# @see https://vortex.drevops.com/workflows/database # Database dump directory. -DREVOPS_DB_DIR=./.data +VORTEX_DB_DIR=./.data # Database dump file name. -DREVOPS_DB_FILE=db.sql +VORTEX_DB_FILE=db.sql # Name of the pre-built container image. # Uncomment to use an image with a DB data loaded into it. # @see https://github.com/drevops/mariadb-drupal-data to seed your DB image. -# DREVOPS_DB_IMAGE= +# VORTEX_DB_IMAGE= # Database can be sourced from one of the following locations: # @@ -127,14 +127,14 @@ DREVOPS_DB_FILE=db.sql # - `none` - not downloaded, site is freshly installed for every build. # Note that "container_registry" works only for database-in-image -# database storage (when $DREVOPS_DB_IMAGE variable has a value). -DREVOPS_DB_DOWNLOAD_SOURCE=lagoon +# database storage (when $VORTEX_DB_IMAGE variable has a value). +VORTEX_DB_DOWNLOAD_SOURCE=lagoon # Environment to download the database from. -DREVOPS_DB_DOWNLOAD_ENVIRONMENT=main +VORTEX_DB_DOWNLOAD_ENVIRONMENT=main -# Lagoon project name. May be different from $DREVOPS_PROJECT. +# Lagoon project name. May be different from $VORTEX_PROJECT. LAGOON_PROJECT=drevops-website ################################################################################ @@ -142,37 +142,37 @@ LAGOON_PROJECT=drevops-website ################################################################################ # Deployment occurs when tests pass in the CI environment. -# @see https://docs.drevops.com/workflows/deployment +# @see https://vortex.drevops.com/workflows/deployment # The type of deployment. # # Combination of comma-separated values to support multiple deployment targets: # `artifact`,`container_registry`, `webhook`, `lagoon`. # -# See https://docs.drevops.com/workflows/deploy -DREVOPS_DEPLOY_TYPES=lagoon +VORTEX_DEPLOY_TYPES=lagoon +# See https://vortex.drevops.com/workflows/deploy # Dedicated branch to identify the production environment. -DREVOPS_LAGOON_PRODUCTION_BRANCH=main +VORTEX_LAGOON_PRODUCTION_BRANCH=main ################################################################################ # NOTIFICATIONS # ################################################################################ # Notificaions are sent accross multiple channels before and after deployment. -# @see https://docs.drevops.com/workflows/notifications +# @see https://vortex.drevops.com/workflows/notifications # The channels of the notifications. # # Can be a combination of comma-separated values: email,newrelic,github,jira -DREVOPS_NOTIFY_CHANNELS=email,github +VORTEX_NOTIFY_CHANNELS=email,github # Email to send notifications from. -DREVOPS_NOTIFY_EMAIL_FROM="webmaster@drevops.com" +VORTEX_NOTIFY_EMAIL_FROM="webmaster@drevops.com" # Email address(es) to send notifications to. # # Multiple names can be specified as a comma-separated list of email addresses # with optional names in the format "email|name". # Example: "to1@example.com|Jane Doe, to2@example.com|John Doe" -DREVOPS_NOTIFY_EMAIL_RECIPIENTS="webmaster@drevops.com|Webmaster" +VORTEX_NOTIFY_EMAIL_RECIPIENTS="webmaster@drevops.com|Webmaster" diff --git a/.env.local.default b/.env.local.default index 3eac8c1..a9d3df2 100644 --- a/.env.local.default +++ b/.env.local.default @@ -6,7 +6,7 @@ # # The .env.local file is excluded via .gitignore and will not be committed. # -# @see https://docs.drevops.com/workflows/variables +# @see https://vortex.drevops.com/workflows/variables # Suppress Ahoy prompts. # AHOY_CONFIRM_RESPONSE=y @@ -17,18 +17,18 @@ # AHOY_CONFIRM_WAIT_SKIP=1 # Always override DB. -DREVOPS_PROVISION_OVERRIDE_DB=1 +VORTEX_PROVISION_OVERRIDE_DB=1 # Local development URL. # Defaults to `.docker.amazee.io` # Override only if you need to use a different URL than the default. -# DREVOPS_LOCALDEV_URL="drevops-website.docker.amazee.io" +# VORTEX_LOCALDEV_URL="drevops-website.docker.amazee.io" -# Print debug information in DrevOps Scaffold scripts. -# DREVOPS_DEBUG=1 +# Print debug information in DrevOps Vortex scripts. +# VORTEX_DEBUG=1 # Always override existing downloaded DB dump. -DREVOPS_DB_DOWNLOAD_FORCE=1 +VORTEX_DB_DOWNLOAD_FORCE=1 diff --git a/.github/workflows/draft-release-notes.yml b/.github/workflows/draft-release-notes.yml index 5ae482c..605e3d0 100644 --- a/.github/workflows/draft-release-notes.yml +++ b/.github/workflows/draft-release-notes.yml @@ -19,7 +19,19 @@ jobs: runs-on: ubuntu-latest steps: + - name: Generate CalVer version + if: vars.VORTEX_RELEASE_VERSION_SCHEME == 'calver' + id: calver + run: | + export VERSION="$(date "+%y.%-m").0" + echo "version=${VERSION}" >> "${GITHUB_OUTPUT}" + echo "Version set to ${VERSION}" + - name: Draft release notes uses: release-drafter/release-drafter@v6 + with: + tag: ${{ steps.calver.outputs.version }} + name: ${{ steps.calver.outputs.version }} + version: ${{ steps.calver.outputs.version }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index beac684..6655429 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,7 @@ web/sites/default/* # Preserve default settings files to use them in Functional test. !web/sites/default/default.settings.php !web/sites/default/default.services.yml -# Whitelist scaffold files. @see https://github.com/drupal-composer/drupal-scaffold#limitation +# Whitelist Drupal Scaffold files. @see https://github.com/drupal-composer/drupal-scaffold#limitation !web/.editorconfig !web/.eslintignore !web/.gitattributes diff --git a/.lagoon.yml b/.lagoon.yml index 883ac3f..7495470 100644 --- a/.lagoon.yml +++ b/.lagoon.yml @@ -8,47 +8,47 @@ environment_variables: # container-registries: # dockerhub: # # The `username` field must be set as a scalar value. -# # Environment variable DREVOPS_CONTAINER_REGISTRY_PASS needs to be set via Lagoon CLI. +# # Environment variable VORTEX_CONTAINER_REGISTRY_PASS needs to be set via Lagoon CLI. # username: your_registry_username -# password: DREVOPS_CONTAINER_REGISTRY_PASS +# password: VORTEX_CONTAINER_REGISTRY_PASS tasks: post-rollout: - run: - name: Show DrevOps variables. + name: Show Vortex variables. command: | - [ "${DREVOPS_DEBUG-}" = "1" ] && env -0 | sort -z | tr '\0' '\n' | grep ^DREVOPS_ || true + [ "${VORTEX_DEBUG-}" = "1" ] && env -0 | sort -z | tr '\0' '\n' | grep ^VORTEX_ || true service: cli shell: bash - run: name: Notify about pre-deployment. command: | - if [ -n "$LAGOON_PR_NUMBER" ]; then export DREVOPS_NOTIFY_REF=$LAGOON_PR_NUMBER;export DREVOPS_NOTIFY_SHA=${LAGOON_PR_HEAD_SHA#origin/};export DREVOPS_NOTIFY_BRANCH=$LAGOON_PR_HEAD_BRANCH;else export DREVOPS_NOTIFY_REF=$LAGOON_GIT_BRANCH;export DREVOPS_NOTIFY_SHA=$LAGOON_GIT_SHA;export DREVOPS_NOTIFY_BRANCH=$LAGOON_GIT_BRANCH;fi - DREVOPS_NOTIFY_PROJECT=$LAGOON_PROJECT \ - DREVOPS_NOTIFY_ENVIRONMENT_URL=$LAGOON_ROUTE \ - DREVOPS_NOTIFY_EVENT=pre_deployment ./scripts/drevops/notify.sh || true + if [ -n "$LAGOON_PR_NUMBER" ]; then export VORTEX_NOTIFY_REF=$LAGOON_PR_NUMBER;export VORTEX_NOTIFY_SHA=${LAGOON_PR_HEAD_SHA#origin/};export VORTEX_NOTIFY_BRANCH=$LAGOON_PR_HEAD_BRANCH;else export VORTEX_NOTIFY_REF=$LAGOON_GIT_BRANCH;export VORTEX_NOTIFY_SHA=$LAGOON_GIT_SHA;export VORTEX_NOTIFY_BRANCH=$LAGOON_GIT_BRANCH;fi + VORTEX_NOTIFY_PROJECT=$LAGOON_PROJECT \ + VORTEX_NOTIFY_ENVIRONMENT_URL=$LAGOON_ROUTE \ + VORTEX_NOTIFY_EVENT=pre_deployment ./scripts/vortex/notify.sh || true service: cli shell: bash - run: name: Backup DB before deployment in production command: | - if [ "$LAGOON_ENVIRONMENT_TYPE" = "production" ] || [ "$LAGOON_GIT_BRANCH" = "${DREVOPS_LAGOON_PRODUCTION_BRANCH:-main}" ]; then + if [ "$LAGOON_ENVIRONMENT_TYPE" = "production" ] || [ "$LAGOON_GIT_BRANCH" = "${VORTEX_LAGOON_PRODUCTION_BRANCH:-main}" ]; then echo "==> Running in PRODUCTION environment." - DREVOPS_DB_DIR=/app/web/sites/default/files/private/pre_deployment_backups ./scripts/drevops/export-db-file.sh + VORTEX_DB_DIR=/app/web/sites/default/files/private/pre_deployment_backups ./scripts/vortex/export-db-file.sh fi service: cli - run: name: Download database in non-production environments command: | - if [ "$LAGOON_ENVIRONMENT_TYPE" != "production" ] && [ "$LAGOON_GIT_BRANCH" != "${DREVOPS_LAGOON_PRODUCTION_BRANCH:-main}" ]; then + if [ "$LAGOON_ENVIRONMENT_TYPE" != "production" ] && [ "$LAGOON_GIT_BRANCH" != "${VORTEX_LAGOON_PRODUCTION_BRANCH:-main}" ]; then # No need to load SSH file to access production DB as Lagoon has SSH agent keys. - export DREVOPS_DB_DOWNLOAD_SSH_FILE=false - export DREVOPS_DB_DIR=/tmp/data - rm -Rf $DREVOPS_DB_DIR || true - ./scripts/drevops/download-db.sh + export VORTEX_DB_DOWNLOAD_SSH_FILE=false + export VORTEX_DB_DIR=/tmp/data + rm -Rf $VORTEX_DB_DIR || true + ./scripts/vortex/download-db.sh fi service: cli @@ -56,29 +56,29 @@ tasks: name: Provision site command: | - if [ "$LAGOON_ENVIRONMENT_TYPE" = "production" ] || [ "$LAGOON_GIT_BRANCH" = "${DREVOPS_LAGOON_PRODUCTION_BRANCH:-main}" ]; then + if [ "$LAGOON_ENVIRONMENT_TYPE" = "production" ] || [ "$LAGOON_GIT_BRANCH" = "${VORTEX_LAGOON_PRODUCTION_BRANCH:-main}" ]; then echo "==> Running in PRODUCTION environment." # Never overwrite existing DB when production site already exists. - export DREVOPS_PROVISION_OVERRIDE_DB=0 + export VORTEX_PROVISION_OVERRIDE_DB=0 # Never unblock admin user in production. export DRUPAL_UNBLOCK_ADMIN=0 # Never sanitize DB in production. - export DREVOPS_PROVISION_SANITIZE_DB_SKIP=1 + export VORTEX_PROVISION_SANITIZE_DB_SKIP=1 fi - export DREVOPS_DB_DIR=/tmp/data - ./scripts/drevops/provision.sh + export VORTEX_DB_DIR=/tmp/data + ./scripts/vortex/provision.sh service: cli shell: bash - run: name: Send deployment notifications command: | - if [ -n "$LAGOON_PR_NUMBER" ]; then export DREVOPS_NOTIFY_REF=$LAGOON_PR_NUMBER; export DREVOPS_NOTIFY_SHA=${LAGOON_PR_HEAD_SHA#origin/}; export DREVOPS_NOTIFY_BRANCH=$LAGOON_PR_HEAD_BRANCH; else export DREVOPS_NOTIFY_REF=$LAGOON_GIT_BRANCH; export DREVOPS_NOTIFY_SHA=$LAGOON_GIT_SHA; export DREVOPS_NOTIFY_BRANCH=$LAGOON_GIT_BRANCH; fi - DREVOPS_NOTIFY_EVENT=post_deployment \ - DREVOPS_NOTIFY_PROJECT=$LAGOON_PROJECT \ - DREVOPS_NOTIFY_ENVIRONMENT_URL=$LAGOON_ROUTE \ - ./scripts/drevops/notify.sh || true + if [ -n "$LAGOON_PR_NUMBER" ]; then export VORTEX_NOTIFY_REF=$LAGOON_PR_NUMBER; export VORTEX_NOTIFY_SHA=${LAGOON_PR_HEAD_SHA#origin/}; export VORTEX_NOTIFY_BRANCH=$LAGOON_PR_HEAD_BRANCH; else export VORTEX_NOTIFY_REF=$LAGOON_GIT_BRANCH; export VORTEX_NOTIFY_SHA=$LAGOON_GIT_SHA; export VORTEX_NOTIFY_BRANCH=$LAGOON_GIT_BRANCH; fi + VORTEX_NOTIFY_EVENT=post_deployment \ + VORTEX_NOTIFY_PROJECT=$LAGOON_PROJECT \ + VORTEX_NOTIFY_ENVIRONMENT_URL=$LAGOON_ROUTE \ + ./scripts/vortex/notify.sh || true service: cli shell: bash diff --git a/.twig-cs-fixer.php b/.twig-cs-fixer.php index 35d4c3d..43b8171 100644 --- a/.twig-cs-fixer.php +++ b/.twig-cs-fixer.php @@ -15,5 +15,6 @@ $config = new TwigCsFixer\Config\Config(); $config->setRuleset($ruleset); $config->setFinder($finder); +$config->addTokenParser(new Drupal\Core\Template\TwigTransTokenParser()); return $config; diff --git a/README.md b/README.md index c9a9283..2fb527d 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,9 @@ Drupal 10 implementation of DrevOps Website for DrevOps [![RenovateBot](https://img.shields.io/badge/RenovateBot-enabled-brightgreen.svg?logo=renovatebot)](https://renovatebot.com) -[//]: # (DO NOT REMOVE THE BADGE BELOW. IT IS USED BY DREVOPS TO TRACK INTEGRATION) +[//]: # (DO NOT REMOVE THE BADGE BELOW. IT IS USED BY VORTEX TO TRACK INTEGRATION) -[![DrevOps](https://img.shields.io/badge/DrevOps-1.22.0-blue.svg)](https://github.com/drevops/scaffold/tree/1.22.0) +[![Vortex](https://img.shields.io/badge/Vortex-24.9.1-blue.svg)](https://github.com/drevops/vortex/tree/24.9.1) ## Local environment setup @@ -21,16 +21,12 @@ Drupal 10 implementation of DrevOps Website for DrevOps - Authenticate with Lagoon 1. Create an SSH key and add it to your account in the [Lagoon Dashboard](https://dashboard.amazeeio.cloud/). 2. Copy `.env.local.default` to `.env.local`. - 3. Update `$DREVOPS_DB_DOWNLOAD_SSH_FILE` environment variable in `.env.local` file + 3. Update `$VORTEX_DB_DOWNLOAD_SSH_FILE` environment variable in `.env.local` file with the path to the SSH key. - `ahoy download-db` - `pygmy up` - `ahoy build` -### Apple M1 adjustments - -Copy `docker-compose.override.default.yml` to `docker-compose.override.yml`. - ## Project documentation - [FAQs](docs/faqs.md) @@ -40,4 +36,4 @@ Copy `docker-compose.override.default.yml` to `docker-compose.override.yml`. - [Deployment](docs/deployment.md) --- -_This repository was created using the [DrevOps Scaffold](https://github.com/drevops/scaffold) project template_ +_This repository was created using the [Vortex](https://github.com/drevops/vortex) project template_ diff --git a/behat.yml b/behat.yml index e7f0bb2..abecd57 100644 --- a/behat.yml +++ b/behat.yml @@ -28,9 +28,23 @@ default: base_url: http://nginx:8080 files_path: '%paths.base%/tests/behat/fixtures' browser_name: chrome + javascript_session: selenium2 selenium2: wd_host: "http://chrome:4444/wd/hub" - javascript_session: selenium2 + capabilities: + browser: chrome + extra_capabilities: + "goog:chromeOptions": + args: + - '--disable-gpu' # Disables hardware acceleration required in containers and cloud-based instances (like CI runners) where GPU is not available. + # Options to increase stability and speed. + - '--disable-extensions' # Disables all installed Chrome extensions. Useful in testing environments to avoid interference from extensions. + - '--disable-infobars' # Hides the infobar that Chrome displays for various notifications, like warnings when opening multiple tabs. + - '--disable-popup-blocking' # Disables the popup blocker, allowing all popups to appear. Useful in testing scenarios where popups are expected. + - '--disable-translate' # Disables the built-in translation feature, preventing Chrome from offering to translate pages. + - '--no-first-run' # Skips the initial setup screen that Chrome typically shows when running for the first time. + - '--test-type' # Disables certain security features and UI components that are unnecessary for automated testing, making Chrome more suitable for test environments. + # Provides integration with Drupal APIs. Drupal\DrupalExtension: blackbox: ~ diff --git a/composer.json b/composer.json index 1b15a20..540197b 100644 --- a/composer.json +++ b/composer.json @@ -5,47 +5,47 @@ "type": "project", "require": { "php": ">=8.3", - "composer/installers": "^2.2", + "composer/installers": "^2.3", "cweagans/composer-patches": "^1.7", - "drupal/admin_toolbar": "^3.4", + "drupal/admin_toolbar": "^3.5", "drupal/civictheme": "^1.8", "drupal/clamav": "^2.0", "drupal/coffee": "^1.4", "drupal/config_split": "^1.9", "drupal/config_update": "^2@alpha", - "drupal/core-composer-scaffold": "~10.3.0", - "drupal/core-recommended": "~10.3.0", + "drupal/core-composer-scaffold": "~10.3.2", + "drupal/core-recommended": "~10.3.2", "drupal/environment_indicator": "^4.0", "drupal/gin": "^3.0@RC", "drupal/gin_toolbar": "^1.0@RC", "drupal/metatag": "^2.0", - "drupal/pathauto": "^1.12", - "drupal/redirect": "^1.9", - "drupal/redis": "^1.7", + "drupal/pathauto": "^1.13", + "drupal/redirect": "^1.10", + "drupal/redis": "^1.8", "drupal/search_api": "^1.35", "drupal/search_api_solr": "^4.3", - "drupal/shield": "^1.7", + "drupal/shield": "^1.8", "drupal/stage_file_proxy": "^2.1", - "drush/drush": "~13.0", - "oomphinc/composer-installers-extender": "^2.0", - "vlucas/phpdotenv": "^5.6", - "webflo/drupal-finder": "^1.2" + "drush/drush": "~13.0.1", + "oomphinc/composer-installers-extender": "^2", + "webflo/drupal-finder": "^1.3" }, "require-dev": { "behat/behat": "^3.14", + "dantleech/gherkin-lint": "^0.2.3", "dealerdirect/phpcodesniffer-composer-installer": "^0.7", "drevops/behat-format-progress-fail": "^1.2", "drevops/behat-screenshot": "^1.5", "drevops/behat-steps": "^2.4", - "drupal/core-dev": "~10.3.0", + "drupal/core-dev": "~10.3.2", "drupal/drupal-extension": "^5", - "ergebnis/composer-normalize": "^2.42", + "ergebnis/composer-normalize": "^2.43", "mglaman/phpstan-drupal": "^1.2", "palantirnet/drupal-rector": "^0.20", "phpcompatibility/php-compatibility": "^9.3", "phpmd/phpmd": "^2.15", "phpspec/prophecy-phpunit": "^2.2", - "phpstan/extension-installer": "^1.3", + "phpstan/extension-installer": "^1.4", "pyrech/composer-changelogs": "^1.8", "vincentlanglet/twig-cs-fixer": "^3" }, @@ -88,7 +88,7 @@ }, "discard-changes": true, "platform": { - "php": "8.3.9" + "php": "8.3.10" }, "sort-packages": true }, diff --git a/composer.lock b/composer.lock index 9e04a67..3ddbd8d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0266cc966dc90b2c74dc5246727ea4b4", + "content-hash": "72f9c6d51fc124b35f186575f6262bdf", "packages": [ { "name": "asm89/stack-cors", @@ -1255,7 +1255,7 @@ "homepage": "https://www.drupal.org/user/2320090" }, { - "name": "Musa.thomas", + "name": "musa.thomas", "homepage": "https://www.drupal.org/user/1213824" }, { @@ -1508,7 +1508,7 @@ "email": "virtually.johnalbin@gmail.com" }, { - "name": "RobLoach", + "name": "robloach", "homepage": "https://www.drupal.org/user/61114" } ], @@ -3344,27 +3344,27 @@ }, { "name": "drupal/simple_sitemap", - "version": "4.1.9", + "version": "4.2.1", "source": { "type": "git", "url": "https://git.drupalcode.org/project/simple_sitemap.git", - "reference": "4.1.9" + "reference": "4.2.1" }, "dist": { "type": "zip", - "url": "https://ftp.drupal.org/files/projects/simple_sitemap-4.1.9.zip", - "reference": "4.1.9", - "shasum": "d86d90408b334cd7470ea631e3be5acca2103377" + "url": "https://ftp.drupal.org/files/projects/simple_sitemap-4.2.1.zip", + "reference": "4.2.1", + "shasum": "d96b481571ca2fecdb305e87d2557f9338116864" }, "require": { - "drupal/core": "^9.3 || ^10", + "drupal/core": "^10.2 || ^11", "ext-xmlwriter": "*" }, "type": "drupal-module", "extra": { "drupal": { - "version": "4.1.9", - "datestamp": "1712441608", + "version": "4.2.1", + "datestamp": "1723802052", "security-coverage": { "status": "covered", "message": "Covered by Drupal's security advisory policy" @@ -3388,7 +3388,7 @@ "role": "Maintainer" }, { - "name": "WalkingDexter", + "name": "walkingdexter", "homepage": "https://www.drupal.org/user/3251330" } ], @@ -3894,68 +3894,6 @@ ], "time": "2023-10-06T06:47:41+00:00" }, - { - "name": "graham-campbell/result-type", - "version": "v1.1.3", - "source": { - "type": "git", - "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", - "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" - }, - "type": "library", - "autoload": { - "psr-4": { - "GrahamCampbell\\ResultType\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - } - ], - "description": "An Implementation Of The Result Type", - "keywords": [ - "Graham Campbell", - "GrahamCampbell", - "Result Type", - "Result-Type", - "result" - ], - "support": { - "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", - "type": "tidelift" - } - ], - "time": "2024-07-20T21:45:45+00:00" - }, { "name": "grasmash/expander", "version": "3.0.0", @@ -4450,16 +4388,16 @@ }, { "name": "illuminate/collections", - "version": "v11.20.0", + "version": "v11.21.0", "source": { "type": "git", "url": "https://github.com/illuminate/collections.git", - "reference": "dc68a7ccad93f3c2baa0bc8f559431c06391aa75" + "reference": "d373c9f382f38dc5e612dbe1cd196b154cd1063c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/collections/zipball/dc68a7ccad93f3c2baa0bc8f559431c06391aa75", - "reference": "dc68a7ccad93f3c2baa0bc8f559431c06391aa75", + "url": "https://api.github.com/repos/illuminate/collections/zipball/d373c9f382f38dc5e612dbe1cd196b154cd1063c", + "reference": "d373c9f382f38dc5e612dbe1cd196b154cd1063c", "shasum": "" }, "require": { @@ -4501,11 +4439,11 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-08-01T18:54:27+00:00" + "time": "2024-08-19T02:05:39+00:00" }, { "name": "illuminate/conditionable", - "version": "v11.20.0", + "version": "v11.21.0", "source": { "type": "git", "url": "https://github.com/illuminate/conditionable.git", @@ -4551,7 +4489,7 @@ }, { "name": "illuminate/contracts", - "version": "v11.20.0", + "version": "v11.21.0", "source": { "type": "git", "url": "https://github.com/illuminate/contracts.git", @@ -4599,7 +4537,7 @@ }, { "name": "illuminate/macroable", - "version": "v11.20.0", + "version": "v11.21.0", "source": { "type": "git", "url": "https://github.com/illuminate/macroable.git", @@ -4704,16 +4642,16 @@ }, { "name": "laravel/prompts", - "version": "v0.1.24", + "version": "v0.1.25", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "409b0b4305273472f3754826e68f4edbd0150149" + "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/409b0b4305273472f3754826e68f4edbd0150149", - "reference": "409b0b4305273472f3754826e68f4edbd0150149", + "url": "https://api.github.com/repos/laravel/prompts/zipball/7b4029a84c37cb2725fc7f011586e2997040bc95", + "reference": "7b4029a84c37cb2725fc7f011586e2997040bc95", "shasum": "" }, "require": { @@ -4756,9 +4694,9 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.1.24" + "source": "https://github.com/laravel/prompts/tree/v0.1.25" }, - "time": "2024-06-17T13:58:22+00:00" + "time": "2024-08-12T22:06:33+00:00" }, { "name": "league/container", @@ -5487,81 +5425,6 @@ }, "time": "2023-05-26T05:37:59+00:00" }, - { - "name": "phpoption/phpoption", - "version": "1.9.3", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/e3fac8b24f56113f7cb96af14958c0dd16330f54", - "reference": "e3fac8b24f56113f7cb96af14958c0dd16330f54", - "shasum": "" - }, - "require": { - "php": "^7.2.5 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - }, - "branch-alias": { - "dev-master": "1.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpOption\\": "src/PhpOption/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com", - "homepage": "https://github.com/schmittjoh" - }, - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - } - ], - "description": "Option Type for PHP", - "keywords": [ - "language", - "option", - "php", - "type" - ], - "support": { - "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.3" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", - "type": "tidelift" - } - ], - "time": "2024-07-20T21:41:07+00:00" - }, { "name": "phpowermove/docblock", "version": "v4.0", @@ -6286,16 +6149,16 @@ }, { "name": "symfony/console", - "version": "v6.4.10", + "version": "v6.4.11", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc" + "reference": "42686880adaacdad1835ee8fc2a9ec5b7bd63998" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/504974cbe43d05f83b201d6498c206f16fc0cdbc", - "reference": "504974cbe43d05f83b201d6498c206f16fc0cdbc", + "url": "https://api.github.com/repos/symfony/console/zipball/42686880adaacdad1835ee8fc2a9ec5b7bd63998", + "reference": "42686880adaacdad1835ee8fc2a9ec5b7bd63998", "shasum": "" }, "require": { @@ -6360,7 +6223,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.10" + "source": "https://github.com/symfony/console/tree/v6.4.11" }, "funding": [ { @@ -6376,20 +6239,20 @@ "type": "tidelift" } ], - "time": "2024-07-26T12:30:32+00:00" + "time": "2024-08-15T22:48:29+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.10", + "version": "v6.4.11", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "5caf9c5f6085f13b27d70a236b776c07e4a1c3eb" + "reference": "e93c8368dc9915c2fe12018ff22fcbbdd32c9a9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/5caf9c5f6085f13b27d70a236b776c07e4a1c3eb", - "reference": "5caf9c5f6085f13b27d70a236b776c07e4a1c3eb", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e93c8368dc9915c2fe12018ff22fcbbdd32c9a9e", + "reference": "e93c8368dc9915c2fe12018ff22fcbbdd32c9a9e", "shasum": "" }, "require": { @@ -6441,7 +6304,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.10" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.11" }, "funding": [ { @@ -6457,7 +6320,7 @@ "type": "tidelift" } ], - "time": "2024-07-26T07:32:07+00:00" + "time": "2024-08-29T08:15:38+00:00" }, { "name": "symfony/deprecation-contracts", @@ -6825,16 +6688,16 @@ }, { "name": "symfony/finder", - "version": "v6.4.10", + "version": "v6.4.11", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "af29198d87112bebdd397bd7735fbd115997824c" + "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/af29198d87112bebdd397bd7735fbd115997824c", - "reference": "af29198d87112bebdd397bd7735fbd115997824c", + "url": "https://api.github.com/repos/symfony/finder/zipball/d7eb6daf8cd7e9ac4976e9576b32042ef7253453", + "reference": "d7eb6daf8cd7e9ac4976e9576b32042ef7253453", "shasum": "" }, "require": { @@ -6869,7 +6732,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.10" + "source": "https://github.com/symfony/finder/tree/v6.4.11" }, "funding": [ { @@ -6885,7 +6748,7 @@ "type": "tidelift" } ], - "time": "2024-07-24T07:06:38+00:00" + "time": "2024-08-13T14:27:37+00:00" }, { "name": "symfony/http-foundation", @@ -6966,16 +6829,16 @@ }, { "name": "symfony/http-kernel", - "version": "v6.4.10", + "version": "v6.4.11", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "147e0daf618d7575b5007055340d09aece5cf068" + "reference": "1ba6b89d781cb47448155cc70dd2e0f1b0584c79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/147e0daf618d7575b5007055340d09aece5cf068", - "reference": "147e0daf618d7575b5007055340d09aece5cf068", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1ba6b89d781cb47448155cc70dd2e0f1b0584c79", + "reference": "1ba6b89d781cb47448155cc70dd2e0f1b0584c79", "shasum": "" }, "require": { @@ -7060,7 +6923,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.10" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.11" }, "funding": [ { @@ -7076,7 +6939,7 @@ "type": "tidelift" } ], - "time": "2024-07-26T14:52:04+00:00" + "time": "2024-08-30T16:57:20+00:00" }, { "name": "symfony/mailer", @@ -7160,16 +7023,16 @@ }, { "name": "symfony/mime", - "version": "v6.4.9", + "version": "v6.4.11", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "7d048964877324debdcb4e0549becfa064a20d43" + "reference": "dba5d5f6073baf7a3576b580cc4a208b4ca00553" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/7d048964877324debdcb4e0549becfa064a20d43", - "reference": "7d048964877324debdcb4e0549becfa064a20d43", + "url": "https://api.github.com/repos/symfony/mime/zipball/dba5d5f6073baf7a3576b580cc4a208b4ca00553", + "reference": "dba5d5f6073baf7a3576b580cc4a208b4ca00553", "shasum": "" }, "require": { @@ -7225,7 +7088,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.9" + "source": "https://github.com/symfony/mime/tree/v6.4.11" }, "funding": [ { @@ -7241,7 +7104,7 @@ "type": "tidelift" } ], - "time": "2024-06-28T09:49:33+00:00" + "time": "2024-08-13T12:15:02+00:00" }, { "name": "symfony/polyfill-ctype", @@ -8094,16 +7957,16 @@ }, { "name": "symfony/psr-http-message-bridge", - "version": "v6.4.10", + "version": "v6.4.11", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "89a24648d73e4eee30893b0da16abc454a65c53b" + "reference": "74835ba54eca99a38f374f7a6d932fa510124773" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/89a24648d73e4eee30893b0da16abc454a65c53b", - "reference": "89a24648d73e4eee30893b0da16abc454a65c53b", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/74835ba54eca99a38f374f7a6d932fa510124773", + "reference": "74835ba54eca99a38f374f7a6d932fa510124773", "shasum": "" }, "require": { @@ -8157,7 +8020,7 @@ "psr-7" ], "support": { - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.10" + "source": "https://github.com/symfony/psr-http-message-bridge/tree/v6.4.11" }, "funding": [ { @@ -8173,20 +8036,20 @@ "type": "tidelift" } ], - "time": "2024-07-15T09:36:38+00:00" + "time": "2024-08-14T13:55:58+00:00" }, { "name": "symfony/routing", - "version": "v6.4.10", + "version": "v6.4.11", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "aad19fe10753ba842f0d653a8db819c4b3affa87" + "reference": "8ee0c24c1bf61c263a26f1b9b6d19e83b1121f2a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/aad19fe10753ba842f0d653a8db819c4b3affa87", - "reference": "aad19fe10753ba842f0d653a8db819c4b3affa87", + "url": "https://api.github.com/repos/symfony/routing/zipball/8ee0c24c1bf61c263a26f1b9b6d19e83b1121f2a", + "reference": "8ee0c24c1bf61c263a26f1b9b6d19e83b1121f2a", "shasum": "" }, "require": { @@ -8240,7 +8103,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.10" + "source": "https://github.com/symfony/routing/tree/v6.4.11" }, "funding": [ { @@ -8256,20 +8119,20 @@ "type": "tidelift" } ], - "time": "2024-07-15T09:26:24+00:00" + "time": "2024-08-29T08:15:38+00:00" }, { "name": "symfony/serializer", - "version": "v6.4.10", + "version": "v6.4.11", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "9a67fcf320561e96f94d62bbe0e169ac534a5718" + "reference": "a75d03d7720417f8a654e73e8f02acdea8779cd0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/9a67fcf320561e96f94d62bbe0e169ac534a5718", - "reference": "9a67fcf320561e96f94d62bbe0e169ac534a5718", + "url": "https://api.github.com/repos/symfony/serializer/zipball/a75d03d7720417f8a654e73e8f02acdea8779cd0", + "reference": "a75d03d7720417f8a654e73e8f02acdea8779cd0", "shasum": "" }, "require": { @@ -8338,7 +8201,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.4.10" + "source": "https://github.com/symfony/serializer/tree/v6.4.11" }, "funding": [ { @@ -8354,7 +8217,7 @@ "type": "tidelift" } ], - "time": "2024-07-26T13:13:26+00:00" + "time": "2024-08-17T07:51:47+00:00" }, { "name": "symfony/service-contracts", @@ -8441,16 +8304,16 @@ }, { "name": "symfony/string", - "version": "v6.4.10", + "version": "v6.4.11", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "ccf9b30251719567bfd46494138327522b9a9446" + "reference": "5bc3eb632cf9c8dbfd6529d89be9950d1518883b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/ccf9b30251719567bfd46494138327522b9a9446", - "reference": "ccf9b30251719567bfd46494138327522b9a9446", + "url": "https://api.github.com/repos/symfony/string/zipball/5bc3eb632cf9c8dbfd6529d89be9950d1518883b", + "reference": "5bc3eb632cf9c8dbfd6529d89be9950d1518883b", "shasum": "" }, "require": { @@ -8507,7 +8370,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.10" + "source": "https://github.com/symfony/string/tree/v6.4.11" }, "funding": [ { @@ -8523,7 +8386,7 @@ "type": "tidelift" } ], - "time": "2024-07-22T10:21:14+00:00" + "time": "2024-08-12T09:55:28+00:00" }, { "name": "symfony/translation-contracts", @@ -8605,16 +8468,16 @@ }, { "name": "symfony/validator", - "version": "v6.4.10", + "version": "v6.4.11", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "bcf939a9d1acd7d2912e9474c0c3d7840a03cbcd" + "reference": "4ff41cf10af1de99ad92895411b55c9f309bc2d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/bcf939a9d1acd7d2912e9474c0c3d7840a03cbcd", - "reference": "bcf939a9d1acd7d2912e9474c0c3d7840a03cbcd", + "url": "https://api.github.com/repos/symfony/validator/zipball/4ff41cf10af1de99ad92895411b55c9f309bc2d8", + "reference": "4ff41cf10af1de99ad92895411b55c9f309bc2d8", "shasum": "" }, "require": { @@ -8682,7 +8545,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.10" + "source": "https://github.com/symfony/validator/tree/v6.4.11" }, "funding": [ { @@ -8698,20 +8561,20 @@ "type": "tidelift" } ], - "time": "2024-07-26T12:30:32+00:00" + "time": "2024-08-30T15:57:55+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.10", + "version": "v6.4.11", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "a71cc3374f5fb9759da1961d28c452373b343dd4" + "reference": "ee14c8254a480913268b1e3b1cba8045ed122694" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/a71cc3374f5fb9759da1961d28c452373b343dd4", - "reference": "a71cc3374f5fb9759da1961d28c452373b343dd4", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ee14c8254a480913268b1e3b1cba8045ed122694", + "reference": "ee14c8254a480913268b1e3b1cba8045ed122694", "shasum": "" }, "require": { @@ -8767,7 +8630,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.10" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.11" }, "funding": [ { @@ -8783,7 +8646,7 @@ "type": "tidelift" } ], - "time": "2024-07-26T12:30:32+00:00" + "time": "2024-08-30T16:03:21+00:00" }, { "name": "symfony/var-exporter", @@ -8864,16 +8727,16 @@ }, { "name": "symfony/yaml", - "version": "v6.4.8", + "version": "v6.4.11", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "52903de178d542850f6f341ba92995d3d63e60c9" + "reference": "be37e7f13195e05ab84ca5269365591edd240335" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/52903de178d542850f6f341ba92995d3d63e60c9", - "reference": "52903de178d542850f6f341ba92995d3d63e60c9", + "url": "https://api.github.com/repos/symfony/yaml/zipball/be37e7f13195e05ab84ca5269365591edd240335", + "reference": "be37e7f13195e05ab84ca5269365591edd240335", "shasum": "" }, "require": { @@ -8916,7 +8779,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.8" + "source": "https://github.com/symfony/yaml/tree/v6.4.11" }, "funding": [ { @@ -8932,7 +8795,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-08-12T09:55:28+00:00" }, { "name": "twig/twig", @@ -9013,90 +8876,6 @@ ], "time": "2024-05-16T10:04:27+00:00" }, - { - "name": "vlucas/phpdotenv", - "version": "v5.6.1", - "source": { - "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2", - "shasum": "" - }, - "require": { - "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.3", - "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3", - "symfony/polyfill-ctype": "^1.24", - "symfony/polyfill-mbstring": "^1.24", - "symfony/polyfill-php80": "^1.24" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "ext-filter": "*", - "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" - }, - "suggest": { - "ext-filter": "Required to use the boolean validator." - }, - "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - }, - "branch-alias": { - "dev-master": "5.6-dev" - } - }, - "autoload": { - "psr-4": { - "Dotenv\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "https://github.com/vlucas" - } - ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "support": { - "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1" - }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", - "type": "tidelift" - } - ], - "time": "2024-07-20T21:52:34+00:00" - }, { "name": "webflo/drupal-finder", "version": "1.3.1", @@ -9708,48 +9487,48 @@ }, { "name": "composer/composer", - "version": "2.7.7", + "version": "2.7.8", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "291942978f39435cf904d33739f98d7d4eca7b23" + "reference": "a2edd4e4414c17008ab585e0c62574fdb644ebfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/291942978f39435cf904d33739f98d7d4eca7b23", - "reference": "291942978f39435cf904d33739f98d7d4eca7b23", + "url": "https://api.github.com/repos/composer/composer/zipball/a2edd4e4414c17008ab585e0c62574fdb644ebfc", + "reference": "a2edd4e4414c17008ab585e0c62574fdb644ebfc", "shasum": "" }, "require": { - "composer/ca-bundle": "^1.0", + "composer/ca-bundle": "^1.5", "composer/class-map-generator": "^1.3.3", "composer/metadata-minifier": "^1.0", - "composer/pcre": "^2.1 || ^3.1", + "composer/pcre": "^2.2 || ^3.2", "composer/semver": "^3.3", "composer/spdx-licenses": "^1.5.7", "composer/xdebug-handler": "^2.0.2 || ^3.0.3", - "justinrainbow/json-schema": "^5.2.11", + "justinrainbow/json-schema": "^5.3", "php": "^7.2.5 || ^8.0", "psr/log": "^1.0 || ^2.0 || ^3.0", - "react/promise": "^2.8 || ^3", + "react/promise": "^3.2", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.2", "seld/signal-handler": "^2.0", - "symfony/console": "^5.4.11 || ^6.0.11 || ^7", - "symfony/filesystem": "^5.4 || ^6.0 || ^7", - "symfony/finder": "^5.4 || ^6.0 || ^7", + "symfony/console": "^5.4.35 || ^6.3.12 || ^7.0.3", + "symfony/filesystem": "^5.4.35 || ^6.3.12 || ^7.0.3", + "symfony/finder": "^5.4.35 || ^6.3.12 || ^7.0.3", "symfony/polyfill-php73": "^1.24", "symfony/polyfill-php80": "^1.24", "symfony/polyfill-php81": "^1.24", - "symfony/process": "^5.4 || ^6.0 || ^7" + "symfony/process": "^5.4.35 || ^6.3.12 || ^7.0.3" }, "require-dev": { - "phpstan/phpstan": "^1.11.0", + "phpstan/phpstan": "^1.11.8", "phpstan/phpstan-deprecation-rules": "^1.2.0", "phpstan/phpstan-phpunit": "^1.4.0", "phpstan/phpstan-strict-rules": "^1.6.0", "phpstan/phpstan-symfony": "^1.4.0", - "symfony/phpunit-bridge": "^6.4.1 || ^7.0.1" + "symfony/phpunit-bridge": "^6.4.3 || ^7.0.1" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -9802,7 +9581,7 @@ "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", "security": "https://github.com/composer/composer/security/policy", - "source": "https://github.com/composer/composer/tree/2.7.7" + "source": "https://github.com/composer/composer/tree/2.7.8" }, "funding": [ { @@ -9818,7 +9597,7 @@ "type": "tidelift" } ], - "time": "2024-06-10T20:11:12+00:00" + "time": "2024-08-22T13:28:36+00:00" }, { "name": "composer/metadata-minifier", @@ -9891,26 +9670,26 @@ }, { "name": "composer/pcre", - "version": "3.2.0", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90" + "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/ea4ab6f9580a4fd221e0418f2c357cdd39102a90", - "reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90", + "url": "https://api.github.com/repos/composer/pcre/zipball/63aaeac21d7e775ff9bc9d45021e1745c97521c4", + "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4", "shasum": "" }, "require": { "php": "^7.4 || ^8.0" }, "conflict": { - "phpstan/phpstan": "<1.11.8" + "phpstan/phpstan": "<1.11.10" }, "require-dev": { - "phpstan/phpstan": "^1.11.8", + "phpstan/phpstan": "^1.11.10", "phpstan/phpstan-strict-rules": "^1.1", "phpunit/phpunit": "^8 || ^9" }, @@ -9950,7 +9729,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.2.0" + "source": "https://github.com/composer/pcre/tree/3.3.1" }, "funding": [ { @@ -9966,7 +9745,7 @@ "type": "tidelift" } ], - "time": "2024-07-25T09:36:02+00:00" + "time": "2024-08-27T18:44:43+00:00" }, { "name": "composer/spdx-licenses", @@ -10114,6 +9893,203 @@ ], "time": "2024-05-06T16:37:16+00:00" }, + { + "name": "cucumber/gherkin", + "version": "v24.1.0", + "source": { + "type": "git", + "url": "https://github.com/cucumber/gherkin-php.git", + "reference": "8c78d433150388eddb60c60fa90a65a1b8c58e35" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cucumber/gherkin-php/zipball/8c78d433150388eddb60c60fa90a65a1b8c58e35", + "reference": "8c78d433150388eddb60c60fa90a65a1b8c58e35", + "shasum": "" + }, + "require": { + "cucumber/messages": "^19.0", + "ext-mbstring": "*", + "php": "^8.1" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.5", + "nikic/php-parser": "^4.14", + "phpunit/phpunit": "^9.5", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.24" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cucumber\\Gherkin\\": [ + "src/", + "src-generated/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Gherkin parser", + "support": { + "source": "https://github.com/cucumber/gherkin-php/tree/v24.1.0" + }, + "time": "2022-10-10T18:49:29+00:00" + }, + { + "name": "cucumber/messages", + "version": "v19.1.4", + "source": { + "type": "git", + "url": "https://github.com/cucumber/messages-php.git", + "reference": "042947e90d71e449495a65230470ac0f13786a74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cucumber/messages-php/zipball/042947e90d71e449495a65230470ac0f13786a74", + "reference": "042947e90d71e449495a65230470ac0f13786a74", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^8.1" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.5", + "phpunit/phpunit": "^9.5", + "psalm/plugin-phpunit": "^0.17.0", + "ramsey/uuid": "^4.2.1", + "vimeo/psalm": "^4.18" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cucumber\\Messages\\": [ + "src", + "src-generated" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "JSON schema-based messages for Cucumber's inter-process communication", + "support": { + "source": "https://github.com/cucumber/messages-php/tree/v19.1.4" + }, + "time": "2022-07-27T01:17:26+00:00" + }, + { + "name": "dantleech/gherkin-lint", + "version": "0.2.3", + "source": { + "type": "git", + "url": "https://github.com/dantleech/gherkin-lint-php.git", + "reference": "f3277c4945261d26a3098b5e003b51d815eaed4b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dantleech/gherkin-lint-php/zipball/f3277c4945261d26a3098b5e003b51d815eaed4b", + "reference": "f3277c4945261d26a3098b5e003b51d815eaed4b", + "shasum": "" + }, + "require": { + "cucumber/gherkin": "^24.0", + "cucumber/messages": "^19.0", + "dantleech/invoke": "^2.0", + "php": "^8.1", + "symfony/console": "^5.0|^6.0|^7.0", + "symfony/filesystem": "^5.0|^6.0|^7.0", + "symfony/finder": "^5.0|^6.0|^7.0", + "symfony/string": "^5.1|^6.0|^7.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.8", + "phpunit/phpunit": "^10.5", + "symfony/process": "^6.0", + "symfony/var-dumper": "^6.0", + "vimeo/psalm": "^5.22" + }, + "bin": [ + "bin/gherkinlint" + ], + "type": "project", + "autoload": { + "psr-4": { + "DTL\\GherkinLint\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Leech", + "email": "dan.t.leech@gmail.com" + } + ], + "description": "Gherkin linter", + "support": { + "issues": "https://github.com/dantleech/gherkin-lint-php/issues", + "source": "https://github.com/dantleech/gherkin-lint-php/tree/0.2.3" + }, + "time": "2024-06-08T10:11:58+00:00" + }, + { + "name": "dantleech/invoke", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/dantleech/invoke.git", + "reference": "9b002d746d2c1b86cfa63a47bb5909cee58ef50c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dantleech/invoke/zipball/9b002d746d2c1b86cfa63a47bb5909cee58ef50c", + "reference": "9b002d746d2c1b86cfa63a47bb5909cee58ef50c", + "shasum": "" + }, + "require": { + "php": "^7.2||^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.13", + "phpbench/phpbench": "^1.0", + "phpstan/phpstan": "^0.12.0", + "phpunit/phpunit": "^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "DTL\\Invoke\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "daniel leech", + "email": "daniel@dantleech.com" + } + ], + "description": "Emulate named parameters", + "support": { + "issues": "https://github.com/dantleech/invoke/issues", + "source": "https://github.com/dantleech/invoke/tree/2.0.0" + }, + "time": "2021-05-01T17:22:58+00:00" + }, { "name": "dealerdirect/phpcodesniffer-composer-installer", "version": "v0.7.2", @@ -11670,23 +11646,24 @@ }, { "name": "mikey179/vfsstream", - "version": "v1.6.11", + "version": "v1.6.12", "source": { "type": "git", "url": "https://github.com/bovigo/vfsStream.git", - "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f" + "reference": "fe695ec993e0a55c3abdda10a9364eb31c6f1bf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f", - "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f", + "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/fe695ec993e0a55c3abdda10a9364eb31c6f1bf0", + "reference": "fe695ec993e0a55c3abdda10a9364eb31c6f1bf0", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.1.0" }, "require-dev": { - "phpunit/phpunit": "^4.5|^5.0" + "phpunit/phpunit": "^7.5||^8.5||^9.6", + "yoast/phpunit-polyfills": "^2.0" }, "type": "library", "extra": { @@ -11717,7 +11694,7 @@ "source": "https://github.com/bovigo/vfsStream/tree/master", "wiki": "https://github.com/bovigo/vfsStream/wiki" }, - "time": "2022-02-23T02:02:42+00:00" + "time": "2024-08-29T18:43:31+00:00" }, { "name": "myclabs/deep-copy", @@ -11973,21 +11950,21 @@ }, { "name": "open-telemetry/gen-otlp-protobuf", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/opentelemetry-php/gen-otlp-protobuf.git", - "reference": "76e2a44357f8c3fdcabcb070ec8a59e52ae3e3c3" + "reference": "3aa87bc4d0279ebb53c2917a79f26602625c488e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opentelemetry-php/gen-otlp-protobuf/zipball/76e2a44357f8c3fdcabcb070ec8a59e52ae3e3c3", - "reference": "76e2a44357f8c3fdcabcb070ec8a59e52ae3e3c3", + "url": "https://api.github.com/repos/opentelemetry-php/gen-otlp-protobuf/zipball/3aa87bc4d0279ebb53c2917a79f26602625c488e", + "reference": "3aa87bc4d0279ebb53c2917a79f26602625c488e", "shasum": "" }, "require": { "google/protobuf": "^3.3.0", - "php": "^7.4 || ^8.0" + "php": "^8.0" }, "suggest": { "ext-protobuf": "For better performance, when dealing with the protobuf format" @@ -12032,7 +12009,7 @@ "issues": "https://github.com/open-telemetry/opentelemetry-php/issues", "source": "https://github.com/open-telemetry/opentelemetry-php" }, - "time": "2024-01-16T21:54:57+00:00" + "time": "2024-04-30T18:28:30+00:00" }, { "name": "open-telemetry/sdk", @@ -12119,16 +12096,16 @@ }, { "name": "open-telemetry/sem-conv", - "version": "1.25.0", + "version": "1.27.1", "source": { "type": "git", "url": "https://github.com/opentelemetry-php/sem-conv.git", - "reference": "23f457ba390847647a17068e0095d9ffe9a4824c" + "reference": "1dba705fea74bc0718d04be26090e3697e56f4e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opentelemetry-php/sem-conv/zipball/23f457ba390847647a17068e0095d9ffe9a4824c", - "reference": "23f457ba390847647a17068e0095d9ffe9a4824c", + "url": "https://api.github.com/repos/opentelemetry-php/sem-conv/zipball/1dba705fea74bc0718d04be26090e3697e56f4e6", + "reference": "1dba705fea74bc0718d04be26090e3697e56f4e6", "shasum": "" }, "require": { @@ -12172,7 +12149,7 @@ "issues": "https://github.com/open-telemetry/opentelemetry-php/issues", "source": "https://github.com/open-telemetry/opentelemetry-php" }, - "time": "2024-04-09T23:31:35+00:00" + "time": "2024-08-28T09:20:31+00:00" }, { "name": "palantirnet/drupal-rector", @@ -13181,16 +13158,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.29.1", + "version": "1.30.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" + "reference": "5ceb0e384997db59f38774bf79c2a6134252c08f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", - "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/5ceb0e384997db59f38774bf79c2a6134252c08f", + "reference": "5ceb0e384997db59f38774bf79c2a6134252c08f", "shasum": "" }, "require": { @@ -13222,22 +13199,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.30.0" }, - "time": "2024-05-31T08:52:43+00:00" + "time": "2024-08-29T09:54:52+00:00" }, { "name": "phpstan/phpstan", - "version": "1.11.11", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "707c2aed5d8d0075666e673a5e71440c1d01a5a3" + "reference": "384af967d35b2162f69526c7276acadce534d0e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/707c2aed5d8d0075666e673a5e71440c1d01a5a3", - "reference": "707c2aed5d8d0075666e673a5e71440c1d01a5a3", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/384af967d35b2162f69526c7276acadce534d0e1", + "reference": "384af967d35b2162f69526c7276acadce534d0e1", "shasum": "" }, "require": { @@ -13282,7 +13259,7 @@ "type": "github" } ], - "time": "2024-08-19T14:37:29+00:00" + "time": "2024-08-27T09:18:05+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -13936,21 +13913,21 @@ }, { "name": "rector/rector", - "version": "1.2.3", + "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "2433e95410aef1b34b15d7f1b6a134365a4ddb39" + "reference": "42a4aa23b48b4cfc8ebfeac2b570364e27744381" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/2433e95410aef1b34b15d7f1b6a134365a4ddb39", - "reference": "2433e95410aef1b34b15d7f1b6a134365a4ddb39", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/42a4aa23b48b4cfc8ebfeac2b570364e27744381", + "reference": "42a4aa23b48b4cfc8ebfeac2b570364e27744381", "shasum": "" }, "require": { "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.11.9" + "phpstan/phpstan": "^1.11.11" }, "conflict": { "rector/rector-doctrine": "*", @@ -13983,7 +13960,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/1.2.3" + "source": "https://github.com/rectorphp/rector/tree/1.2.4" }, "funding": [ { @@ -13991,7 +13968,7 @@ "type": "github" } ], - "time": "2024-08-12T16:36:46+00:00" + "time": "2024-08-23T09:03:01+00:00" }, { "name": "sebastian/cli-parser", @@ -15543,16 +15520,16 @@ }, { "name": "symfony/http-client", - "version": "v6.4.10", + "version": "v6.4.11", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "b5e498f763e0bf5eed8dcd946e50a3b3f71d4ded" + "reference": "4c92046bb788648ff1098cc66da69aa7eac8cb65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/b5e498f763e0bf5eed8dcd946e50a3b3f71d4ded", - "reference": "b5e498f763e0bf5eed8dcd946e50a3b3f71d4ded", + "url": "https://api.github.com/repos/symfony/http-client/zipball/4c92046bb788648ff1098cc66da69aa7eac8cb65", + "reference": "4c92046bb788648ff1098cc66da69aa7eac8cb65", "shasum": "" }, "require": { @@ -15616,7 +15593,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.10" + "source": "https://github.com/symfony/http-client/tree/v6.4.11" }, "funding": [ { @@ -15632,7 +15609,7 @@ "type": "tidelift" } ], - "time": "2024-07-15T09:26:24+00:00" + "time": "2024-08-26T06:30:21+00:00" }, { "name": "symfony/http-client-contracts", @@ -15793,16 +15770,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v6.4.10", + "version": "v6.4.11", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "ad510515b11ba5291fdd59b25d70227bfac2d7ab" + "reference": "168f412dcd6caf3813a9cc0f286cd68f6a76f070" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/ad510515b11ba5291fdd59b25d70227bfac2d7ab", - "reference": "ad510515b11ba5291fdd59b25d70227bfac2d7ab", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/168f412dcd6caf3813a9cc0f286cd68f6a76f070", + "reference": "168f412dcd6caf3813a9cc0f286cd68f6a76f070", "shasum": "" }, "require": { @@ -15855,7 +15832,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.10" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.11" }, "funding": [ { @@ -15871,7 +15848,7 @@ "type": "tidelift" } ], - "time": "2024-07-26T12:30:32+00:00" + "time": "2024-08-13T14:27:37+00:00" }, { "name": "symfony/polyfill-php73", @@ -16322,7 +16299,7 @@ }, "platform-dev": [], "platform-overrides": { - "php": "8.3.9" + "php": "8.3.10" }, "plugin-api-version": "2.6.0" } diff --git a/docker-compose.override.default.yml b/docker-compose.override.default.yml deleted file mode 100644 index 92da5b1..0000000 --- a/docker-compose.override.default.yml +++ /dev/null @@ -1,9 +0,0 @@ -# Local container services overrides. -# -# Copy this file to docker-compose.override.yml and set relevant values. -# docker-compose.override.yml is excluded from the repository, - -services: - chrome: - # Chrome image with Apple M1 support. - image: seleniarm/standalone-chromium:111.0 diff --git a/docker-compose.yml b/docker-compose.yml index 21fa0d3..fc3fa51 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,7 +7,7 @@ # - Use inline comments containing '###' to have the line removed in CI. # - Use inline comments starting with '##' to have the line being automatically # uncommented in CI. -# See more about Docker at https://docs.drevops.com/docker/ +# See more about Docker at https://vortex.drevops.com/docker/ # For YAML support of anchors and references, see http://blog.daemonl.com/2016/02/yaml.html # ------------------------------------------------------------------------------ @@ -15,7 +15,7 @@ # ------------------------------------------------------------------------------ # Volumes available in each container to share application data. -# See more about Docker host volume mounting at https://docs.drevops.com/docker#host-volume-mounting-in-docker-based-projects +# See more about Docker host volume mounting at https://vortex.drevops.com/docker#host-volume-mounting-in-docker-based-projects x-volumes: &default-volumes volumes: # All application files mounted into container. @@ -34,9 +34,9 @@ x-user: &default-user # Environment variables set in all containers during build and runtime. # Note that these variables are not read from here in Lagoon environment. x-environment: &default-environment - TZ: ${DREVOPS_TZ:-Australia/Melbourne} + TZ: ${VORTEX_TZ:-Australia/Melbourne} # Local development URL. - DREVOPS_LOCALDEV_URL: &default-url ${COMPOSE_PROJECT_NAME:-example-site}.docker.amazee.io + VORTEX_LOCALDEV_URL: &default-url ${COMPOSE_PROJECT_NAME:-example-site}.docker.amazee.io # Local development route used in Lagoon images and Pygmy to route requests. LAGOON_ROUTE: *default-url # Local database host (not used in production). @@ -53,8 +53,6 @@ x-environment: &default-environment XDEBUG_ENABLE: ${XDEBUG_ENABLE:-} # Pass-through 'CI' variable used to identify the CI environment. CI: ${CI:-} - # Forward emails to Mailhog locally. - SSMTP_MAILHUB: ${SSMTP_MAILHUB:-host.docker.internal:1025} # Path to configuration files. DRUPAL_CONFIG_PATH: ${DRUPAL_CONFIG_PATH:-/app/config/default} # Drupal file paths. @@ -66,8 +64,6 @@ x-environment: &default-environment DRUPAL_SHIELD_PASS: ${DRUPAL_SHIELD_PASS:-} # Redis integration flag. DRUPAL_REDIS_ENABLED: ${DRUPAL_REDIS_ENABLED:-} - # Lagoon environment type. - LAGOON_ENVIRONMENT_TYPE: ${LAGOON_ENVIRONMENT_TYPE:-local} # ------------------------------------------------------------------------------ # Services. @@ -80,7 +76,7 @@ services: context: . dockerfile: .docker/cli.dockerfile args: - WEBROOT: "${DREVOPS_WEBROOT:-web}" + WEBROOT: "${VORTEX_WEBROOT:-web}" GITHUB_TOKEN: "${GITHUB_TOKEN:-}" image: &cli-image ${COMPOSE_PROJECT_NAME:-example_site} @@ -102,7 +98,7 @@ services: dockerfile: .docker/nginx-drupal.dockerfile args: CLI_IMAGE: *cli-image - WEBROOT: "${DREVOPS_WEBROOT:-web}" + WEBROOT: "${VORTEX_WEBROOT:-web}" DRUPAL_CONFIG_PATH: ${DRUPAL_CONFIG_PATH:-/app/config/default} DRUPAL_PUBLIC_FILES: ${DRUPAL_PUBLIC_FILES:-/app/web/sites/default/files} DRUPAL_PRIVATE_FILES: ${DRUPAL_PRIVATE_FILES:-/app/web/sites/default/files/private} @@ -144,7 +140,7 @@ services: context: . dockerfile: .docker/mariadb.dockerfile args: - IMAGE: "${DREVOPS_DB_IMAGE:-uselagoon/mariadb-10.11-drupal:24.7.0}" # Use custom database image (if defined) or fallback to standard database image. + IMAGE: "${VORTEX_DB_IMAGE:-uselagoon/mariadb-10.11-drupal:24.8.0}" # Use custom database image (if defined) or fallback to standard database image. <<: *default-user environment: <<: *default-environment @@ -154,7 +150,7 @@ services: lagoon.type: mariadb # See https://docs.lagoon.sh/using-lagoon-advanced/service-types/ redis: - image: uselagoon/redis-6:24.7.0 + image: uselagoon/redis-6:24.8.0 labels: lagoon.type: redis # Change to 'none' if dedicated Redis service is used. See https://docs.lagoon.sh/using-lagoon-advanced/service-types/ @@ -180,19 +176,21 @@ services: context: . dockerfile: .docker/clamav.dockerfile ports: - - "3310" # Find port on host with `docker-compose port clamav 3310`. + - "3310" # Find port on host with `docker compose port clamav 3310`. environment: << : *default-environment networks: - default labels: - lagoon.type: basic # See https://docs.lagoon.sh/using-lagoon-advanced/service-types/ - lagoon.service.port: 3310 + lagoon.type: basic + lagoon.service.port: 3310 # See https://docs.lagoon.sh/using-lagoon-advanced/service-types/ lagoon.autogeneratedroute: false # Chrome container, used for browser testing. chrome: - image: selenium/standalone-chrome:111.0 + image: selenium/standalone-chromium:128.0 + ports: + - "7900" # Find port on host with `docker compose port chrome 7900`. shm_size: '1gb' # Increase '/dev/shm' partition size to avoid browser crashing. <<: *default-volumes # Use default volumes to provide access to test fixtures. environment: diff --git a/docs/ci.md b/docs/ci.md index 7f6ff82..953b2f3 100644 --- a/docs/ci.md +++ b/docs/ci.md @@ -10,7 +10,7 @@ production backups into fully built codebase and runs code linting and tests. When tests pass, a deployment process is triggered for nominated branches (usually, `master` and `develop`). -Refer to https://docs.drevops.com/latest/usage/ci for more information. +Refer to https://vortex.drevops.com/latest/usage/ci for more information. ## Skipping CI build diff --git a/docs/deployment.md b/docs/deployment.md index 5053a7e..eadd3c5 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -1,6 +1,6 @@ # Deployment process -Refer to https://docs.drevops.com/latest/usage/deploy for more information. +Refer to https://vortex.drevops.com/latest/usage/deploy for more information. ## Workflow @@ -25,6 +25,6 @@ To fresh the database in the existing Lagoon environment with the database from production environment, run: ``` -DREVOPS_DEPLOY_BRANCH= DREVOPS_DEPLOY_ACTION=deploy_override_db ahoy deploy +VORTEX_DEPLOY_BRANCH= VORTEX_DEPLOY_ACTION=deploy_override_db ahoy deploy ``` diff --git a/docs/faqs.md b/docs/faqs.md index 136d698..d5e1ecd 100644 --- a/docs/faqs.md +++ b/docs/faqs.md @@ -91,7 +91,7 @@ ahoy drush sql-cli < .data/db.sql But better: ```bash -DREVOPS_PROVISION_POST_OPERATIONS_SKIP=1 ahoy provision +VORTEX_PROVISION_POST_OPERATIONS_SKIP=1 ahoy provision ``` ## How to add Drupal modules @@ -118,7 +118,7 @@ composer require drupal/module_name 2. Run ```bash -composer update --lock` +composer update --lock ``` ## Behat tests with `@javascript` tag sometimes get stuck diff --git a/docs/onboarding.md b/docs/onboarding.md index 3eb7239..908d40e 100644 --- a/docs/onboarding.md +++ b/docs/onboarding.md @@ -2,7 +2,7 @@ Onboarding checklist ==================== Use this checklist to track the process of migration of the existing site -to Scaffold. This file is intended to be committed into repository until +to Vortex. This file is intended to be committed into repository until onboarding process is finished. Put a `x` into `[ ]` if this step was executed OR not required - this will @@ -30,16 +30,16 @@ indicate that it was addressed. ckeditor@4.3.2, https://www.ckeditor.com/archive/ckeditor_4.3.2.zip ``` -## 2. Adding Scaffold +## 2. Adding Vortex - [ ] Create a new GitHub repository, if required: - [ ] Commit generic `README.md` file and push to `master` branch. - [ ] Create new branch `ci`, copy all files from existing repository and push to remote. -- [ ] Add Scaffold configuration using installer script and follow +- [ ] Add Vortex configuration using installer script and follow instructions in `README.md` file added to your project. You will need to commit some files and push them to remote. Note: try to rely on the - default configuration provided by Scaffold as much as possible + default configuration provided by Vortex as much as possible (otherwise you are assuming maintenance responsibility for this custom code). - [ ] Using list of **modules** from "Assessing current site" step, update @@ -103,7 +103,7 @@ indicate that it was addressed. ## 5. Cleanup -- [ ] Cleanup code or set `DREVOPS_CI_LINT_ALLOW_FAILURE=1` in CircleCI to +- [ ] Cleanup code or set `VORTEX_CI_LINT_ALLOW_FAILURE=1` in CircleCI to bypass code linting fails: - [ ] Cleanup PHP code - [ ] Cleanup JS code diff --git a/docs/releasing.md b/docs/releasing.md index 33597fa..a368bc1 100644 --- a/docs/releasing.md +++ b/docs/releasing.md @@ -6,7 +6,7 @@ manage releases. Note: after completing the release, commits must be manually pushed from `master` to `production` branch. -Refer to https://docs.drevops.com/latest/usage/release for more information. +Refer to https://vortex.drevops.com/latest/usage/release for more information. ## Release outcome @@ -21,17 +21,17 @@ Refer to https://docs.drevops.com/latest/usage/release for more information. 6. The hash of the `HEAD` of the `production` branch matches the hash of the `HEAD` of `master` branch. -## Version Number +## Version Number - CalVer -Release versions are numbered according to [Semantic Versioning](https://semver.org/). +Release versions are numbered according to [CalVer Versioning](https://calver.org/). -Given a version number `X.Y.Z`: +Given a version number `YY.M.Z`: -* `X` = Major release version. No leading zeroes. -* `Y` = Minor Release version. No leading zeroes. +* `YY` = Short year. No leading zeroes. +* `M` = Short month. No leading zeroes. * `Z` = Hotfix/patch version. No leading zeroes. Examples: -* Correct: `0.1.0`, `1.0.0` , `1.0.1` , `1.0.10` -* Incorrect: `0.1` , `1` , `1.0` , `1.0.01` , `1.0.010` +* Correct: `24.1.0`, `24.11.1` , `24.1.10`, `24.0.1`, `9.12.0` +* Incorrect: `24.0.0`, `2024.1.1` , `24` , `24.1.00` , `24.01.0` , `01.1.0` diff --git a/docs/testing.md b/docs/testing.md index c217b6b..a0066d8 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -1,3 +1,3 @@ # Testing -Refer to https://docs.drevops.com/latest/workflow/test/ for more information. +Refer to https://vortex.drevops.com/latest/workflow/test/ for more information. diff --git a/gherkinlint.json b/gherkinlint.json new file mode 100644 index 0000000..49de865 --- /dev/null +++ b/gherkinlint.json @@ -0,0 +1,16 @@ +{ + "rules": { + "indentation": { + "width": 2 + }, + "keyword-order": { + "enabled": false + }, + "no-homogenous-tags": { + "enabled": false + }, + "scenario-size": { + "enabled": false + } + } +} diff --git a/phpmd.xml b/phpmd.xml index d5c5c73..4eb7e24 100644 --- a/phpmd.xml +++ b/phpmd.xml @@ -9,6 +9,7 @@ */node_modules/* */web/core/* + */web/libraries/* */web/profiles/contrib/* */web/modules/contrib/* */web/themes/contrib/* diff --git a/phpstan.neon b/phpstan.neon index fa75d01..990c926 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -11,7 +11,7 @@ parameters: level: 7 - phpVersion: 80300 + phpVersion: 80310 paths: - web/modules/custom diff --git a/phpunit.xml b/phpunit.xml index 7088476..b608145 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -76,7 +76,7 @@ - +