diff --git a/.vortex/docs/.utils/variables/extra/acquia.variables.sh b/.vortex/docs/.utils/variables/extra/acquia.variables.sh index ec9ff8a93..30dcee174 100755 --- a/.vortex/docs/.utils/variables/extra/acquia.variables.sh +++ b/.vortex/docs/.utils/variables/extra/acquia.variables.sh @@ -15,6 +15,9 @@ VORTEX_PURGE_CACHE_ACQUIA_SKIP= # Skip Drupal site provisioning in Acquia environment. VORTEX_PROVISION_ACQUIA_SKIP= +# Skip sending of deployment notifications in Acquia environment. +VORTEX_NOTIFY_ACQUIA_SKIP= + # NewRelic API key, usually of type 'USER'. # # @see https://www.vortextemplate.com/docs/deployment/notifications/newrelic diff --git a/.vortex/docs/content/development/variables.mdx b/.vortex/docs/content/development/variables.mdx index 90560aa08..d6b3124f0 100644 --- a/.vortex/docs/content/development/variables.mdx +++ b/.vortex/docs/content/development/variables.mdx @@ -322,6 +322,7 @@ The list below is automatically generated with [Shellvar](https://github.com/ale | `VORTEX_LOGIN_CONTAINER_REGISTRY_USER` | The username to login into the container registry.

If not provided, the script will skip the login step. | `${VORTEX_CONTAINER_REGISTRY_USER}` | `.vortex/tooling/src/vortex-login-container-registry` | | `VORTEX_LOGIN_UNBLOCK_ADMIN` | Flag to unblock admin. | `1` | `.vortex/tooling/src/vortex-login` | | `VORTEX_LOGOUT_BLOCK_ADMIN` | Flag to block or unblock admin. | `1` | `.vortex/tooling/src/vortex-logout` | +| `VORTEX_NOTIFY_ACQUIA_SKIP` | Skip sending of deployment notifications in Acquia environment. | `UNDEFINED` | `ACQUIA ENVIRONMENT` | | `VORTEX_NOTIFY_BRANCH` | Notification git branch name. | `UNDEFINED` | `.vortex/tooling/src/vortex-notify` | | `VORTEX_NOTIFY_CHANNELS` | The channels of the notifications.

A combination of comma-separated values: email,slack,newrelic,github,jira,webhook,diffy | `email` | `.env`, `.vortex/tooling/src/vortex-notify` | | `VORTEX_NOTIFY_DIFFY_BRANCH` | Diffy notification git branch name. | `${VORTEX_NOTIFY_BRANCH}` | `.vortex/tooling/src/vortex-notify-diffy` | diff --git a/.vortex/docs/content/hosting/acquia.mdx b/.vortex/docs/content/hosting/acquia.mdx index b5be36a41..152aa70b1 100644 --- a/.vortex/docs/content/hosting/acquia.mdx +++ b/.vortex/docs/content/hosting/acquia.mdx @@ -43,6 +43,20 @@ pre-configured scripts in the [`hooks/`](https://github.com/drevops/vortex/tree/ directory that trigger on code deployments, code updates, and database copy operations. +Each hook is turned off by setting its skip variable to `1` in the Acquia UI: + +| Hook | Variable | +|------------------------|--------------------------------------| +| `provision.sh` | `VORTEX_PROVISION_ACQUIA_SKIP` | +| `purge-cache.sh` | `VORTEX_PURGE_CACHE_ACQUIA_SKIP` | +| `notify-deployment.sh` | `VORTEX_NOTIFY_ACQUIA_SKIP` | +| `copy-db.sh` | `VORTEX_TASK_COPY_DB_ACQUIA_SKIP` | +| `copy-files.sh` | `VORTEX_TASK_COPY_FILES_ACQUIA_SKIP` | + +A hook stops with an error when a value it requires is unset or empty, so a +blank field in the Acquia UI aborts the hook rather than running it with a +missing value. + ### Environment detection **Vortex** automatically detects when running on Acquia and loads appropriate diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-db.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-db.sh index 807bbf357..bf52a5e0d 100755 --- a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-db.sh +++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-db.sh @@ -4,23 +4,23 @@ # # Environment variables must be set in Acquia UI globally or for each environment. -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" -pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 - -[ "${VORTEX_TASK_COPY_DB_ACQUIA_SKIP}" = "1" ] && echo "Skipping copying of database between Acquia environments." && exit 0 +[ "${VORTEX_TASK_COPY_DB_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping copying of database between Acquia environments." && exit 0 export VORTEX_PLATFORM=acquia -export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}" -export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}" +export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}" +export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}" export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}" export VORTEX_TASK_COPY_DB_ACQUIA_SRC="${VORTEX_TASK_COPY_DB_ACQUIA_SRC:-prod}" export VORTEX_TASK_COPY_DB_ACQUIA_DST="${VORTEX_TASK_COPY_DB_ACQUIA_DST:-${target_env}}" -export VORTEX_TASK_COPY_DB_ACQUIA_NAME="${VORTEX_TASK_COPY_DB_ACQUIA_NAME?not set}" +export VORTEX_TASK_COPY_DB_ACQUIA_NAME="${VORTEX_TASK_COPY_DB_ACQUIA_NAME:?Missing required value.}" + +pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 ./vendor/bin/vortex-task copy-db diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-files.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-files.sh index 8b76bc55e..b2f176078 100755 --- a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-files.sh +++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-files.sh @@ -4,23 +4,23 @@ # # Environment variables must be set in Acquia UI globally or for each environment. -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" -pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 - -[ "${VORTEX_TASK_COPY_FILES_ACQUIA_SKIP}" = "1" ] && echo "Skipping copying of files between Acquia environments." && exit 0 +[ "${VORTEX_TASK_COPY_FILES_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping copying of files between Acquia environments." && exit 0 export VORTEX_PLATFORM=acquia -export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}" -export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}" +export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}" +export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}" export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}" export VORTEX_TASK_COPY_FILES_ACQUIA_SRC="${VORTEX_TASK_COPY_FILES_ACQUIA_SRC:-prod}" export VORTEX_TASK_COPY_FILES_ACQUIA_DST="${VORTEX_TASK_COPY_FILES_ACQUIA_DST:-${target_env}}" +pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 + ./vendor/bin/vortex-task copy-files popd >/dev/null || exit 1 diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/notify-deployment.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/notify-deployment.sh index b09e5f992..3590e0c7d 100755 --- a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/notify-deployment.sh +++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/notify-deployment.sh @@ -3,24 +3,24 @@ # Acquia Cloud hook: Send deployment notifications. # -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" -branch="${3}" -ref="${4}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" +branch="${3:?Missing required branch name.}" +ref="${4:?Missing required commit reference.}" + +[ "${VORTEX_NOTIFY_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping sending of deployment notifications in Acquia environment." && exit 0 # Custom domain name for the environment, including subdomain. # Examples: "dev.example.com", "test.example.com", "www.example.com" VORTEX_NOTIFY_ENVIRONMENT_DOMAIN="${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN:-}" -pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 - -url="https://${AH_SITE_NAME}.${AH_REALM:-prod}.acquia-sites.com" - if [ -n "${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN}" ]; then url="https://${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN}" +else + url="https://${AH_SITE_NAME:?Missing required value.}.${AH_REALM:-prod}.acquia-sites.com" fi export VORTEX_NOTIFY_PROJECT="${site}" @@ -30,6 +30,8 @@ export VORTEX_NOTIFY_PR_NUMBER="" export VORTEX_NOTIFY_LABEL="${branch}" export VORTEX_NOTIFY_ENVIRONMENT_URL="${url}" +pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 + ./vendor/bin/vortex-notify popd >/dev/null || exit 1 diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/provision.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/provision.sh index b6766313e..634b0e6f6 100755 --- a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/provision.sh +++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/provision.sh @@ -3,11 +3,13 @@ # Acquia Cloud hook: Provision site. # -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" + +[ "${VORTEX_PROVISION_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping provisioning of the site in Acquia environment." && exit 0 pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/purge-cache.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/purge-cache.sh index 02931d6bd..f2537f599 100755 --- a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/purge-cache.sh +++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/purge-cache.sh @@ -4,23 +4,23 @@ # # Environment variables must be set in Acquia UI globally or for each environment. -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" -pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 - -[ "${VORTEX_PURGE_CACHE_ACQUIA_SKIP}" = "1" ] && echo "Skipping purging of cache in Acquia environment." && exit 0 +[ "${VORTEX_PURGE_CACHE_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping purging of cache in Acquia environment." && exit 0 export VORTEX_PLATFORM=acquia -export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}" -export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}" +export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}" +export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}" export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}" export VORTEX_TASK_PURGE_CACHE_ACQUIA_ENV="${VORTEX_TASK_PURGE_CACHE_ACQUIA_ENV:-${target_env}}" export VORTEX_TASK_PURGE_CACHE_ACQUIA_DOMAINS_FILE="${VORTEX_TASK_PURGE_CACHE_ACQUIA_DOMAINS_FILE:-"/var/www/html/${site}.${target_env}/hooks/library/domains.txt"}" +pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 + ./vendor/bin/vortex-task purge-cache popd >/dev/null || exit 1 diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-db.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-db.sh index 807bbf357..bf52a5e0d 100755 --- a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-db.sh +++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-db.sh @@ -4,23 +4,23 @@ # # Environment variables must be set in Acquia UI globally or for each environment. -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" -pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 - -[ "${VORTEX_TASK_COPY_DB_ACQUIA_SKIP}" = "1" ] && echo "Skipping copying of database between Acquia environments." && exit 0 +[ "${VORTEX_TASK_COPY_DB_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping copying of database between Acquia environments." && exit 0 export VORTEX_PLATFORM=acquia -export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}" -export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}" +export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}" +export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}" export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}" export VORTEX_TASK_COPY_DB_ACQUIA_SRC="${VORTEX_TASK_COPY_DB_ACQUIA_SRC:-prod}" export VORTEX_TASK_COPY_DB_ACQUIA_DST="${VORTEX_TASK_COPY_DB_ACQUIA_DST:-${target_env}}" -export VORTEX_TASK_COPY_DB_ACQUIA_NAME="${VORTEX_TASK_COPY_DB_ACQUIA_NAME?not set}" +export VORTEX_TASK_COPY_DB_ACQUIA_NAME="${VORTEX_TASK_COPY_DB_ACQUIA_NAME:?Missing required value.}" + +pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 ./vendor/bin/vortex-task copy-db diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-files.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-files.sh index 8b76bc55e..b2f176078 100755 --- a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-files.sh +++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-files.sh @@ -4,23 +4,23 @@ # # Environment variables must be set in Acquia UI globally or for each environment. -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" -pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 - -[ "${VORTEX_TASK_COPY_FILES_ACQUIA_SKIP}" = "1" ] && echo "Skipping copying of files between Acquia environments." && exit 0 +[ "${VORTEX_TASK_COPY_FILES_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping copying of files between Acquia environments." && exit 0 export VORTEX_PLATFORM=acquia -export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}" -export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}" +export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}" +export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}" export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}" export VORTEX_TASK_COPY_FILES_ACQUIA_SRC="${VORTEX_TASK_COPY_FILES_ACQUIA_SRC:-prod}" export VORTEX_TASK_COPY_FILES_ACQUIA_DST="${VORTEX_TASK_COPY_FILES_ACQUIA_DST:-${target_env}}" +pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 + ./vendor/bin/vortex-task copy-files popd >/dev/null || exit 1 diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/notify-deployment.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/notify-deployment.sh index b09e5f992..3590e0c7d 100755 --- a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/notify-deployment.sh +++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/notify-deployment.sh @@ -3,24 +3,24 @@ # Acquia Cloud hook: Send deployment notifications. # -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" -branch="${3}" -ref="${4}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" +branch="${3:?Missing required branch name.}" +ref="${4:?Missing required commit reference.}" + +[ "${VORTEX_NOTIFY_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping sending of deployment notifications in Acquia environment." && exit 0 # Custom domain name for the environment, including subdomain. # Examples: "dev.example.com", "test.example.com", "www.example.com" VORTEX_NOTIFY_ENVIRONMENT_DOMAIN="${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN:-}" -pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 - -url="https://${AH_SITE_NAME}.${AH_REALM:-prod}.acquia-sites.com" - if [ -n "${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN}" ]; then url="https://${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN}" +else + url="https://${AH_SITE_NAME:?Missing required value.}.${AH_REALM:-prod}.acquia-sites.com" fi export VORTEX_NOTIFY_PROJECT="${site}" @@ -30,6 +30,8 @@ export VORTEX_NOTIFY_PR_NUMBER="" export VORTEX_NOTIFY_LABEL="${branch}" export VORTEX_NOTIFY_ENVIRONMENT_URL="${url}" +pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 + ./vendor/bin/vortex-notify popd >/dev/null || exit 1 diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/provision.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/provision.sh index b6766313e..634b0e6f6 100755 --- a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/provision.sh +++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/provision.sh @@ -3,11 +3,13 @@ # Acquia Cloud hook: Provision site. # -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" + +[ "${VORTEX_PROVISION_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping provisioning of the site in Acquia environment." && exit 0 pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/purge-cache.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/purge-cache.sh index 02931d6bd..f2537f599 100755 --- a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/purge-cache.sh +++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/purge-cache.sh @@ -4,23 +4,23 @@ # # Environment variables must be set in Acquia UI globally or for each environment. -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" -pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 - -[ "${VORTEX_PURGE_CACHE_ACQUIA_SKIP}" = "1" ] && echo "Skipping purging of cache in Acquia environment." && exit 0 +[ "${VORTEX_PURGE_CACHE_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping purging of cache in Acquia environment." && exit 0 export VORTEX_PLATFORM=acquia -export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}" -export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}" +export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}" +export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}" export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}" export VORTEX_TASK_PURGE_CACHE_ACQUIA_ENV="${VORTEX_TASK_PURGE_CACHE_ACQUIA_ENV:-${target_env}}" export VORTEX_TASK_PURGE_CACHE_ACQUIA_DOMAINS_FILE="${VORTEX_TASK_PURGE_CACHE_ACQUIA_DOMAINS_FILE:-"/var/www/html/${site}.${target_env}/hooks/library/domains.txt"}" +pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 + ./vendor/bin/vortex-task purge-cache popd >/dev/null || exit 1 diff --git a/.vortex/tooling/tests/unit/hook-copy-db.bats b/.vortex/tooling/tests/unit/hook-copy-db.bats new file mode 100644 index 000000000..9385b39b5 --- /dev/null +++ b/.vortex/tooling/tests/unit/hook-copy-db.bats @@ -0,0 +1,169 @@ +#!/usr/bin/env bats +## +# Unit tests for the Acquia database copy hook. +# +# A run ends in a 'pushd' into the Acquia site directory, which no test host +# has, so these tests cover the arguments, the skip flag and the required value +# guards that run before it. +# +# shellcheck disable=SC2030,SC2031,SC2034 + +load ../_helper.bash + +# Exports the values a run requires so that a test can invalidate exactly one. +fixture_variables() { + unset VORTEX_TASK_COPY_DB_ACQUIA_SKIP + export VORTEX_ACQUIA_KEY="test-key" + export VORTEX_ACQUIA_SECRET="test-secret" + export VORTEX_TASK_COPY_DB_ACQUIA_NAME="test-db" +} + +# Runs the hook and asserts that a guard stopped it. +# +# Arguments: +# 1. name: Variable the guard reports. +assert_guard() { + run ./hooks/library/copy-db.sh star_wars dev + assert_failure + assert_output_contains "${1}: Missing required value." +} + +@test "hook-copy-db: missing site argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/copy-db.sh + assert_failure + assert_output_contains "Missing required site name." + + popd >/dev/null || exit 1 +} + +@test "hook-copy-db: empty site argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/copy-db.sh "" dev + assert_failure + assert_output_contains "Missing required site name." + + popd >/dev/null || exit 1 +} + +@test "hook-copy-db: missing target environment argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/copy-db.sh star_wars + assert_failure + assert_output_contains "Missing required target environment name." + + popd >/dev/null || exit 1 +} + +@test "hook-copy-db: empty target environment argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/copy-db.sh star_wars "" + assert_failure + assert_output_contains "Missing required target environment name." + + popd >/dev/null || exit 1 +} + +@test "hook-copy-db: skip" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_TASK_COPY_DB_ACQUIA_SKIP=1 + + run ./hooks/library/copy-db.sh star_wars dev + assert_success + assert_output_contains "Skipping copying of database between Acquia environments." + + popd >/dev/null || exit 1 +} + +@test "hook-copy-db: skip flag other than 1" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_TASK_COPY_DB_ACQUIA_SKIP=0 + + run ./hooks/library/copy-db.sh star_wars dev + assert_failure + assert_output_not_contains "Skipping copying of database between Acquia environments." + + popd >/dev/null || exit 1 +} + +@test "hook-copy-db: unset key" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + unset VORTEX_ACQUIA_KEY + + assert_guard "VORTEX_ACQUIA_KEY" + + popd >/dev/null || exit 1 +} + +@test "hook-copy-db: empty key" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_ACQUIA_KEY="" + + assert_guard "VORTEX_ACQUIA_KEY" + + popd >/dev/null || exit 1 +} + +@test "hook-copy-db: unset secret" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + unset VORTEX_ACQUIA_SECRET + + assert_guard "VORTEX_ACQUIA_SECRET" + + popd >/dev/null || exit 1 +} + +@test "hook-copy-db: empty secret" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_ACQUIA_SECRET="" + + assert_guard "VORTEX_ACQUIA_SECRET" + + popd >/dev/null || exit 1 +} + +@test "hook-copy-db: unset database name" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + unset VORTEX_TASK_COPY_DB_ACQUIA_NAME + + assert_guard "VORTEX_TASK_COPY_DB_ACQUIA_NAME" + + popd >/dev/null || exit 1 +} + +@test "hook-copy-db: empty database name" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_TASK_COPY_DB_ACQUIA_NAME="" + + assert_guard "VORTEX_TASK_COPY_DB_ACQUIA_NAME" + + popd >/dev/null || exit 1 +} diff --git a/.vortex/tooling/tests/unit/hook-copy-files.bats b/.vortex/tooling/tests/unit/hook-copy-files.bats new file mode 100644 index 000000000..de17184b1 --- /dev/null +++ b/.vortex/tooling/tests/unit/hook-copy-files.bats @@ -0,0 +1,146 @@ +#!/usr/bin/env bats +## +# Unit tests for the Acquia file copy hook. +# +# A run ends in a 'pushd' into the Acquia site directory, which no test host +# has, so these tests cover the arguments, the skip flag and the required value +# guards that run before it. +# +# shellcheck disable=SC2030,SC2031,SC2034 + +load ../_helper.bash + +# Exports the values a run requires so that a test can invalidate exactly one. +fixture_variables() { + unset VORTEX_TASK_COPY_FILES_ACQUIA_SKIP + export VORTEX_ACQUIA_KEY="test-key" + export VORTEX_ACQUIA_SECRET="test-secret" +} + +# Runs the hook and asserts that a guard stopped it. +# +# Arguments: +# 1. name: Variable the guard reports. +assert_guard() { + run ./hooks/library/copy-files.sh star_wars dev + assert_failure + assert_output_contains "${1}: Missing required value." +} + +@test "hook-copy-files: missing site argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/copy-files.sh + assert_failure + assert_output_contains "Missing required site name." + + popd >/dev/null || exit 1 +} + +@test "hook-copy-files: empty site argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/copy-files.sh "" dev + assert_failure + assert_output_contains "Missing required site name." + + popd >/dev/null || exit 1 +} + +@test "hook-copy-files: missing target environment argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/copy-files.sh star_wars + assert_failure + assert_output_contains "Missing required target environment name." + + popd >/dev/null || exit 1 +} + +@test "hook-copy-files: empty target environment argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/copy-files.sh star_wars "" + assert_failure + assert_output_contains "Missing required target environment name." + + popd >/dev/null || exit 1 +} + +@test "hook-copy-files: skip" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_TASK_COPY_FILES_ACQUIA_SKIP=1 + + run ./hooks/library/copy-files.sh star_wars dev + assert_success + assert_output_contains "Skipping copying of files between Acquia environments." + + popd >/dev/null || exit 1 +} + +@test "hook-copy-files: skip flag other than 1" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_TASK_COPY_FILES_ACQUIA_SKIP=0 + + run ./hooks/library/copy-files.sh star_wars dev + assert_failure + assert_output_not_contains "Skipping copying of files between Acquia environments." + + popd >/dev/null || exit 1 +} + +@test "hook-copy-files: unset key" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + unset VORTEX_ACQUIA_KEY + + assert_guard "VORTEX_ACQUIA_KEY" + + popd >/dev/null || exit 1 +} + +@test "hook-copy-files: empty key" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_ACQUIA_KEY="" + + assert_guard "VORTEX_ACQUIA_KEY" + + popd >/dev/null || exit 1 +} + +@test "hook-copy-files: unset secret" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + unset VORTEX_ACQUIA_SECRET + + assert_guard "VORTEX_ACQUIA_SECRET" + + popd >/dev/null || exit 1 +} + +@test "hook-copy-files: empty secret" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_ACQUIA_SECRET="" + + assert_guard "VORTEX_ACQUIA_SECRET" + + popd >/dev/null || exit 1 +} diff --git a/.vortex/tooling/tests/unit/hook-notify-deployment.bats b/.vortex/tooling/tests/unit/hook-notify-deployment.bats new file mode 100644 index 000000000..ac7bcd455 --- /dev/null +++ b/.vortex/tooling/tests/unit/hook-notify-deployment.bats @@ -0,0 +1,180 @@ +#!/usr/bin/env bats +## +# Unit tests for the Acquia deployment notification hook. +# +# A run ends in a 'pushd' into the Acquia site directory, which no test host +# has, so these tests cover the arguments, the skip flag and the environment URL +# assembly that run before it. +# +# shellcheck disable=SC2030,SC2031,SC2034 + +load ../_helper.bash + +# Exports the values a run requires so that a test can invalidate exactly one. +fixture_variables() { + unset VORTEX_NOTIFY_ACQUIA_SKIP + unset VORTEX_NOTIFY_ENVIRONMENT_DOMAIN + export AH_SITE_NAME="test-site" +} + +@test "hook-notify-deployment: missing site argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/notify-deployment.sh + assert_failure + assert_output_contains "Missing required site name." + + popd >/dev/null || exit 1 +} + +@test "hook-notify-deployment: empty site argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/notify-deployment.sh "" dev main abc123 + assert_failure + assert_output_contains "Missing required site name." + + popd >/dev/null || exit 1 +} + +@test "hook-notify-deployment: missing target environment argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/notify-deployment.sh star_wars + assert_failure + assert_output_contains "Missing required target environment name." + + popd >/dev/null || exit 1 +} + +@test "hook-notify-deployment: empty target environment argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/notify-deployment.sh star_wars "" main abc123 + assert_failure + assert_output_contains "Missing required target environment name." + + popd >/dev/null || exit 1 +} + +@test "hook-notify-deployment: missing branch argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/notify-deployment.sh star_wars dev + assert_failure + assert_output_contains "Missing required branch name." + + popd >/dev/null || exit 1 +} + +@test "hook-notify-deployment: empty branch argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/notify-deployment.sh star_wars dev "" abc123 + assert_failure + assert_output_contains "Missing required branch name." + + popd >/dev/null || exit 1 +} + +@test "hook-notify-deployment: missing commit reference argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/notify-deployment.sh star_wars dev main + assert_failure + assert_output_contains "Missing required commit reference." + + popd >/dev/null || exit 1 +} + +@test "hook-notify-deployment: empty commit reference argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/notify-deployment.sh star_wars dev main "" + assert_failure + assert_output_contains "Missing required commit reference." + + popd >/dev/null || exit 1 +} + +@test "hook-notify-deployment: skip" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_NOTIFY_ACQUIA_SKIP=1 + + run ./hooks/library/notify-deployment.sh star_wars dev main abc123 + assert_success + assert_output_contains "Skipping sending of deployment notifications in Acquia environment." + + popd >/dev/null || exit 1 +} + +@test "hook-notify-deployment: skip flag other than 1" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_NOTIFY_ACQUIA_SKIP=0 + + run ./hooks/library/notify-deployment.sh star_wars dev main abc123 + assert_failure + assert_output_not_contains "Skipping sending of deployment notifications in Acquia environment." + + popd >/dev/null || exit 1 +} + +@test "hook-notify-deployment: unset site name" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + unset AH_SITE_NAME + + run ./hooks/library/notify-deployment.sh star_wars dev main abc123 + assert_failure + assert_output_contains "AH_SITE_NAME: Missing required value." + + popd >/dev/null || exit 1 +} + +@test "hook-notify-deployment: empty site name" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export AH_SITE_NAME="" + + run ./hooks/library/notify-deployment.sh star_wars dev main abc123 + assert_failure + assert_output_contains "AH_SITE_NAME: Missing required value." + + popd >/dev/null || exit 1 +} + +@test "hook-notify-deployment: domain override replaces the site name" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + unset AH_SITE_NAME + export VORTEX_NOTIFY_ENVIRONMENT_DOMAIN="www.example.com" + + run ./hooks/library/notify-deployment.sh star_wars dev main abc123 + assert_failure + assert_output_not_contains "AH_SITE_NAME: Missing required value." + + popd >/dev/null || exit 1 +} diff --git a/.vortex/tooling/tests/unit/hook-provision.bats b/.vortex/tooling/tests/unit/hook-provision.bats new file mode 100644 index 000000000..1b7fd2bcb --- /dev/null +++ b/.vortex/tooling/tests/unit/hook-provision.bats @@ -0,0 +1,89 @@ +#!/usr/bin/env bats +## +# Unit tests for the Acquia provision hook. +# +# A run ends in a 'pushd' into the Acquia site directory, which no test host +# has, so these tests cover the arguments and the skip flag that run before it. +# +# shellcheck disable=SC2030,SC2031,SC2034 + +load ../_helper.bash + +# Exports the values a run requires so that a test can invalidate exactly one. +fixture_variables() { + unset VORTEX_PROVISION_ACQUIA_SKIP +} + +@test "hook-provision: missing site argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/provision.sh + assert_failure + assert_output_contains "Missing required site name." + + popd >/dev/null || exit 1 +} + +@test "hook-provision: empty site argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/provision.sh "" dev + assert_failure + assert_output_contains "Missing required site name." + + popd >/dev/null || exit 1 +} + +@test "hook-provision: missing target environment argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/provision.sh star_wars + assert_failure + assert_output_contains "Missing required target environment name." + + popd >/dev/null || exit 1 +} + +@test "hook-provision: empty target environment argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/provision.sh star_wars "" + assert_failure + assert_output_contains "Missing required target environment name." + + popd >/dev/null || exit 1 +} + +@test "hook-provision: skip" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_PROVISION_ACQUIA_SKIP=1 + + run ./hooks/library/provision.sh star_wars dev + assert_success + assert_output_contains "Skipping provisioning of the site in Acquia environment." + + popd >/dev/null || exit 1 +} + +@test "hook-provision: skip flag other than 1" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_PROVISION_ACQUIA_SKIP=0 + + run ./hooks/library/provision.sh star_wars dev + assert_failure + assert_output_not_contains "Skipping provisioning of the site in Acquia environment." + + popd >/dev/null || exit 1 +} diff --git a/.vortex/tooling/tests/unit/hook-purge-cache.bats b/.vortex/tooling/tests/unit/hook-purge-cache.bats new file mode 100644 index 000000000..08b86275a --- /dev/null +++ b/.vortex/tooling/tests/unit/hook-purge-cache.bats @@ -0,0 +1,146 @@ +#!/usr/bin/env bats +## +# Unit tests for the Acquia cache purge hook. +# +# A run ends in a 'pushd' into the Acquia site directory, which no test host +# has, so these tests cover the arguments, the skip flag and the required value +# guards that run before it. +# +# shellcheck disable=SC2030,SC2031,SC2034 + +load ../_helper.bash + +# Exports the values a run requires so that a test can invalidate exactly one. +fixture_variables() { + unset VORTEX_PURGE_CACHE_ACQUIA_SKIP + export VORTEX_ACQUIA_KEY="test-key" + export VORTEX_ACQUIA_SECRET="test-secret" +} + +# Runs the hook and asserts that a guard stopped it. +# +# Arguments: +# 1. name: Variable the guard reports. +assert_guard() { + run ./hooks/library/purge-cache.sh star_wars dev + assert_failure + assert_output_contains "${1}: Missing required value." +} + +@test "hook-purge-cache: missing site argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/purge-cache.sh + assert_failure + assert_output_contains "Missing required site name." + + popd >/dev/null || exit 1 +} + +@test "hook-purge-cache: empty site argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/purge-cache.sh "" dev + assert_failure + assert_output_contains "Missing required site name." + + popd >/dev/null || exit 1 +} + +@test "hook-purge-cache: missing target environment argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/purge-cache.sh star_wars + assert_failure + assert_output_contains "Missing required target environment name." + + popd >/dev/null || exit 1 +} + +@test "hook-purge-cache: empty target environment argument" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + + run ./hooks/library/purge-cache.sh star_wars "" + assert_failure + assert_output_contains "Missing required target environment name." + + popd >/dev/null || exit 1 +} + +@test "hook-purge-cache: skip" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_PURGE_CACHE_ACQUIA_SKIP=1 + + run ./hooks/library/purge-cache.sh star_wars dev + assert_success + assert_output_contains "Skipping purging of cache in Acquia environment." + + popd >/dev/null || exit 1 +} + +@test "hook-purge-cache: skip flag other than 1" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_PURGE_CACHE_ACQUIA_SKIP=0 + + run ./hooks/library/purge-cache.sh star_wars dev + assert_failure + assert_output_not_contains "Skipping purging of cache in Acquia environment." + + popd >/dev/null || exit 1 +} + +@test "hook-purge-cache: unset key" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + unset VORTEX_ACQUIA_KEY + + assert_guard "VORTEX_ACQUIA_KEY" + + popd >/dev/null || exit 1 +} + +@test "hook-purge-cache: empty key" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_ACQUIA_KEY="" + + assert_guard "VORTEX_ACQUIA_KEY" + + popd >/dev/null || exit 1 +} + +@test "hook-purge-cache: unset secret" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + unset VORTEX_ACQUIA_SECRET + + assert_guard "VORTEX_ACQUIA_SECRET" + + popd >/dev/null || exit 1 +} + +@test "hook-purge-cache: empty secret" { + pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1 + + fixture_variables + export VORTEX_ACQUIA_SECRET="" + + assert_guard "VORTEX_ACQUIA_SECRET" + + popd >/dev/null || exit 1 +} diff --git a/hooks/library/copy-db.sh b/hooks/library/copy-db.sh index 807bbf357..bf52a5e0d 100755 --- a/hooks/library/copy-db.sh +++ b/hooks/library/copy-db.sh @@ -4,23 +4,23 @@ # # Environment variables must be set in Acquia UI globally or for each environment. -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" -pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 - -[ "${VORTEX_TASK_COPY_DB_ACQUIA_SKIP}" = "1" ] && echo "Skipping copying of database between Acquia environments." && exit 0 +[ "${VORTEX_TASK_COPY_DB_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping copying of database between Acquia environments." && exit 0 export VORTEX_PLATFORM=acquia -export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}" -export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}" +export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}" +export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}" export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}" export VORTEX_TASK_COPY_DB_ACQUIA_SRC="${VORTEX_TASK_COPY_DB_ACQUIA_SRC:-prod}" export VORTEX_TASK_COPY_DB_ACQUIA_DST="${VORTEX_TASK_COPY_DB_ACQUIA_DST:-${target_env}}" -export VORTEX_TASK_COPY_DB_ACQUIA_NAME="${VORTEX_TASK_COPY_DB_ACQUIA_NAME?not set}" +export VORTEX_TASK_COPY_DB_ACQUIA_NAME="${VORTEX_TASK_COPY_DB_ACQUIA_NAME:?Missing required value.}" + +pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 ./vendor/bin/vortex-task copy-db diff --git a/hooks/library/copy-files.sh b/hooks/library/copy-files.sh index 8b76bc55e..b2f176078 100755 --- a/hooks/library/copy-files.sh +++ b/hooks/library/copy-files.sh @@ -4,23 +4,23 @@ # # Environment variables must be set in Acquia UI globally or for each environment. -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" -pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 - -[ "${VORTEX_TASK_COPY_FILES_ACQUIA_SKIP}" = "1" ] && echo "Skipping copying of files between Acquia environments." && exit 0 +[ "${VORTEX_TASK_COPY_FILES_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping copying of files between Acquia environments." && exit 0 export VORTEX_PLATFORM=acquia -export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}" -export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}" +export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}" +export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}" export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}" export VORTEX_TASK_COPY_FILES_ACQUIA_SRC="${VORTEX_TASK_COPY_FILES_ACQUIA_SRC:-prod}" export VORTEX_TASK_COPY_FILES_ACQUIA_DST="${VORTEX_TASK_COPY_FILES_ACQUIA_DST:-${target_env}}" +pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 + ./vendor/bin/vortex-task copy-files popd >/dev/null || exit 1 diff --git a/hooks/library/notify-deployment.sh b/hooks/library/notify-deployment.sh index b09e5f992..3590e0c7d 100755 --- a/hooks/library/notify-deployment.sh +++ b/hooks/library/notify-deployment.sh @@ -3,24 +3,24 @@ # Acquia Cloud hook: Send deployment notifications. # -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" -branch="${3}" -ref="${4}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" +branch="${3:?Missing required branch name.}" +ref="${4:?Missing required commit reference.}" + +[ "${VORTEX_NOTIFY_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping sending of deployment notifications in Acquia environment." && exit 0 # Custom domain name for the environment, including subdomain. # Examples: "dev.example.com", "test.example.com", "www.example.com" VORTEX_NOTIFY_ENVIRONMENT_DOMAIN="${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN:-}" -pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 - -url="https://${AH_SITE_NAME}.${AH_REALM:-prod}.acquia-sites.com" - if [ -n "${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN}" ]; then url="https://${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN}" +else + url="https://${AH_SITE_NAME:?Missing required value.}.${AH_REALM:-prod}.acquia-sites.com" fi export VORTEX_NOTIFY_PROJECT="${site}" @@ -30,6 +30,8 @@ export VORTEX_NOTIFY_PR_NUMBER="" export VORTEX_NOTIFY_LABEL="${branch}" export VORTEX_NOTIFY_ENVIRONMENT_URL="${url}" +pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 + ./vendor/bin/vortex-notify popd >/dev/null || exit 1 diff --git a/hooks/library/provision.sh b/hooks/library/provision.sh index b6766313e..634b0e6f6 100755 --- a/hooks/library/provision.sh +++ b/hooks/library/provision.sh @@ -3,11 +3,13 @@ # Acquia Cloud hook: Provision site. # -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" + +[ "${VORTEX_PROVISION_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping provisioning of the site in Acquia environment." && exit 0 pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 diff --git a/hooks/library/purge-cache.sh b/hooks/library/purge-cache.sh index 02931d6bd..f2537f599 100755 --- a/hooks/library/purge-cache.sh +++ b/hooks/library/purge-cache.sh @@ -4,23 +4,23 @@ # # Environment variables must be set in Acquia UI globally or for each environment. -set -e +set -eu [ "${VORTEX_DEBUG-}" = "1" ] && set -x -site="${1}" -target_env="${2}" +site="${1:?Missing required site name.}" +target_env="${2:?Missing required target environment name.}" -pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 - -[ "${VORTEX_PURGE_CACHE_ACQUIA_SKIP}" = "1" ] && echo "Skipping purging of cache in Acquia environment." && exit 0 +[ "${VORTEX_PURGE_CACHE_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping purging of cache in Acquia environment." && exit 0 export VORTEX_PLATFORM=acquia -export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}" -export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}" +export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}" +export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}" export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}" export VORTEX_TASK_PURGE_CACHE_ACQUIA_ENV="${VORTEX_TASK_PURGE_CACHE_ACQUIA_ENV:-${target_env}}" export VORTEX_TASK_PURGE_CACHE_ACQUIA_DOMAINS_FILE="${VORTEX_TASK_PURGE_CACHE_ACQUIA_DOMAINS_FILE:-"/var/www/html/${site}.${target_env}/hooks/library/domains.txt"}" +pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1 + ./vendor/bin/vortex-task purge-cache popd >/dev/null || exit 1