From 3d6ac5cba448d97c9773b9ffd63090b88b3764cb Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Tue, 31 Oct 2023 15:48:01 -0700 Subject: [PATCH 01/21] gitignore public/private key for oauth --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 39f475fda7..89b52fc6b7 100644 --- a/.gitignore +++ b/.gitignore @@ -104,6 +104,9 @@ datadog-setup.php # Ignore Next (next-build) next +# Ignore oauth keys used for validating next-build preview api requests +public.key +private.key # Temporary .deb packages *.deb From 5f10440b1064cccb62b11ba37e2ac1ba80d375bc Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Tue, 31 Oct 2023 16:09:55 -0700 Subject: [PATCH 02/21] export config for simple_oauth and next js site --- .../sync/next.next_site.next_build_preview_server.yml | 11 +++++++++++ config/sync/simple_oauth.settings.yml | 4 +++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 config/sync/next.next_site.next_build_preview_server.yml diff --git a/config/sync/next.next_site.next_build_preview_server.yml b/config/sync/next.next_site.next_build_preview_server.yml new file mode 100644 index 0000000000..3e3a99c8bb --- /dev/null +++ b/config/sync/next.next_site.next_build_preview_server.yml @@ -0,0 +1,11 @@ +uuid: 75dd1bfb-8507-4981-90b6-3830400e1434 +langcode: en +status: true +dependencies: { } +id: next_build_preview_server +label: 'Next Build Preview Server' +base_url: 'http://localhost:3000' +preview_url: 'http://localhost:3000/api/preview' +preview_secret: secret +revalidate_url: '' +revalidate_secret: '' diff --git a/config/sync/simple_oauth.settings.yml b/config/sync/simple_oauth.settings.yml index f58228bc1d..0cffd710fb 100644 --- a/config/sync/simple_oauth.settings.yml +++ b/config/sync/simple_oauth.settings.yml @@ -3,7 +3,9 @@ _core: access_token_expiration: 300 authorization_code_expiration: 300 refresh_token_expiration: 1209600 -remember_clients: true token_cron_batch_size: 0 +public_key: ../public.key +private_key: ../private.key +remember_clients: true use_implicit: false disable_openid_connect: false From 78d8571413c5f4d2f64d209635fb30986eebc9f3 Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Tue, 31 Oct 2023 17:10:41 -0700 Subject: [PATCH 03/21] use simple oauth for preview in next --- config/sync/next.settings.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/sync/next.settings.yml b/config/sync/next.settings.yml index 19893cfd6f..6d1945a747 100644 --- a/config/sync/next.settings.yml +++ b/config/sync/next.settings.yml @@ -6,3 +6,7 @@ site_previewer_configuration: width: 100% sync_route: false sync_route_skip_routes: '' +preview_url_generator: simple_oauth +preview_url_generator_configuration: + secret_expiration: 300 +debug: false From 67235457d100edea789309329a633b81cc763fbb Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Wed, 1 Nov 2023 08:12:16 -0700 Subject: [PATCH 04/21] echo keys to files in tugboat --- .tugboat/config.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.tugboat/config.yml b/.tugboat/config.yml index c4a7c97f68..0a0451dfff 100644 --- a/.tugboat/config.yml +++ b/.tugboat/config.yml @@ -104,6 +104,10 @@ services: - cp "${TUGBOAT_ROOT}"/.tugboat/*.crt /usr/local/share/ca-certificates - update-ca-certificates + # Write OAuth keys to files for next-build Preview Server validation + - echo ${OAUTH_PUBLIC_KEY} >> ${TUGBOAT_ROOT}/public.key + - echo ${OAUTH_PRIVATE_KEY} >> ${TUGBOAT_ROOT}/private.key + # Install drush-launcher, if desired. - wget -O /usr/local/bin/drush https://github.com/drush-ops/drush-launcher/releases/download/0.6.0/drush.phar - chmod +x /usr/local/bin/drush From 383e2aaec3cdb080461d55c5edd222d715c161cf Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Wed, 1 Nov 2023 10:03:42 -0700 Subject: [PATCH 05/21] add other env vars where they need to be --- .tugboat/config.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.tugboat/config.yml b/.tugboat/config.yml index 0a0451dfff..6eaa4be95e 100644 --- a/.tugboat/config.yml +++ b/.tugboat/config.yml @@ -237,9 +237,14 @@ services: - find -L "${DOCROOT}/vendor/va-gov/content-build/node_modules/.bin" -type f -exec chmod +x {} \+ - find "${DOCROOT}/vendor/va-gov/content-build/script" -type f -exec chmod +x {} \+ - # Build storybook and the frontends in parallel + # Build storybook and the frontends (web, next) in parallel - bash -lc 'time task --taskfile=tugboat.yml' - # Build next build server + + # Put necessary env variables in place for next's Drupal Preview before starting server + - echo "DRUPAL_CLIENT_ID=${DRUPAL_CLIENT_ID}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat + - echo "DRUPAL_CLIENT_SECRET=${DRUPAL_CLIENT_SECRET}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat + + # Start the next build server - bash -lc 'composer va:next:start' memcache: From 6cc308bdc81657c9411edb4d09eeabed40d83202 Mon Sep 17 00:00:00 2001 From: Jill Adams <85581471+jilladams@users.noreply.github.com> Date: Tue, 31 Oct 2023 15:20:30 -0700 Subject: [PATCH 06/21] [docs] Update and rename pw-dark-launch.md to dark-launch.md --- .../{pw-dark-launch.md => dark-launch.md} | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) rename .github/ISSUE_TEMPLATE/{pw-dark-launch.md => dark-launch.md} (85%) diff --git a/.github/ISSUE_TEMPLATE/pw-dark-launch.md b/.github/ISSUE_TEMPLATE/dark-launch.md similarity index 85% rename from .github/ISSUE_TEMPLATE/pw-dark-launch.md rename to .github/ISSUE_TEMPLATE/dark-launch.md index 56e17a93de..e89a437c4b 100644 --- a/.github/ISSUE_TEMPLATE/pw-dark-launch.md +++ b/.github/ISSUE_TEMPLATE/dark-launch.md @@ -1,10 +1,9 @@ --- -name: "(PW) Dark launch request" -about: Request to dark launch CMS content that includes React widget, owned by Public - Websites team +name: "Dark launch request" +about: Request to dark launch CMS content that includes React widget, owned by CMS team title: 'CMS/React content dark launch request: ' -labels: Drupal engineering, Needs refining, Public Websites, VA.gov frontend -assignees: jilladams, FranECross +labels: Drupal engineering, Needs analysis, CMS Team +assignees: BerniXiongA6 --- @@ -27,7 +26,7 @@ CMS team does not want to get in the habit of having staged nodes that will not * **Target production launch date:** * **What is driving and/or blocking prod launch date?** -# For PW use +# For CMS Team use ## Tasks Please tick the boxes for completed steps as we go, for cross-team visibility. - [ ] Technical POC has merged vets-website code to main & confirmed deploy to prod @@ -41,11 +40,3 @@ Please tick the boxes for completed steps as we go, for cross-team visibility. - [ ] Page is verified: Live on Staging - [ ] Page is **not** live on Prod - [ ] Ticket is cut for production launch planning, e.g. #10627 - -### Team -Please check the team(s) that will do this work. - -- [ ] `CMS Team` -- [X] `Public Websites` -- [ ] `Facilities` -- [ ] `User support` From 500c3af522b3f585e66568132527df58ea22cdc3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 31 Oct 2023 20:20:27 -0500 Subject: [PATCH 07/21] Bump datadog/dd-trace from 0.92.2 to 0.93.1 (#15937) Bumps [datadog/dd-trace](https://github.com/DataDog/dd-trace-php) from 0.92.2 to 0.93.1. - [Release notes](https://github.com/DataDog/dd-trace-php/releases) - [Commits](https://github.com/DataDog/dd-trace-php/compare/0.92.2...0.93.1) --- updated-dependencies: - dependency-name: datadog/dd-trace dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/composer.json b/composer.json index 462d554024..ac7b9e7ce9 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ "composer/installers": "^2.2.0", "consolidation/site-process": "^4.1", "cweagans/composer-patches": "^1.7", - "datadog/dd-trace": "^0.92.0", + "datadog/dd-trace": "^0.93.1", "dealerdirect/phpcodesniffer-composer-installer": "0.7.2", "drupal/address": "^1.4", "drupal/admin_feedback": "^2.2", diff --git a/composer.lock b/composer.lock index 8c34570ad0..f09f6769f9 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": "cd4bfc06930802b2039d8aac1efe4f02", + "content-hash": "82996f44bb9b21fc4e4a683b792d9d6a", "packages": [ { "name": "alchemy/zippy", @@ -1271,16 +1271,16 @@ }, { "name": "datadog/dd-trace", - "version": "0.92.2", + "version": "0.93.1", "source": { "type": "git", "url": "https://github.com/DataDog/dd-trace-php.git", - "reference": "d1546b6ea4dded0a23d0640fd91ea5536d6fdaa7" + "reference": "db7c775277d21e39d43bec8bd375c59d4b12c12c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DataDog/dd-trace-php/zipball/d1546b6ea4dded0a23d0640fd91ea5536d6fdaa7", - "reference": "d1546b6ea4dded0a23d0640fd91ea5536d6fdaa7", + "url": "https://api.github.com/repos/DataDog/dd-trace-php/zipball/db7c775277d21e39d43bec8bd375c59d4b12c12c", + "reference": "db7c775277d21e39d43bec8bd375c59d4b12c12c", "shasum": "" }, "require": { @@ -1359,9 +1359,9 @@ ], "support": { "issues": "https://github.com/DataDog/dd-trace-php/issues", - "source": "https://github.com/DataDog/dd-trace-php/tree/0.92.2" + "source": "https://github.com/DataDog/dd-trace-php/tree/0.93.1" }, - "time": "2023-10-06T14:25:02+00:00" + "time": "2023-10-31T16:10:59+00:00" }, { "name": "davedevelopment/stiphle", From 65d6b69c0c197af883cbc760aace0e5c1a83f13b Mon Sep 17 00:00:00 2001 From: Nate Douglas Date: Wed, 1 Nov 2023 08:27:32 -0400 Subject: [PATCH 08/21] VACMS-14342: Set up `CODEOWNERS` (#15581) * VACMS-14342: Set up CODEOWNERS * h/t Dave * h/t Tanner * h/t Dave * Update .github/CODEOWNERS * Apply suggestions from code review h/t @swirtSJW --- .github/CODEOWNERS | 134 ++++++++++++++++++++++++++++++++++++++---- READMES/codeowners.md | 29 +++++++++ 2 files changed, 151 insertions(+), 12 deletions(-) create mode 100644 READMES/codeowners.md diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 10c8d8e49e..701cd31515 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,23 +1,133 @@ # Lines starting with '#' are comments. # Each line is a file pattern followed by one or more owners. - -# More details are here: https://help.github.com/articles/about-codeowners/ - # The '*' pattern is global owners. - # Order is important. The last matching pattern has the most precedence. -# The folders are ordered as follows: -# In each subsection folders are ordered first by depth, then alphabetically. -# This should make it easy to add new rules without breaking existing ones. +# More details are here: https://help.github.com/articles/about-codeowners/ # CMS teams: See https://github.com/orgs/department-of-veterans-affairs/teams?query=cms for full list +# Also see https://github.com/department-of-veterans-affairs/va.gov-cms/issues/15563 re: cleanup +# # @department-of-veterans-affairs/cms-infrastructure +# @department-of-veterans-affairs/facilities-cms +# @department-of-veterans-affairs/public-websites-cms # @department-of-veterans-affairs/vfs-cms-team -# @department-of-veterans-affairs/vfs-cms-team-core -# @department-of-veterans-affairs/vfs-cms-team-product -# @department-of-veterans-affairs/vfs-cms-team-infrastructure -# Global rule: -# @department-of-veterans-affairs/vfs-cms-team +# By default, ownership reverts to platform-cms-drupal-engineers +* @department-of-veterans-affairs/platform-cms-drupal-engineers + +# Local/Codespaces/Tugboat/GitHub stuff belongs to DevOps... +/.ddev/ @department-of-veterans-affairs/platform-cms-devops-engineers +/.devcontainer/ @department-of-veterans-affairs/platform-cms-devops-engineers +/.dumps/ @department-of-veterans-affairs/platform-cms-devops-engineers +/.github/ @department-of-veterans-affairs/platform-cms-devops-engineers +/.storybook/ @department-of-veterans-affairs/platform-cms-ux @department-of-veterans-affairs/platform-cms-accessibility +/.tugboat/ @department-of-veterans-affairs/platform-cms-devops-engineers +/.vscode/ # @department-of-veterans-affairs/platform-cms-drupal-engineers +/bin/ @department-of-veterans-affairs/platform-cms-devops-engineers + +# Config belongs to anyone by default. +/config/ @department-of-veterans-affairs/vfs-cms-team +/config/sync/ # @department-of-veterans-affairs/vfs-cms-team +# aka VAMC System Banner Alert with Situation Updates +/config/sync/*full_width_banner_alert* @department-of-veterans-affairs/facilities-cms +# To catch VAMC stuff with older naming convention +/config/sync/*health_care* @department-of-veterans-affairs/facilities-cms +/config/sync/*jsonapi* @department-of-veterans-affairs/accelerated-publishing +# aka VAMC System Locations List +/config/sync/*locations_listing* @department-of-veterans-affairs/facilities-cms +/config/sync/*nca* @department-of-veterans-affairs/facilities-cms +/config/sync/*vamc* @department-of-veterans-affairs/facilities-cms +/config/sync/*vba* @department-of-veterans-affairs/facilities-cms +/config/sync/*vet_center* @department-of-veterans-affairs/facilities-cms +/docroot/ # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/cypress/ @department-of-veterans-affairs/platform-cms-qa +/docroot/design-system/ @department-of-veterans-affairs/platform-cms-ux +/docroot/modules/ # @department-of-veterans-affairs/platform-cms-drupal-engineers + +# Custom modules should be owned by the teams with primary responsibility for maintaining them. +/docroot/modules/custom/va_gov_api @department-of-veterans-affairs/accelerated-publishing +/docroot/modules/custom/va_gov_backend # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_banner # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_benefits @department-of-veterans-affairs/public-websites-cms +/docroot/modules/custom/va_gov_block_types # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_build_trigger # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_bulk # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_clone # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_clp # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_consumers @department-of-veterans-affairs/facilities-cms @department-of-veterans-affairs/public-websites-cms +/docroot/modules/custom/va_gov_content_release # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_content_types @department-of-veterans-affairs/platform-cms-drupal-engineers @department-of-veterans-affairs/public-websites-cms @department-of-veterans-affairs/facilities-cms +/docroot/modules/custom/va_gov_dashboards @department-of-veterans-affairs/platform-cms-drupal-engineers @department-of-veterans-affairs/facilities-cms +/docroot/modules/custom/va_gov_db # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_entity_browser @department-of-veterans-affairs/public-websites-cms +/docroot/modules/custom/va_gov_environment # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_events @department-of-veterans-affairs/public-websites-cms +/docroot/modules/custom/va_gov_facilities @department-of-veterans-affairs/facilities-cms +/docroot/modules/custom/va_gov_flags @department-of-veterans-affairs/platform-cms-drupal-engineers @department-of-veterans-affairs/public-websites-cms @department-of-veterans-affairs/facilities-cms +/docroot/modules/custom/va_gov_git # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_github # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_govdelivery @department-of-veterans-affairs/facilities-cms +/docroot/modules/custom/va_gov_graphql # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_header_footer @department-of-veterans-affairs/public-websites-cms +/docroot/modules/custom/va_gov_help_center # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_home @department-of-veterans-affairs/public-websites-cms +/docroot/modules/custom/va_gov_links # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_live_field_migration # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_login # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_lovell @department-of-veterans-affairs/facilities-cms +/docroot/modules/custom/va_gov_magichead @department-of-veterans-affairs/public-websites-cms +/docroot/modules/custom/va_gov_media # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_menu_access # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_menus # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_migrate @department-of-veterans-affairs/facilities-cms @department-of-veterans-affairs/public-websites-cms +/docroot/modules/custom/va_gov_multilingual # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_notifications @department-of-veterans-affairs/platform-cms-drupal-engineers @department-of-veterans-affairs/facilities-cms +/docroot/modules/custom/va_gov_post_api @department-of-veterans-affairs/facilities-cms +/docroot/modules/custom/va_gov_preview # @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/modules/custom/va_gov_profile @department-of-veterans-affairs/facilities-cms +/docroot/modules/custom/va_gov_resources_and_support @department-of-veterans-affairs/public-websites-cms +/docroot/modules/custom/va_gov_user @department-of-veterans-affairs/platform-cms-drupal-engineers @department-of-veterans-affairs/facilities-cms @department-of-veterans-affairs/public-websites-cms +/docroot/modules/custom/va_gov_vamc @department-of-veterans-affairs/facilities-cms +/docroot/modules/custom/va_gov_vba_facility @department-of-veterans-affairs/facilities-cms +/docroot/modules/custom/va_gov_vet_center @department-of-veterans-affairs/facilities-cms +/docroot/modules/custom/va_gov_workflow @department-of-veterans-affairs/platform-cms-drupal-engineers @department-of-veterans-affairs/facilities-cms @department-of-veterans-affairs/public-websites-cms +/docroot/modules/custom/va_gov_workflow_assignments # @department-of-veterans-affairs/platform-cms-drupal-engineers + +/docroot/profiles/ @department-of-veterans-affairs/platform-cms-qa +/docroot/scripts/ @department-of-veterans-affairs/platform-cms-devops-engineers +/docroot/simplesaml/ @department-of-veterans-affairs/platform-cms-devops-engineers +/docroot/sites/ @department-of-veterans-affairs/platform-cms-devops-engineers @department-of-veterans-affairs/platform-cms-drupal-engineers +/docroot/themes/ @department-of-veterans-affairs/platform-cms-ux @department-of-veterans-affairs/platform-cms-accessibility +/drush/ # @department-of-veterans-affairs/platform-cms-drupal-engineers +/hooks/ @department-of-veterans-affairs/platform-cms-devops-engineers +/patches/ # @department-of-veterans-affairs/platform-cms-drupal-engineers +/scripts/ @department-of-veterans-affairs/platform-cms-devops-engineers +/tests/ @department-of-veterans-affairs/platform-cms-qa +/tests/cypress/ # @department-of-veterans-affairs/platform-cms-qa +/tests/phpunit/ # @department-of-veterans-affairs/platform-cms-qa +/tests/scripts/ @department-of-veterans-affairs/platform-cms-qa @department-of-veterans-affairs/platform-cms-devops-engineers +.env.example @department-of-veterans-affairs/platform-cms-devops-engineers +.gitattributes @department-of-veterans-affairs/platform-cms-devops-engineers +.gitignore @department-of-veterans-affairs/platform-cms-devops-engineers +.web @department-of-veterans-affairs/platform-cms-devops-engineers +composer.json # @department-of-veterans-affairs/platform-cms-drupal-engineers +composer.lock # @department-of-veterans-affairs/platform-cms-drupal-engineers +cypress.config.js @department-of-veterans-affairs/platform-cms-qa +Jenkinsfile.cd @department-of-veterans-affairs/platform-cms-devops-engineers +multi-reporter-config.json @department-of-veterans-affairs/platform-cms-qa +package-lock.json # @department-of-veterans-affairs/platform-cms-drupal-engineers +package.json # @department-of-veterans-affairs/platform-cms-drupal-engineers +phpcs.xml.dist @department-of-veterans-affairs/platform-cms-qa +phploc.phar @department-of-veterans-affairs/platform-cms-qa +phpstan_bootstrap.php @department-of-veterans-affairs/platform-cms-qa +phpstan-baseline.neon @department-of-veterans-affairs/platform-cms-qa +phpstan.neon @department-of-veterans-affairs/platform-cms-qa +phpunit.xml @department-of-veterans-affairs/platform-cms-qa +LICENSE.md @department-of-veterans-affairs/platform-cms +README.md @department-of-veterans-affairs/platform-cms +SECURITY.md @department-of-veterans-affairs/platform-cms-qa +tasks-periodic.yml @department-of-veterans-affairs/platform-cms-devops-engineers +tests.yml @department-of-veterans-affairs/platform-cms-qa +tugboat.yml @department-of-veterans-affairs/platform-cms-devops-engineers diff --git a/READMES/codeowners.md b/READMES/codeowners.md new file mode 100644 index 0000000000..9f75f6e365 --- /dev/null +++ b/READMES/codeowners.md @@ -0,0 +1,29 @@ +# Code Ownership and CODEOWNERS + +Code ownership is the practice of designating specific individuals or teams as the primary maintainers or "owners" of certain parts of a codebase. + +Identified benefits include the following: + +- **Documented Responsibility**: When a specific part of the code has a designated owner, it is clear who is responsible for its maintenance, updates, and quality. + +- **Greater Expertise**: Over time, code owners become experts in their designated areas, which can lead to faster debugging, better code quality, and more informed decisions about that part of the code. It also reduces the likelihood of bugs being introduced from outside the team. + +- **More Meaningful Code Review**: In large projects with many contributors, code ownership can help ensure that changes to a specific part of the code are reviewed by those who are most familiar with it. + +GitHub's implementation of a code ownership system is built around a file, [`.github/CODEOWNERS`](./.github/CODEOWNERS), which is committed to the repository and managed as a normal file. You can learn more about it [on GitHub](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners). + +The important ideas are: + +1. Code owners are automatically requested for review when someone opens a pull request that modifies code that they own. + +2. Code owners are not automatically requested to review draft pull requests. + +3. When you mark a draft pull request as ready for review, code owners are automatically notified. + +4. Approval from a code owner is required for merging a pull request affecting that section of the codebase. + +5. Changes to CODEOWNERS do not take effect until they are merged to `main`. + +6. Viewing the CODEOWNERS file in GitHub should provide debugging information. + +As with everything else in this project, CODEOWNERS is subject to continual refinement and development. Please raise issues and suggest improvements where appropriate. From db5a60145dddd76e0c12a8dba52f28feb8113524 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Nov 2023 09:03:53 -0400 Subject: [PATCH 09/21] Bump va-gov/content-build from 0.0.3377 to 0.0.3378 (#15938) Bumps [va-gov/content-build](https://github.com/department-of-veterans-affairs/content-build) from 0.0.3377 to 0.0.3378. - [Release notes](https://github.com/department-of-veterans-affairs/content-build/releases) - [Commits](https://github.com/department-of-veterans-affairs/content-build/compare/v0.0.3377...v0.0.3378) --- updated-dependencies: - dependency-name: va-gov/content-build dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- composer.json | 2 +- composer.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/composer.json b/composer.json index ac7b9e7ce9..1aaa8acfb4 100644 --- a/composer.json +++ b/composer.json @@ -207,7 +207,7 @@ "symfony/phpunit-bridge": "^5.1", "symfony/process": "^4.0", "symfony/routing": "^4.0", - "va-gov/content-build": "^0.0.3377", + "va-gov/content-build": "^0.0.3378", "vlucas/phpdotenv": "^5.3", "webflo/drupal-finder": "^1.0.0", "webmozart/path-util": "^2.3", diff --git a/composer.lock b/composer.lock index f09f6769f9..9c42d0f91e 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": "82996f44bb9b21fc4e4a683b792d9d6a", + "content-hash": "9e5e2f2bfc18ba6d13b3947245066b49", "packages": [ { "name": "alchemy/zippy", @@ -26915,7 +26915,7 @@ }, { "name": "va-gov/content-build", - "version": "v0.0.3377", + "version": "v0.0.3378", "source": { "type": "git", "url": "https://github.com/department-of-veterans-affairs/content-build.git", @@ -26951,7 +26951,7 @@ "description": "Front-end for VA.gov. This repository contains the code that generates the www.va.gov website. It contains a Metalsmith static site builder that uses a Drupal CMS for content. This file is here to publish releases to https://packagist.org/packages/va-gov/content-build, so that the CMS CI system can install it and update it using standard composer processes, and so that we can run tests across both systems. See https://github.com/department-of-veterans-affairs/va.gov-cms for the CMS repo, and stand by for more documentation.", "support": { "issues": "https://github.com/department-of-veterans-affairs/content-build/issues", - "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3377" + "source": "https://github.com/department-of-veterans-affairs/content-build/tree/v0.0.3378" }, "time": "2023-10-30T17:47:27+00:00" }, @@ -27809,5 +27809,5 @@ "platform-overrides": { "php": "8.1" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } From 26d508f2de89a0be72a620408c57b552817caf6b Mon Sep 17 00:00:00 2001 From: Edmund Dunn <109987005+edmund-dunn@users.noreply.github.com> Date: Wed, 1 Nov 2023 07:00:48 -0700 Subject: [PATCH 10/21] VACMS-15721: added description field for alert blocks view and browser (#15927) --- ...iews.view.custom_block_entity_browsers.yml | 65 +++++++++++++++++++ config/sync/views.view.va_blocks_admin.yml | 4 +- 2 files changed, 67 insertions(+), 2 deletions(-) diff --git a/config/sync/views.view.custom_block_entity_browsers.yml b/config/sync/views.view.custom_block_entity_browsers.yml index d9be8cd8aa..ce01b67646 100644 --- a/config/sync/views.view.custom_block_entity_browsers.yml +++ b/config/sync/views.view.custom_block_entity_browsers.yml @@ -837,6 +837,71 @@ display: empty_zero: false hide_alter_empty: true use_field_cardinality: true + info: + id: info + table: block_content_field_data + field: info + relationship: none + group_type: group + admin_label: '' + entity_type: block_content + entity_field: info + plugin_id: field + label: Description + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: false + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false status: id: status table: block_content_field_data diff --git a/config/sync/views.view.va_blocks_admin.yml b/config/sync/views.view.va_blocks_admin.yml index d064503b0e..2ffc2ca383 100644 --- a/config/sync/views.view.va_blocks_admin.yml +++ b/config/sync/views.view.va_blocks_admin.yml @@ -1353,8 +1353,8 @@ display: entity_type: block_content entity_field: info plugin_id: field - label: '' - exclude: true + label: Description + exclude: false alter: alter_text: false text: '' From faf08818a3ecb3f756cdbf1a914d24a663c3bdd1 Mon Sep 17 00:00:00 2001 From: Christian Burk Date: Wed, 1 Nov 2023 10:58:41 -0500 Subject: [PATCH 11/21] VACMS-15276: Adds YouTube field (#15450) * VACMS-15276: Adds YouTube field * VACMS-15276: Adding field storage for YouTube --- ...y.node.health_care_region_page.default.yml | 20 +++++++++++--- ...y.node.health_care_region_page.default.yml | 19 ++++++++++++- ...alth_care_region_page.external_content.yml | 15 +++++++++++ ...ay.node.health_care_region_page.teaser.yml | 15 +++++++++++ ....health_care_region_page.field_youtube.yml | 27 +++++++++++++++++++ .../sync/field.storage.node.field_youtube.yml | 19 +++++++++++++ 6 files changed, 111 insertions(+), 4 deletions(-) create mode 100644 config/sync/field.field.node.health_care_region_page.field_youtube.yml create mode 100644 config/sync/field.storage.node.field_youtube.yml diff --git a/config/sync/core.entity_form_display.node.health_care_region_page.default.yml b/config/sync/core.entity_form_display.node.health_care_region_page.default.yml index 7789f44f65..c003f7e0ad 100644 --- a/config/sync/core.entity_form_display.node.health_care_region_page.default.yml +++ b/config/sync/core.entity_form_display.node.health_care_region_page.default.yml @@ -24,6 +24,7 @@ dependencies: - field.field.node.health_care_region_page.field_va_health_connect_phone - field.field.node.health_care_region_page.field_vamc_ehr_system - field.field.node.health_care_region_page.field_vamc_system_official_name + - field.field.node.health_care_region_page.field_youtube - node.type.health_care_region_page - workflows.workflow.editorial module: @@ -128,6 +129,7 @@ third_party_settings: - field_twitter - field_instagram - field_flickr + - field_youtube label: 'Social Media' region: content parent_name: group_get_updates_from_us @@ -260,6 +262,7 @@ content: maxlength: 300 counter_position: after js_prevent_submit: false + count_only_mode: false count_html_characters: false textcount_status_message: '@remaining_count characters remaining' third_party_settings: { } @@ -275,7 +278,7 @@ content: third_party_settings: { } field_flickr: type: linkit - weight: 18 + weight: 17 region: content settings: placeholder_url: '' @@ -301,7 +304,7 @@ content: third_party_settings: { } field_instagram: type: linkit - weight: 17 + weight: 16 region: content settings: placeholder_url: '' @@ -319,6 +322,7 @@ content: maxlength: 600 counter_position: after js_prevent_submit: false + count_only_mode: false count_html_characters: false textcount_status_message: '@remaining_count characters remaining' third_party_settings: { } @@ -380,7 +384,7 @@ content: third_party_settings: { } field_twitter: type: linkit - weight: 16 + weight: 15 region: content settings: placeholder_url: '' @@ -409,6 +413,16 @@ content: size: 60 placeholder: '' third_party_settings: { } + field_youtube: + type: linkit + weight: 18 + region: content + settings: + placeholder_url: '' + placeholder_title: '' + linkit_profile: default + linkit_auto_link_text: false + third_party_settings: { } moderation_state: type: moderation_state_default weight: 11 diff --git a/config/sync/core.entity_view_display.node.health_care_region_page.default.yml b/config/sync/core.entity_view_display.node.health_care_region_page.default.yml index ce23d52ec3..0e56b3040f 100644 --- a/config/sync/core.entity_view_display.node.health_care_region_page.default.yml +++ b/config/sync/core.entity_view_display.node.health_care_region_page.default.yml @@ -24,6 +24,7 @@ dependencies: - field.field.node.health_care_region_page.field_va_health_connect_phone - field.field.node.health_care_region_page.field_vamc_ehr_system - field.field.node.health_care_region_page.field_vamc_system_official_name + - field.field.node.health_care_region_page.field_youtube - image.style.large - node.type.health_care_region_page module: @@ -85,6 +86,7 @@ third_party_settings: - field_flickr - field_instagram - field_twitter + - field_youtube - field_related_links label: 'Social media and links' parent_name: '' @@ -239,6 +241,8 @@ content: settings: image_link: '' image_style: large + image_loading: + attribute: lazy third_party_settings: { } weight: 5 region: content @@ -267,7 +271,7 @@ content: label: above settings: { } third_party_settings: { } - weight: 13 + weight: 14 region: content field_twitter: type: linkit @@ -305,6 +309,19 @@ content: third_party_settings: { } weight: 6 region: content + field_youtube: + type: linkit + label: above + settings: + trim_length: 80 + url_only: false + url_plain: false + rel: '' + target: '' + linkit_profile: default + third_party_settings: { } + weight: 13 + region: content hidden: breadcrumbs: true content_moderation_control: true diff --git a/config/sync/core.entity_view_display.node.health_care_region_page.external_content.yml b/config/sync/core.entity_view_display.node.health_care_region_page.external_content.yml index 9730686bfb..fdd4149bce 100644 --- a/config/sync/core.entity_view_display.node.health_care_region_page.external_content.yml +++ b/config/sync/core.entity_view_display.node.health_care_region_page.external_content.yml @@ -25,10 +25,12 @@ dependencies: - field.field.node.health_care_region_page.field_va_health_connect_phone - field.field.node.health_care_region_page.field_vamc_ehr_system - field.field.node.health_care_region_page.field_vamc_system_official_name + - field.field.node.health_care_region_page.field_youtube - node.type.health_care_region_page module: - field_group - layout_builder + - link - options - telephone - user @@ -132,6 +134,18 @@ targetEntityType: node bundle: health_care_region_page mode: external_content content: + breadcrumbs: + type: link + label: hidden + settings: + trim_length: 80 + url_only: false + url_plain: false + rel: '' + target: '' + third_party_settings: { } + weight: -5 + region: content field_va_health_connect_phone: type: telephone_link label: above @@ -169,6 +183,7 @@ hidden: field_system_menu: true field_twitter: true field_vamc_system_official_name: true + field_youtube: true langcode: true links: true search_api_excerpt: true diff --git a/config/sync/core.entity_view_display.node.health_care_region_page.teaser.yml b/config/sync/core.entity_view_display.node.health_care_region_page.teaser.yml index 10ee27d00c..18b45279c1 100644 --- a/config/sync/core.entity_view_display.node.health_care_region_page.teaser.yml +++ b/config/sync/core.entity_view_display.node.health_care_region_page.teaser.yml @@ -25,14 +25,28 @@ dependencies: - field.field.node.health_care_region_page.field_va_health_connect_phone - field.field.node.health_care_region_page.field_vamc_ehr_system - field.field.node.health_care_region_page.field_vamc_system_official_name + - field.field.node.health_care_region_page.field_youtube - node.type.health_care_region_page module: + - link - user id: node.health_care_region_page.teaser targetEntityType: node bundle: health_care_region_page mode: teaser content: + breadcrumbs: + type: link + label: hidden + settings: + trim_length: 80 + url_only: false + url_plain: false + rel: '' + target: '' + third_party_settings: { } + weight: -5 + region: content links: settings: { } third_party_settings: { } @@ -66,5 +80,6 @@ hidden: field_va_health_connect_phone: true field_vamc_ehr_system: true field_vamc_system_official_name: true + field_youtube: true langcode: true search_api_excerpt: true diff --git a/config/sync/field.field.node.health_care_region_page.field_youtube.yml b/config/sync/field.field.node.health_care_region_page.field_youtube.yml new file mode 100644 index 0000000000..09878009bb --- /dev/null +++ b/config/sync/field.field.node.health_care_region_page.field_youtube.yml @@ -0,0 +1,27 @@ +uuid: 9365ca57-747d-4378-9944-93438f454038 +langcode: en +status: true +dependencies: + config: + - field.storage.node.field_youtube + - node.type.health_care_region_page + module: + - link + - tmgmt_content +third_party_settings: + tmgmt_content: + excluded: false +id: node.health_care_region_page.field_youtube +field_name: field_youtube +entity_type: node +bundle: health_care_region_page +label: YouTube +description: '' +required: false +translatable: false +default_value: { } +default_value_callback: '' +settings: + title: 2 + link_type: 16 +field_type: link diff --git a/config/sync/field.storage.node.field_youtube.yml b/config/sync/field.storage.node.field_youtube.yml new file mode 100644 index 0000000000..de8930df5f --- /dev/null +++ b/config/sync/field.storage.node.field_youtube.yml @@ -0,0 +1,19 @@ +uuid: 90bbf561-fc8f-407b-91b2-57fe172e4186 +langcode: en +status: true +dependencies: + module: + - link + - node +id: node.field_youtube +field_name: field_youtube +entity_type: node +type: link +settings: { } +module: link +locked: false +cardinality: 1 +translatable: true +indexes: { } +persist_with_no_fields: false +custom_storage: false From 1181bdf0ec4bb82a60f05705d832c1dca92a287b Mon Sep 17 00:00:00 2001 From: Christia Troyer Date: Wed, 1 Nov 2023 11:15:00 -0700 Subject: [PATCH 12/21] VACMS-15891: Update Q&A Content Report View to use Multiple Workflow Filter (#15896) * VACMS-15891: Update workflow filter to multiple * VACMS-15891: Updated the filter machine name too because Jill is smart. * VACMS-15891: Style-Guide-Related edits to view * VACMS-15891: Added section filter * VACMS-15891: Fix caption * VACMS-15891: Caption and tab * VACMS-15891: Copying new settings from view family * VACMS-15891: Fix pager back to 25 for cypress test --- config/sync/views.view.content.yml | 849 ++++++++++++++++++++++------- 1 file changed, 647 insertions(+), 202 deletions(-) diff --git a/config/sync/views.view.content.yml b/config/sync/views.view.content.yml index 1d5e1d5d52..c9e0841459 100644 --- a/config/sync/views.view.content.yml +++ b/config/sync/views.view.content.yml @@ -4,13 +4,11 @@ status: true dependencies: config: - field.storage.node.field_administration - - field.storage.node.field_clp_faq_paragraphs - field.storage.node.field_facility_location - field.storage.node.field_last_saved_by_an_editor - field.storage.node.field_other_categories - field.storage.node.field_primary_category - field.storage.paragraph.field_question - - field.storage.paragraph.field_questions - field.storage.paragraph.field_topics - node.type.basic_landing_page - node.type.checklist @@ -32,12 +30,10 @@ dependencies: - user.role.content_admin - user.role.content_creator_resources_and_support - user.role.redirect_administrator - - workflows.workflow.editorial module: - content_lock - content_moderation - csv_serialization - - entity_reference_revisions - node - paragraphs - rest @@ -518,6 +514,7 @@ display: offset: false offset_label: Offset quantity: 9 + pagination_heading_level: h4 exposed_form: type: basic options: @@ -765,37 +762,32 @@ display: row_class: '' default_row_class: true columns: + views_bulk_operations_bulk_form_1: views_bulk_operations_bulk_form_1 title: title - nid: nid - edit_node: edit_node + operations: operations type: type - revision_uid: revision_uid - changed: changed moderation_state: moderation_state field_administration: field_administration - name: name - timestamp: timestamp - break: break - is_locked: is_locked + changed: changed + revision_uid: revision_uid + field_question_1: field_question_1 + field_question: field_question + nothing: nothing default: changed info: - title: - sortable: true - default_sort_order: asc + views_bulk_operations_bulk_form_1: align: '' separator: '' empty_column: false responsive: '' - nid: - sortable: false + title: + sortable: true default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - edit_node: - sortable: false - default_sort_order: asc + operations: align: '' separator: '' empty_column: false @@ -807,58 +799,49 @@ display: separator: '' empty_column: false responsive: '' - revision_uid: + moderation_state: sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - changed: + field_administration: sortable: true - default_sort_order: desc - align: '' - separator: ' by ' - empty_column: false - responsive: priority-low - moderation_state: - sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - field_administration: + changed: sortable: true - default_sort_order: asc + default_sort_order: desc align: '' - separator: '' + separator: ' by ' empty_column: false - responsive: '' - name: + responsive: priority-low + revision_uid: sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - timestamp: + field_question_1: sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - break: + field_question: sortable: false default_sort_order: asc align: '' separator: '' empty_column: false responsive: '' - is_locked: - sortable: false - default_sort_order: asc + nothing: align: '' separator: '' empty_column: false @@ -6643,20 +6626,42 @@ display: id: page_qa display_title: 'Q&A' display_plugin: page - position: 9 + position: 1 display_options: title: 'Page-specific Q&A Content' fields: - views_bulk_operations_bulk_form_1: - id: views_bulk_operations_bulk_form_1 - table: views - field: views_bulk_operations_bulk_form + title: + id: title + table: node_field_data + field: title + entity_type: node + entity_field: title + plugin_id: field + label: Title + exclude: false + alter: + alter_text: false + element_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + type: string + settings: + link_to_entity: true + nid: + id: nid + table: node_field_data + field: nid relationship: none group_type: group admin_label: '' - plugin_id: views_bulk_operations_bulk_form - label: Action - exclude: false + entity_type: node + entity_field: nid + plugin_id: field + label: ID + exclude: true alter: alter_text: false text: '' @@ -6696,70 +6701,35 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - batch: true - batch_size: 25 - form_step: true - buttons: false - action_title: Action - clear_on_exposed: true - force_selection_info: false - selected_actions: - - - action_id: node_save_action - preconfiguration: - add_confirmation: false - - - action_id: node_assign_owner_action - preconfiguration: - add_confirmation: false - - - action_id: publish_latest_revision_action - - - action_id: archive_node_action - - - action_id: views_bulk_edit - preconfiguration: - add_confirmation: false - get_bundles_from_results: true - - - action_id: views_bulk_operations_delete_entity - - - action_id: 'entity:pathauto_update_alias:node' - preconfiguration: - add_confirmation: false - title: - id: title - table: node_field_data - field: title - entity_type: node - entity_field: title - plugin_id: field - label: Title - exclude: false - alter: - alter_text: false - element_class: '' - element_default_classes: true - empty: '' - hide_empty: false - empty_zero: false - hide_alter_empty: true - type: string + click_sort_column: value + type: number_integer settings: - link_to_entity: true - operations: - id: operations - table: node - field: operations + thousand_separator: '' + prefix_suffix: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + edit_node: + id: edit_node + table: node_field_revision + field: edit_node relationship: none group_type: group admin_label: '' - plugin_id: entity_operations - label: Operations + entity_type: node + plugin_id: entity_link_edit + label: '' exclude: false alter: - alter_text: false - text: '' + alter_text: true + text: 'Edit' make_link: false path: '' absolute: false @@ -6788,7 +6758,7 @@ display: element_class: '' element_label_type: '' element_label_class: '' - element_label_colon: true + element_label_colon: false element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true @@ -6796,7 +6766,9 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - destination: false + text: '' + output_url_as_text: true + absolute: false type: id: type table: node_field_data @@ -6862,40 +6834,18 @@ display: multi_type: separator separator: ', ' field_api_classes: false - changed: - id: changed - table: node_field_data - field: changed - entity_type: node - entity_field: changed - plugin_id: field - label: Updated - exclude: false - alter: - alter_text: false - element_class: '' - element_default_classes: true - empty: '' - hide_empty: false - empty_zero: false - hide_alter_empty: true - type: timestamp - settings: - date_format: short - custom_date_format: '' - timezone: '' - moderation_state: - id: moderation_state - table: content_moderation_state_field_data - field: moderation_state + revision_uid: + id: revision_uid + table: node_revision + field: revision_uid relationship: none group_type: group - admin_label: 'Moderation state' - entity_type: content_moderation_state - entity_field: moderation_state + admin_label: '' + entity_type: node + entity_field: revision_uid plugin_id: field - label: 'Moderation state' - exclude: false + label: '' + exclude: true alter: alter_text: false text: '' @@ -6927,19 +6877,19 @@ display: element_class: '' element_label_type: '' element_label_class: '' - element_label_colon: true + element_label_colon: false element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true - empty: N/A + empty: '' hide_empty: false empty_zero: false hide_alter_empty: true - click_sort_column: value - type: string + click_sort_column: target_id + type: entity_reference_label settings: - link_to_entity: false - group_column: value + link: true + group_column: target_id group_columns: { } group_rows: true delta_limit: 0 @@ -6949,19 +6899,21 @@ display: multi_type: separator separator: ', ' field_api_classes: false - field_administration: - id: field_administration - table: node__field_administration - field: field_administration + changed: + id: changed + table: node_field_data + field: changed relationship: none group_type: group admin_label: '' + entity_type: node + entity_field: changed plugin_id: field - label: Section + label: Updated exclude: false alter: - alter_text: false - text: '' + alter_text: true + text: '{{ changed }} by {{ revision_uid }}' make_link: false path: '' absolute: false @@ -6998,11 +6950,13 @@ display: hide_empty: false empty_zero: false hide_alter_empty: true - click_sort_column: target_id - type: entity_reference_label + click_sort_column: value + type: timestamp settings: - link: false - group_column: target_id + date_format: short + custom_date_format: '' + timezone: '' + group_column: value group_columns: { } group_rows: true delta_limit: 0 @@ -7012,17 +6966,80 @@ display: multi_type: separator separator: ', ' field_api_classes: false - revision_uid: - id: revision_uid - table: node_revision - field: revision_uid + moderation_state: + id: moderation_state + table: content_moderation_state_field_data + field: moderation_state + relationship: none + group_type: group + admin_label: 'Moderation state' + entity_type: content_moderation_state + entity_field: moderation_state + plugin_id: field + label: 'Moderation state' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: N/A + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: string + settings: + link_to_entity: false + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + field_administration: + id: field_administration + table: node__field_administration + field: field_administration relationship: none group_type: group admin_label: '' - entity_type: node - entity_field: revision_uid plugin_id: field - label: '' + label: Section exclude: false alter: alter_text: false @@ -7055,7 +7072,7 @@ display: element_class: '' element_label_type: '' element_label_class: '' - element_label_colon: false + element_label_colon: true element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true @@ -7077,15 +7094,234 @@ display: multi_type: separator separator: ', ' field_api_classes: false - field_question_1: - id: field_question_1 + name: + id: name + table: users_field_data + field: name + relationship: uid_1 + group_type: group + admin_label: '' + entity_type: user + entity_field: name + plugin_id: field + label: '' + exclude: true + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: user_name + settings: + link_to_entity: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + timestamp: + id: timestamp + table: content_lock + field: timestamp + relationship: none + group_type: group + admin_label: '' + plugin_id: date + label: '' + exclude: true + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + date_format: 'raw time ago' + custom_date_format: '1' + timezone: '' + break: + id: break + table: content_lock + field: break + relationship: none + group_type: group + admin_label: '' + plugin_id: content_lock_break_link + label: '' + exclude: true + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + is_locked: + id: is_locked + table: content_lock + field: is_locked + relationship: none + group_type: group + admin_label: '' + plugin_id: boolean + label: 'Is Locked' + exclude: true + alter: + alter_text: true + text: "{% if is_locked == true %}\r\n Locked for editing {{ timestamp }} by {{ name }} | {{ break }}\r\n{% endif %} \r\n" + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + type: boolean + type_custom_true: '' + type_custom_false: '' + not: false + field_question: + id: field_question table: paragraph__field_question field: field_question relationship: field_clp_faq_paragraphs group_type: group admin_label: '' plugin_id: field - label: 'clp faq question' + label: 'clp faq paragraph' exclude: true alter: alter_text: false @@ -7139,15 +7375,15 @@ display: multi_type: separator separator: ', ' field_api_classes: false - field_question: - id: field_question + field_question_1: + id: field_question_1 table: paragraph__field_question field: field_question relationship: field_questions group_type: group admin_label: '' plugin_id: field - label: 'content block question' + label: '' exclude: true alter: alter_text: false @@ -7180,7 +7416,7 @@ display: element_class: '' element_label_type: '' element_label_class: '' - element_label_colon: true + element_label_colon: false element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true @@ -7213,7 +7449,7 @@ display: exclude: false alter: alter_text: true - text: "{{ field_question_1}} \r\n{{ field_question }}" + text: "{{ field_question }}\r\n{{ field_question_1 }} " make_link: false path: '' absolute: false @@ -7250,6 +7486,11 @@ display: hide_empty: false empty_zero: false hide_alter_empty: false + access: + type: perm + options: + perm: 'access content' + sorts: { } filters: title: id: title @@ -7308,9 +7549,8 @@ display: group: 1 exposed: true expose: - operator_id: type_op label: 'Content type' - description: '' + description: null use_operator: false operator: type_op operator_limit_selection: false @@ -7319,12 +7559,53 @@ display: required: false remember: false multiple: false + reduce: false + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + moderation_state_multiple_workflow_filter: + id: moderation_state_multiple_workflow_filter + table: node + field: moderation_state_multiple_workflow_filter + relationship: none + group_type: group + admin_label: '' + entity_type: node + plugin_id: moderation_state_multiple_workflow_filter + operator: or + value: { } + group: 1 + exposed: true + expose: + operator_id: moderation_state_op + label: 'Moderation state' + description: '' + use_operator: false + operator: moderation_state_multiple_workflow_filter_op + operator_limit_selection: false + operator_list: { } + identifier: moderation_state + required: false + remember: false + multiple: false remember_roles: authenticated: authenticated anonymous: '0' content_api_consumer: '0' content_creator_benefits_hubs: '0' + content_creator_resources_and_support: '0' + office_content_creator: '0' vamc_content_creator: '0' + content_creator_vet_center: '0' content_editor: '0' content_reviewer: '0' content_publisher: '0' @@ -7332,7 +7613,10 @@ display: redirect_administrator: '0' admnistrator_users: '0' administrator: '0' - reduce: false + homepage_manager: '0' + translation_manager: '0' + next_js: '0' + reduce: 0 is_grouped: false group_info: label: '' @@ -7345,47 +7629,41 @@ display: default_group: All default_group_multiple: { } group_items: { } - moderation_state: - id: moderation_state - table: node_field_data - field: moderation_state + reduce_duplicates: 0 + field_administration_target_id: + id: field_administration_target_id + table: node__field_administration + field: field_administration_target_id relationship: none group_type: group admin_label: '' - entity_type: node - plugin_id: moderation_state_filter - operator: in - value: - all: all - editorial-draft: editorial-draft - editorial-review: editorial-review - editorial-published: editorial-published - editorial-archived: editorial-archived + plugin_id: taxonomy_index_tid + operator: or + value: { } group: 1 exposed: true expose: - operator_id: moderation_state_op - label: 'Moderation state' + operator_id: owner + label: Section description: '' use_operator: false - operator: moderation_state_op + operator: field_administration_target_id_op operator_limit_selection: false operator_list: { } - identifier: moderation_state + identifier: owner required: false remember: false multiple: false remember_roles: authenticated: authenticated anonymous: '0' + content_api_consumer: '0' + content_editor: '0' + content_reviewer: '0' + content_publisher: '0' + admnistrator_users: '0' administrator: '0' - page_creator: '0' - layout_manager: '0' - page_reviewer: '0' - landing_page_creator: '0' - landing_page_reviewer: '0' - media_creator: '0' - media_manager: '0' + redirect_administrator: '0' reduce: false is_grouped: false group_info: @@ -7399,6 +7677,15 @@ display: default_group: All default_group_multiple: { } group_items: { } + reduce_duplicates: false + vid: administration + type: select + hierarchy: true + limit: true + error_message: true + parent: 0 + level_labels: '' + force_deepest: false field_clp_faq_paragraphs_target_revision_id: id: field_clp_faq_paragraphs_target_revision_id table: node__field_clp_faq_paragraphs @@ -7487,6 +7774,142 @@ display: groups: 1: AND 2: OR + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + columns: + title: title + nid: nid + edit_node: edit_node + type: type + revision_uid: revision_uid + changed: changed + moderation_state: moderation_state + field_administration: field_administration + name: name + timestamp: timestamp + break: break + is_locked: is_locked + field_question: field_question + field_question_1: field_question_1 + nothing: nothing + default: changed + info: + title: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + nid: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + edit_node: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + type: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + revision_uid: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + changed: + sortable: true + default_sort_order: desc + align: '' + separator: ' by ' + empty_column: false + responsive: priority-low + moderation_state: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_administration: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + name: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + timestamp: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + break: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + is_locked: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_question: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + field_question_1: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + nothing: + align: '' + separator: '' + empty_column: false + responsive: '' + override: true + sticky: true + summary: '' + empty_table: true + caption: 'Page-specific Q&As' + description: '' + row: + type: fields + options: { } query: type: views_query options: @@ -7496,12 +7919,17 @@ display: replica: false query_tags: { } defaults: + access: false query: false title: false + style: false + row: false relationships: false fields: false + sorts: false filters: false filter_groups: false + header: false relationships: uid: id: uid @@ -7547,6 +7975,17 @@ display: plugin_id: standard required: false display_description: '' + header: + result: + id: result + table: views + field: result + relationship: none + group_type: group + admin_label: '' + plugin_id: result + empty: false + content: 'Displaying @start - @end of @total' display_extenders: jsonapi_views: enabled: true @@ -7555,7 +7994,7 @@ display: type: tab title: 'Page-specific Q&A' description: '' - weight: 0 + weight: -150 expanded: false menu_name: admin parent: system.admin_content @@ -7565,19 +8004,25 @@ display: local_task_parent: 'views_view:view.centralized_content_paragraphs.centralized_content_paragraphs' local_task_weight: 0 local_task_custom_parent_route: '' + tab_options: + type: normal + title: Content + description: 'Find and manage content' + weight: -10 cache_metadata: - max-age: 0 + max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url - url.query_args + - user - 'user.node_grants:view' - - user.roles + - user.permissions tags: - 'config:field.storage.node.field_administration' - 'config:field.storage.paragraph.field_question' - - 'config:workflow_list' + deleted: false resources_support_dashboard: id: resources_support_dashboard display_title: 'Resources and support' From 766efbb62633581ba36f4f0b94e65ad18bbd4881 Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Wed, 1 Nov 2023 15:03:04 -0700 Subject: [PATCH 13/21] update perms for nextjs role --- config/sync/user.role.next_js.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/config/sync/user.role.next_js.yml b/config/sync/user.role.next_js.yml index 4e1997542d..d9955b5c86 100644 --- a/config/sync/user.role.next_js.yml +++ b/config/sync/user.role.next_js.yml @@ -3,8 +3,10 @@ langcode: en status: true dependencies: module: + - content_moderation - node - subrequests + - system - va_gov_backend third_party_settings: va_gov_backend: @@ -14,6 +16,8 @@ label: Next.js weight: 7 is_admin: null permissions: + - 'access content' - 'access user profiles' - - 'bypass node access' - 'issue subrequests' + - 'view all revisions' + - 'view any unpublished content' From ac52c8b27deedfa223833cd4b4734e4217e16f16 Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Thu, 2 Nov 2023 13:31:54 -0700 Subject: [PATCH 14/21] update perms for nextjs role --- config/sync/user.role.next_js.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config/sync/user.role.next_js.yml b/config/sync/user.role.next_js.yml index d9955b5c86..ef66e0eec5 100644 --- a/config/sync/user.role.next_js.yml +++ b/config/sync/user.role.next_js.yml @@ -3,8 +3,12 @@ langcode: en status: true dependencies: module: + - block_diff_ui - content_moderation + - media + - message_ui - node + - paragraphs - subrequests - system - va_gov_backend @@ -21,3 +25,5 @@ permissions: - 'issue subrequests' - 'view all revisions' - 'view any unpublished content' + - 'view latest version' + - 'view media' From c98fef73c7177f2f776990404a57a58cc0bf58d8 Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Thu, 2 Nov 2023 14:50:33 -0700 Subject: [PATCH 15/21] re-export config for correct dependencies --- config/sync/user.role.next_js.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/config/sync/user.role.next_js.yml b/config/sync/user.role.next_js.yml index 76c4f49fdb..aaab07f0a1 100644 --- a/config/sync/user.role.next_js.yml +++ b/config/sync/user.role.next_js.yml @@ -3,12 +3,9 @@ langcode: en status: true dependencies: module: - - block_diff_ui - content_moderation - media - - message_ui - node - - paragraphs - subrequests - system - va_gov_backend @@ -17,7 +14,7 @@ third_party_settings: vgb_description: 'Role for Next.js JSON API data access.' id: next_js label: Next.js -weight: 8 +weight: 7 is_admin: null permissions: - 'access content' From 4ab2ef2cb304723f3b4cbf329b8208be94f76aea Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Tue, 7 Nov 2023 13:30:02 -0800 Subject: [PATCH 16/21] override config for tugboat --- docroot/sites/default/settings/settings.tugboat.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docroot/sites/default/settings/settings.tugboat.php b/docroot/sites/default/settings/settings.tugboat.php index c1d2e1de44..fbf620cb12 100644 --- a/docroot/sites/default/settings/settings.tugboat.php +++ b/docroot/sites/default/settings/settings.tugboat.php @@ -37,6 +37,10 @@ $config['environment_indicator.indicator']['fg_color'] = '#212121'; $config['environment_indicator.indicator']['name'] = 'Tugboat'; +// Update next-build site endpoint to the appropriate tugboat alias +$config['next.next_site.next_build_preview_server']['base_url'] = 'https://next-' . getenv('TUGBOAT_SERVICE_TOKEN'); +$config['next.next_site.next_build_preview_server']['preview_url'] = 'https://next-' . getenv('TUGBOAT_SERVICE_TOKEN') . '/api/preview'; + $settings['trusted_host_patterns'] = [ '^localhost$', '^.*' . getenv('TUGBOAT_SERVICE_TOKEN') . '.' . getenv('TUGBOAT_SERVICE_CONFIG_DOMAIN') . '$', @@ -71,7 +75,7 @@ // PIV login does not currently work on Tugboat. // -// To avoid confusing editors, we want to disable PIV login completely on +// To avoid confusing editors, we want to disable PIV login completely on // Tugboat demo environments. // // However, we want to _preserve_ the PIV login interface on Tugboat PR From 5fa02a8288c808848ab6fe877a94b047b986d6fc Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Tue, 7 Nov 2023 15:32:48 -0800 Subject: [PATCH 17/21] include full domains in the url path... --- docroot/sites/default/settings/settings.tugboat.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docroot/sites/default/settings/settings.tugboat.php b/docroot/sites/default/settings/settings.tugboat.php index fbf620cb12..a5bb4486ee 100644 --- a/docroot/sites/default/settings/settings.tugboat.php +++ b/docroot/sites/default/settings/settings.tugboat.php @@ -38,8 +38,8 @@ $config['environment_indicator.indicator']['name'] = 'Tugboat'; // Update next-build site endpoint to the appropriate tugboat alias -$config['next.next_site.next_build_preview_server']['base_url'] = 'https://next-' . getenv('TUGBOAT_SERVICE_TOKEN'); -$config['next.next_site.next_build_preview_server']['preview_url'] = 'https://next-' . getenv('TUGBOAT_SERVICE_TOKEN') . '/api/preview'; +$config['next.next_site.next_build_preview_server']['base_url'] = 'https://next-' . getenv('TUGBOAT_SERVICE_TOKEN') . '.' . getenv('TUGBOAT_SERVICE_CONFIG_DOMAIN'); +$config['next.next_site.next_build_preview_server']['preview_url'] = 'https://next-' . getenv('TUGBOAT_SERVICE_TOKEN') . '.' . getenv('TUGBOAT_SERVICE_CONFIG_DOMAIN') . '/api/preview'; $settings['trusted_host_patterns'] = [ '^localhost$', From 5d01d85f5e76496691ac56acaf2cdbf9e871063c Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Wed, 8 Nov 2023 08:07:29 -0800 Subject: [PATCH 18/21] a couple more env vars in place --- .tugboat/config.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.tugboat/config.yml b/.tugboat/config.yml index 6eaa4be95e..e837da988e 100644 --- a/.tugboat/config.yml +++ b/.tugboat/config.yml @@ -241,6 +241,8 @@ services: - bash -lc 'time task --taskfile=tugboat.yml' # Put necessary env variables in place for next's Drupal Preview before starting server + - echo "NEXT_PUBLIC_DRUPAL_BASE_URL=${TUGBOAT_SERVICE_URL}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat + - echo "NEXT_IMAGE_DOMAIN=${TUGBOAT_SERVICE_URL}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat - echo "DRUPAL_CLIENT_ID=${DRUPAL_CLIENT_ID}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat - echo "DRUPAL_CLIENT_SECRET=${DRUPAL_CLIENT_SECRET}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat From 051dce1e41bfe88c00e0c113af81ff91279cceef Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Wed, 8 Nov 2023 12:46:24 -0800 Subject: [PATCH 19/21] env vars need added before build --- .tugboat/config.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.tugboat/config.yml b/.tugboat/config.yml index e837da988e..912fc2d983 100644 --- a/.tugboat/config.yml +++ b/.tugboat/config.yml @@ -237,15 +237,15 @@ services: - find -L "${DOCROOT}/vendor/va-gov/content-build/node_modules/.bin" -type f -exec chmod +x {} \+ - find "${DOCROOT}/vendor/va-gov/content-build/script" -type f -exec chmod +x {} \+ - # Build storybook and the frontends (web, next) in parallel - - bash -lc 'time task --taskfile=tugboat.yml' - - # Put necessary env variables in place for next's Drupal Preview before starting server + # Put necessary env variables in place for next's Drupal Preview before building server - echo "NEXT_PUBLIC_DRUPAL_BASE_URL=${TUGBOAT_SERVICE_URL}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat - echo "NEXT_IMAGE_DOMAIN=${TUGBOAT_SERVICE_URL}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat - echo "DRUPAL_CLIENT_ID=${DRUPAL_CLIENT_ID}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat - echo "DRUPAL_CLIENT_SECRET=${DRUPAL_CLIENT_SECRET}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat + # Build storybook and the frontends (web, next) in parallel + - bash -lc 'time task --taskfile=tugboat.yml' + # Start the next build server - bash -lc 'composer va:next:start' From 609901ebe7c6102e72f38f90a7cab85ad014dc6d Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Wed, 8 Nov 2023 14:58:42 -0800 Subject: [PATCH 20/21] tweak env vars slightly --- .tugboat/config.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.tugboat/config.yml b/.tugboat/config.yml index 912fc2d983..fcc5726cf8 100644 --- a/.tugboat/config.yml +++ b/.tugboat/config.yml @@ -238,8 +238,9 @@ services: - find "${DOCROOT}/vendor/va-gov/content-build/script" -type f -exec chmod +x {} \+ # Put necessary env variables in place for next's Drupal Preview before building server - - echo "NEXT_PUBLIC_DRUPAL_BASE_URL=${TUGBOAT_SERVICE_URL}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat - - echo "NEXT_IMAGE_DOMAIN=${TUGBOAT_SERVICE_URL}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat + # Need to construct this way instead of TUGBOAT_DEFAULT_SERVICE_URL in order to drop the trailing / + - echo "NEXT_PUBLIC_DRUPAL_BASE_URL=https://cms-${TUGBOAT_SERVICE_TOKEN}.${TUGBOAT_SERVICE_CONFIG_DOMAIN}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat + - echo "NEXT_IMAGE_DOMAIN=https://cms-${TUGBOAT_SERVICE_TOKEN}.${TUGBOAT_SERVICE_CONFIG_DOMAIN}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat - echo "DRUPAL_CLIENT_ID=${DRUPAL_CLIENT_ID}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat - echo "DRUPAL_CLIENT_SECRET=${DRUPAL_CLIENT_SECRET}" >> ${TUGBOAT_ROOT}/next/envs/.env.tugboat From 5baf0f3d589fc41609d6605ac21c7f5b888465b5 Mon Sep 17 00:00:00 2001 From: Tanner Heffner Date: Wed, 8 Nov 2023 18:10:14 -0800 Subject: [PATCH 21/21] quote env vars --- .tugboat/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.tugboat/config.yml b/.tugboat/config.yml index fcc5726cf8..96e452dd70 100644 --- a/.tugboat/config.yml +++ b/.tugboat/config.yml @@ -105,8 +105,8 @@ services: - update-ca-certificates # Write OAuth keys to files for next-build Preview Server validation - - echo ${OAUTH_PUBLIC_KEY} >> ${TUGBOAT_ROOT}/public.key - - echo ${OAUTH_PRIVATE_KEY} >> ${TUGBOAT_ROOT}/private.key + - echo "${OAUTH_PUBLIC_KEY}" >> ${TUGBOAT_ROOT}/public.key + - echo "${OAUTH_PRIVATE_KEY}" >> ${TUGBOAT_ROOT}/private.key # Install drush-launcher, if desired. - wget -O /usr/local/bin/drush https://github.com/drush-ops/drush-launcher/releases/download/0.6.0/drush.phar