From 94ae8bc02f532147ed30e0979ec4950fa4c5138c Mon Sep 17 00:00:00 2001 From: Andy Thompson Date: Wed, 5 Aug 2020 10:52:15 +0100 Subject: [PATCH 01/12] Fix multiple argument run/passthru escaping and migrate most to use it * Multiple argument run/passthru was splitting arguments with spaces in, and losing empty arguments * Some still use single argument run/passthru due to use of shell, but may be dealt with later --- .../docker/image/console/root/lib/sidekick.sh | 84 ++++++++++++++----- .../console/root/lib/task/assets/apply.sh | 2 +- .../console/root/lib/task/assets/dump.sh | 6 +- .../console/root/lib/task/composer/install.sh | 2 +- .../console/root/lib/task/overlay/apply.sh | 2 +- .../console/root/lib/task/skeleton/apply.sh | 2 +- src/_base/harness/attributes/common.yml | 10 +-- src/_base/harness/config/commands.yml | 21 ++--- src/_base/harness/config/events.yml | 17 ++-- .../root/lib/task/composer/install.sh.twig | 4 +- src/akeneo/harness.yml | 42 +++++----- .../image/console/root/lib/task/media/dump.sh | 4 +- src/drupal8/harness.yml | 22 ++--- src/magento1/harness.yml | 58 ++++++------- .../root/lib/task/magento/dump-config.sh | 8 +- src/magento2/harness.yml | 64 +++++++------- .../root/lib/task/skeleton/apply.sh.twig | 12 +-- .../root/lib/task/spryker/build.sh.twig | 12 +-- .../console/root/lib/task/spryker/demodata.sh | 2 +- .../console/root/lib/task/spryker/init.sh | 4 +- .../console/root/lib/task/spryker/install.sh | 2 +- .../console/root/lib/task/spryker/migrate.sh | 2 +- src/spryker/harness.yml | 8 +- .../root/lib/task/wordpress/download.sh.twig | 4 +- src/wordpress/harness.yml | 18 ++-- 25 files changed, 228 insertions(+), 184 deletions(-) diff --git a/src/_base/docker/image/console/root/lib/sidekick.sh b/src/_base/docker/image/console/root/lib/sidekick.sh index e26970fcc..ad3f09ce7 100644 --- a/src/_base/docker/image/console/root/lib/sidekick.sh +++ b/src/_base/docker/image/console/root/lib/sidekick.sh @@ -13,38 +13,57 @@ TASKS="/lib/task" task() { - local task_file="${TASKS}/${1//:/\/}.sh" - local task_name="task_${1//:/_}" + local TASK_FILE="${TASKS}/${1//:/\/}.sh" + local TASK_NAME="task_${1//:/_}" # shellcheck source=/dev/null - declare -F "$task_name" &>/dev/null || source "$task_file" + declare -F "${TASK_NAME}" &>/dev/null || source "${TASK_FILE}" shift - $task_name "$@" + "${TASK_NAME}" "$@" } prompt() { if [ "${RUN_CWD}" != "$(pwd)" ]; then RUN_CWD="$(pwd)" - echo -e "\\033[1m[\\033[0mdocker(console):$(pwd)\\033[1m]:\\033[0m" + echo -e "\\033[1m[\\033[0mdocker(console):$(pwd)\\033[1m]:\\033[0m" >&2 fi } run() { - local COMMAND="$*" + local -r COMMAND_DEPRECATED="$*" + local -r COMMAND=("$@") + local DEPRECATED_MODE=no + + if [[ "${COMMAND[0]}" = *" "* ]]; then + # echo "deprecated: support for passing multiple arguments in the following line will be removed in a future version" >&2 + # echo "run '${COMMAND_DEPRECATED[*]}'" >&2 + # echo "a future major version will only support:" >&2 + # echo "run ${COMMAND_DEPRECATED[*]}" >&2 + # echo >&2 + DEPRECATED_MODE=yes + fi + if [ "$VERBOSE" = "no" ]; then - prompt - echo " > ${COMMAND[*]}" - setCommandIndicator "$INDICATOR_RUNNING" + prompt + if [ "${DEPRECATED_MODE}" = "yes" ]; then + echo " > ${COMMAND_DEPRECATED[*]}" >&2 + setCommandIndicator "${INDICATOR_RUNNING}" + bash -c "${COMMAND_DEPRECATED[@]}" > /tmp/my127ws-stdout.txt 2> /tmp/my127ws-stderr.txt + else + echo " >$(printf ' %q' "${COMMAND[@]}")" >&2 + setCommandIndicator "${INDICATOR_RUNNING}" + "${COMMAND[@]}" > /tmp/my127ws-stdout.txt 2> /tmp/my127ws-stderr.txt + fi - if ! bash -c "${COMMAND[@]}" > /tmp/my127ws-stdout.txt 2> /tmp/my127ws-stderr.txt; then - setCommandIndicator "$INDICATOR_ERROR" + if [ "$?" -gt 0 ]; then + setCommandIndicator "${INDICATOR_ERROR}" - if [ "$APP_BUILD" = "static" ]; then + if [ "${APP_BUILD}" = "static" ]; then echo "Command failed. stdout:" cat /tmp/my127ws-stdout.txt echo @@ -62,8 +81,10 @@ run() exit 1 else - setCommandIndicator "$INDICATOR_SUCCESS" + setCommandIndicator "${INDICATOR_SUCCESS}" fi + elif [ "${DEPRECATED_MODE}" = "yes" ]; then + passthru "${COMMAND_DEPRECATED[@]}" else passthru "${COMMAND[@]}" fi @@ -71,20 +92,39 @@ run() passthru() { - prompt + local -r COMMAND_DEPRECATED="$*" + local -r COMMAND=("$@") + local DEPRECATED_MODE=no + + if [[ "${COMMAND[0]}" = *" "* ]]; then + # echo "deprecated: support for passing multiple arguments in the following line will be removed in a future version" >&2 + # echo "passthru '${COMMAND_DEPRECATED[*]}'" >&2 + # echo "a future major version will only support:" >&2 + # echo "passthru ${COMMAND_DEPRECATED[*]}" >&2 + # echo >&2 + DEPRECATED_MODE=yes + fi - echo -e "\\033[${INDICATOR_PASSTHRU}■\\033[0m > $*" + prompt - if ! bash -c "$@"; then - exit 1 + if [ "${DEPRECATED_MODE}" = "yes" ]; then + echo -e "\\033[${INDICATOR_PASSTHRU}■\\033[0m > $*" >&2 + if ! bash -e -c "${COMMAND_DEPRECATED[@]}" >&2; then + exit 1 + fi + else + echo -e "\\033[${INDICATOR_PASSTHRU}■\\033[0m >$(printf ' %q' "${COMMAND[@]}")" >&2 + if ! "${COMMAND[@]}"; then + exit 1 + fi fi } setCommandIndicator() { - echo -ne "\\033[1A"; - echo -ne "\\033[$1" - echo -n "■" - echo -ne "\\033[0m" - echo -ne "\\033[1E"; + echo -ne "\\033[1A" >&2 + echo -ne "\\033[$1" >&2 + echo -n "■" >&2 + echo -ne "\\033[0m" >&2 + echo -ne "\\033[1E" >&2 } diff --git a/src/_base/docker/image/console/root/lib/task/assets/apply.sh b/src/_base/docker/image/console/root/lib/task/assets/apply.sh index 09f55f8bc..a946ddbea 100644 --- a/src/_base/docker/image/console/root/lib/task/assets/apply.sh +++ b/src/_base/docker/image/console/root/lib/task/assets/apply.sh @@ -31,6 +31,6 @@ function task_assets_apply() for file in "/app/${ASSETS_DIR}/"*.files.{tgz,tar.gz}; do [ -f "$file" ] || continue - run "tar -xvf ${file} -C /app" + run tar -xvf "${file}" -C /app done } diff --git a/src/_base/docker/image/console/root/lib/task/assets/dump.sh b/src/_base/docker/image/console/root/lib/task/assets/dump.sh index d6a78d910..42ed7cb7e 100644 --- a/src/_base/docker/image/console/root/lib/task/assets/dump.sh +++ b/src/_base/docker/image/console/root/lib/task/assets/dump.sh @@ -5,13 +5,13 @@ function task_assets_dump() local ASSETS_DIR="${ASSETS_DIR:-tools/assets/development}" if [ ! -d "/app/${ASSETS_DIR}" ]; then - run "mkdir -p /app/${ASSETS_DIR}" + run mkdir -p "/app/${ASSETS_DIR}" fi if [ "${DB_PLATFORM}" == "mysql" ]; then - run "mysqldump -h ${DB_HOST} -u ${DB_USER} -p${DB_PASS} ${DB_NAME} | gzip > /app/${ASSETS_DIR}/${DB_NAME}.sql.gz" + run mysqldump -h "${DB_HOST}" -u "${DB_USER}" "-p${DB_PASS}" "${DB_NAME}" | gzip > "/app/${ASSETS_DIR}/${DB_NAME}.sql.gz" elif [ "${DB_PLATFORM}" == "postgres" ]; then - run "PGPASSWORD=$DB_PASS pg_dump -h ${DB_HOST} -U ${DB_USER} ${DB_NAME} | gzip > /app/${ASSETS_DIR}/${DB_NAME}.sql.gz" + PGPASSWORD=$DB_PASS run pg_dump -h ${DB_HOST} -U ${DB_USER} ${DB_NAME} | gzip > /app/${ASSETS_DIR}/${DB_NAME}.sql.gz" elif [ -n "${DB_PLATFORM}" ]; then (>&2 echo "invalid database type") exit 1 diff --git a/src/_base/docker/image/console/root/lib/task/composer/install.sh b/src/_base/docker/image/console/root/lib/task/composer/install.sh index 119ad13aa..650c98315 100644 --- a/src/_base/docker/image/console/root/lib/task/composer/install.sh +++ b/src/_base/docker/image/console/root/lib/task/composer/install.sh @@ -2,5 +2,5 @@ function task_composer_install() { - passthru "composer install --no-interaction" + passthru composer install --no-interaction } diff --git a/src/_base/docker/image/console/root/lib/task/overlay/apply.sh b/src/_base/docker/image/console/root/lib/task/overlay/apply.sh index 8dc363891..33fec2d1c 100644 --- a/src/_base/docker/image/console/root/lib/task/overlay/apply.sh +++ b/src/_base/docker/image/console/root/lib/task/overlay/apply.sh @@ -2,5 +2,5 @@ function task_overlay_apply() { - run "rsync --exclude='*.twig' --exclude='_twig' -a /home/build/application/overlay/ /app/" + run rsync --exclude='*.twig' --exclude='_twig' -a /home/build/application/overlay/ /app/ } diff --git a/src/_base/docker/image/console/root/lib/task/skeleton/apply.sh b/src/_base/docker/image/console/root/lib/task/skeleton/apply.sh index c256f9ee4..700ab0646 100644 --- a/src/_base/docker/image/console/root/lib/task/skeleton/apply.sh +++ b/src/_base/docker/image/console/root/lib/task/skeleton/apply.sh @@ -2,5 +2,5 @@ function task_skeleton_apply() { - run "rsync --exclude='*.twig' --exclude='_twig' -a /home/build/application/skeleton/ /app/" + run rsync --exclude='*.twig' --exclude='_twig' -a /home/build/application/skeleton/ /app/ } diff --git a/src/_base/harness/attributes/common.yml b/src/_base/harness/attributes/common.yml index 5da795fb3..8116f9c02 100644 --- a/src/_base/harness/attributes/common.yml +++ b/src/_base/harness/attributes/common.yml @@ -123,18 +123,18 @@ attributes.default: steps: - | if [ "$APP_BUILD" == "static" ] && [ -f package-lock.json ]; then - run "npm clean-install" + run npm clean-install else - run "npm install" + run npm install fi - | if [ "$(jq ".scripts.build != null" < package.json)" != "false" ]; then - run "npm run build" + run npm run build fi - | if [ "$APP_BUILD" == "static" ]; then - run "rm -rf node_modules/" - run "npm cache clean --force" + run rm -rf node_modules/ + run npm cache clean --force fi git: diff --git a/src/_base/harness/config/commands.yml b/src/_base/harness/config/commands.yml index 07f276164..7130c6be1 100644 --- a/src/_base/harness/config/commands.yml +++ b/src/_base/harness/config/commands.yml @@ -92,7 +92,7 @@ command('db console'): COMPOSE_PROJECT_NAME: = @('namespace') exec: | #!bash(workspace:/)|@ - passthru "docker-compose exec console bash -c 'mysql -h\"\$DB_HOST\" -u\"\$DB_USER\" -p\"\$DB_PASS\" \"\$DB_NAME\"'" + passthru docker-compose exec console mysql --host "${DB_HOST}" --user "${DB_USER}" "-p${DB_PASS}" "${DB_NAME}" command('assets download'): env: @@ -100,7 +100,7 @@ command('assets download'): AWS_KEY: =@('aws.key') exec: | #!bash(workspace:/)|@ - passthru ws.aws s3 sync @('assets.remote') @('assets.local') + passthru ws.aws s3 sync '@('assets.remote')' '@('assets.local')' command('assets upload'): env: @@ -108,7 +108,7 @@ command('assets upload'): AWS_KEY: =@('aws.key') exec: | #!bash(workspace:/)|@ - passthru ws.aws s3 sync @('assets.local') @('assets.remote') + passthru ws.aws s3 sync '@('assets.local')' '@('assets.remote')' command('feature docker-sync (on|off)'): env: @@ -135,28 +135,28 @@ command('frontend build'): COMPOSE_PROJECT_NAME: = @('namespace') exec: | #!bash(workspace:/)|@ - passthru "docker-compose exec -u build console bash -i -c 'app build:frontend'" + passthru docker-compose exec -u build console app build:frontend command('frontend watch'): env: COMPOSE_PROJECT_NAME: = @('namespace') exec: | #!bash(workspace:/)|@ - passthru "docker-compose exec -u build console bash -i -c 'cd @('frontend.path'); @('frontend.watch')'" + passthru docker-compose exec -u build --workdir '@('frontend.path')' console @('frontend.watch') command('frontend console'): env: COMPOSE_PROJECT_NAME: = @('namespace') exec: | #!bash(workspace:/)|@ - passthru "docker-compose exec -u build console bash -i -c 'cd @('frontend.path'); bash'" + passthru docker-compose exec -u build console --workdir '@('frontend.path')' bash command('port '): env: COMPOSE_PROJECT_NAME: = @('namespace') exec: | #!bash(workspace:/)|= - passthru docker port $(docker-compose ps -q ={input.argument('service')}) + passthru docker port "$(docker-compose ps -q ={input.argument('service')})" command('service php-fpm restart'): env: @@ -164,8 +164,8 @@ command('service php-fpm restart'): exec: | #!bash(workspace:/)|@ passthru ws install --step=prepare - passthru "docker-compose exec console bash -c 'cp -r /.my127ws/docker/image/console/root/usr/local/etc/php/conf.d/* /usr/local/etc/php/conf.d/'" - passthru "docker-compose exec php-fpm bash -c 'cp -r /.my127ws/docker/image/php-fpm/root/usr/local/etc/php/conf.d/* /usr/local/etc/php/conf.d/'" + passthru docker-compose exec console bash -c 'cp -r /.my127ws/docker/image/console/root/usr/local/etc/php/conf.d/* /usr/local/etc/php/conf.d/' + passthru docker-compose exec php-fpm bash -c 'cp -r /.my127ws/docker/image/php-fpm/root/usr/local/etc/php/conf.d/* /usr/local/etc/php/conf.d/' passthru docker-compose exec php-fpm supervisorctl restart php-fpm command('set '): @@ -217,9 +217,10 @@ command('feature xdebug cli (on|off)'): command('db import '): env: COMPOSE_PROJECT_NAME: = @('namespace') + DATABASE_FILE: = input.argument('database_file') exec: | #!bash(workspace:/)|= - passthru "docker-compose exec -u build console bash -i -c 'app database:import ={input.argument('database_file')}'" + passthru docker-compose exec -u build console app database:import "$DATABASE_FILE" command('harness update existing'): env: diff --git a/src/_base/harness/config/events.yml b/src/_base/harness/config/events.yml index dcdc8704f..3b9ee0bc7 100644 --- a/src/_base/harness/config/events.yml +++ b/src/_base/harness/config/events.yml @@ -3,10 +3,13 @@ after('harness.install'): | #!bash ws enable -after('harness.refresh'): | - #!bash(workspace:/)|@ - run docker-compose -p @('namespace') stop - passthru "docker-compose config --services | grep -v php-fpm | xargs docker-compose pull" - passthru "docker-compose config --services | grep -v cron | grep -v job-queue-consumer | grep -v jenkins-runner | xargs docker-compose build --pull" - passthru "docker-compose config --services | grep -v cron | grep -v job-queue-consumer | grep -v jenkins-runner | xargs docker-compose up -d" - run docker-compose -p @('namespace') up -d --build +after('harness.refresh'): + env: + COMPOSE_PROJECT: = @('namespace') + exec: | + #!bash(workspace:/)|@ + run docker-compose stop + passthru "docker-compose config --services | grep -v php-fpm | xargs docker-compose pull" + passthru "docker-compose config --services | grep -v cron | grep -v job-queue-consumer | grep -v jenkins-runner | xargs docker-compose build --pull" + passthru "docker-compose config --services | grep -v cron | grep -v job-queue-consumer | grep -v jenkins-runner | xargs docker-compose up -d" + run docker-compose up -d --build diff --git a/src/akeneo/docker/image/console/root/lib/task/composer/install.sh.twig b/src/akeneo/docker/image/console/root/lib/task/composer/install.sh.twig index e1d5e2d5d..b9e2a9806 100644 --- a/src/akeneo/docker/image/console/root/lib/task/composer/install.sh.twig +++ b/src/akeneo/docker/image/console/root/lib/task/composer/install.sh.twig @@ -3,8 +3,8 @@ function task_composer_install() { {% if @('app.mode') == 'development' %} - passthru "composer install --no-interaction --optimize-autoloader" + passthru composer install --no-interaction --optimize-autoloader {% else %} - passthru "composer install --no-interaction --no-dev --optimize-autoloader" + passthru composer install --no-interaction --no-dev --optimize-autoloader {% endif %} } diff --git a/src/akeneo/harness.yml b/src/akeneo/harness.yml index 56d9b8493..d15260e98 100644 --- a/src/akeneo/harness.yml +++ b/src/akeneo/harness.yml @@ -42,34 +42,34 @@ attributes: default_authentication_plugin: mysql_native_password import: steps: - - passthru "echo 'Importing database file'" + - passthru echo 'Importing database file' - run "set -e -o pipefail; pv --force \"$1\" | zcat | mysql -h \"$DB_HOST\" -u \"$DB_ADMIN_USER\" -p\"$DB_ADMIN_PASS\" \"$DB_NAME\"" - - passthru "bin/console doctrine:migrations:migrate --no-interaction --allow-no-migration" - - passthru "echo 'Reindexing Elasticsearch'" - - run "bin/console akeneo:elasticsearch:reset-indexes -n" - - run "bin/console pim:product:index --all" - - run "bin/console pim:product-model:index --all" - - passthru "echo 'Clearing cache'" - - run "bin/console c:c" - - passthru "echo 'Done'" + - passthru bin/console doctrine:migrations:migrate --no-interaction --allow-no-migration + - passthru echo 'Reindexing Elasticsearch' + - run bin/console akeneo:elasticsearch:reset-indexes -n + - run bin/console pim:product:index --all + - run bin/console pim:product-model:index --all + - passthru echo 'Clearing cache' + - run bin/console c:c + - passthru echo 'Done' backend: build: steps: - task "composer:install" install: steps: - - passthru "bin/console pim:installer:db --catalog vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/InstallerBundle/Resources/fixtures/minimal" + - passthru bin/console pim:installer:db --catalog vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/InstallerBundle/Resources/fixtures/minimal - task "overlay:apply" - task "assets:dump" init: steps: - - passthru "bin/console doctrine:migrations:migrate --no-interaction --allow-no-migration" - - run "bin/console akeneo:elasticsearch:reset-indexes --no-interaction" - - run "bin/console pim:product:index --all" - - run "bin/console pim:product-model:index --all" + - passthru bin/console doctrine:migrations:migrate --no-interaction --allow-no-migration + - run bin/console akeneo:elasticsearch:reset-indexes --no-interaction + - run bin/console pim:product:index --all + - run bin/console pim:product-model:index --all migrate: steps: - - passthru "bin/console doctrine:migrations:migrate --no-interaction --allow-no-migration" + - passthru bin/console doctrine:migrations:migrate --no-interaction --allow-no-migration cron: jobs: - 30 1 * * * /cron-run-with-env.sh /app/bin/console pim:versioning:refresh --env=prod @@ -88,15 +88,15 @@ attributes: build: when: -f "package.json" steps: - - run "yarn install" - - run "bin/console pim:installer:assets --symlink --clean" + - run yarn install + - run bin/console pim:installer:assets --symlink --clean - | if [ "$APP_BUILD" == "static" ]; then - run "yarn run webpack" - run "rm -rf node_modules/" - run "yarn cache clean" + run yarn run webpack + run rm -rf node_modules/ + run yarn cache clean else - run "yarn run webpack-dev" + run yarn run webpack-dev fi docker: image: diff --git a/src/drupal8/docker/image/console/root/lib/task/media/dump.sh b/src/drupal8/docker/image/console/root/lib/task/media/dump.sh index 8a59bb306..6d7f62b65 100644 --- a/src/drupal8/docker/image/console/root/lib/task/media/dump.sh +++ b/src/drupal8/docker/image/console/root/lib/task/media/dump.sh @@ -5,11 +5,11 @@ function task_media_dump() local ASSETS_DIR="${ASSETS_DIR:-tools/assets/development}" if [ ! -d "/app/${ASSETS_DIR}" ]; then - run "mkdir -p /app/${ASSETS_DIR}" + run mkdir -p "/app/${ASSETS_DIR}" fi if [ ! -d "/app/docroot/sites/default/files" ]; then - run "mkdir -p /app/docroot/sites/default/files" + run mkdir -p "/app/docroot/sites/default/files" fi cd /app || exit diff --git a/src/drupal8/harness.yml b/src/drupal8/harness.yml index 2f5c99c46..c2c1f57bc 100644 --- a/src/drupal8/harness.yml +++ b/src/drupal8/harness.yml @@ -39,15 +39,15 @@ attributes: install: steps: - | - passthru "drupal site:install standard \ + passthru drupal site:install standard \ --langcode=en \ \ --db-type=mysql \ - --db-host=${DB_HOST} \ - --db-name=${DB_NAME} \ - --db-user=${DB_USER} \ - --db-pass=${DB_PASS} \ - --db-port=3306 \ + "--db-host=${DB_HOST}" \ + "--db-name=${DB_NAME}" \ + "--db-user=${DB_USER}" \ + "--db-pass=${DB_PASS}" \ + "--db-port=3306" \ \ --site-name=Drupal \ --site-mail=admin@example.com \ @@ -55,15 +55,15 @@ attributes: --account-name=admin \ --account-mail=admin@example.com \ --account-pass=admin123" - - run "chmod 755 /app/docroot/sites/default" + - run chmod 755 /app/docroot/sites/default - task "overlay:apply" - task "assets:dump" migrate: steps: - - run "drupal cache:rebuild" - - run "drupal update:entities" - - run "drupal update:execute" - - run "drupal cache:rebuild" + - run drupal cache:rebuild + - run drupal update:entities + - run drupal update:execute + - run drupal cache:rebuild docker: image: console: = 'my127/drupal8:' ~ @('php.version') ~ '-fpm-stretch-console' diff --git a/src/magento1/harness.yml b/src/magento1/harness.yml index 94fb0e9c7..33eed8a86 100644 --- a/src/magento1/harness.yml +++ b/src/magento1/harness.yml @@ -56,44 +56,44 @@ attributes: - task "n98:install" install: steps: - - run "rm -f /app/public/app/etc/local.xml" + - run rm -f /app/public/app/etc/local.xml - | - passthru "php public/install.php -- \ - --license_agreement_accepted 'yes' \ - --locale 'en_GB' \ + passthru php public/install.php -- \ + --license_agreement_accepted yes \ + --locale en_GB \ --timezone 'Europe/London' \ - --default_currency 'GBP' \ - --db_model 'mysql4' \ - --db_host '${DB_HOST}' \ - --db_name '${DB_NAME}' \ - --db_user '${DB_USER}' \ - --db_pass '${DB_PASS}' \ - --url 'https://${APP_HOST}/' \ - --skip_url_validation 'yes' \ - --use_rewrites 'yes' \ - --use_secure 'yes' \ - --secure_base_url 'https://${APP_HOST}/' \ - --use_secure_admin 'yes' \ - --admin_firstname 'First' \ - --admin_lastname 'Last' \ + --default_currency GBP \ + --db_model mysql4 \ + --db_host "${DB_HOST}" \ + --db_name "${DB_NAME}" \ + --db_user "${DB_USER}" \ + --db_pass "${DB_PASS}" \ + --url "https://${APP_HOST}/" \ + --skip_url_validation yes \ + --use_rewrites yes \ + --use_secure yes \ + --secure_base_url "https://${APP_HOST}/"" \ + --use_secure_admin yes' \ + --admin_firstname First \ + --admin_lastname Last \ --admin_email 'admin@example.com' \ - --admin_username 'admin' \ - --admin_password 'admin123admin123' \ - --encryption_key '${MAGENTO_CRYPT_KEY}' \ - --session_save 'db' \ - --admin_frontname 'admin'" - - run "rm -f /app/public/app/etc/local.xml" + --admin_username admin \ + --admin_password admin123admin123 \ + --encryption_key "${MAGENTO_CRYPT_KEY}" \ + --session_save db \ + --admin_frontname admin" + - run rm -f /app/public/app/etc/local.xml - task "overlay:apply" - task "assets:dump" init: steps: - - run "n98-magerun.phar config:set 'web/unsecure/base_url' 'https://${APP_HOST}/'" - - run "n98-magerun.phar config:set 'web/secure/base_url' 'https://${APP_HOST}/'" + - run n98-magerun.phar config:set 'web/unsecure/base_url' "https://${APP_HOST}/" + - run n98-magerun.phar config:set 'web/secure/base_url' "https://${APP_HOST}/" migrate: steps: - - run "n98-magerun.phar sys:setup:incremental -n" - - run "n98-magerun.phar index:reindex:all" - - run "n98-magerun.phar cache:clean" + - run n98-magerun.phar sys:setup:incremental -n + - run n98-magerun.phar index:reindex:all + - run n98-magerun.phar cache:clean docker: image: console: = 'my127/magento1:' ~ @('php.version') ~ '-fpm-stretch-console' diff --git a/src/magento2/docker/image/console/root/lib/task/magento/dump-config.sh b/src/magento2/docker/image/console/root/lib/task/magento/dump-config.sh index b386aae8c..e7a09d63d 100644 --- a/src/magento2/docker/image/console/root/lib/task/magento/dump-config.sh +++ b/src/magento2/docker/image/console/root/lib/task/magento/dump-config.sh @@ -2,10 +2,10 @@ function task_magento_dump-config() { - run "cp /app/app/etc/env.php /app/app/etc/env.php.bak" + run cp /app/app/etc/env.php /app/app/etc/env.php.bak - run "magento app:config:dump" - run "strip-magento-config" + run magento app:config:dump + run strip-magento-config - run "mv /app/app/etc/env.php.bak /app/app/etc/env.php" + run mv /app/app/etc/env.php.bak /app/app/etc/env.php } diff --git a/src/magento2/harness.yml b/src/magento2/harness.yml index 3874e7142..3707c0dca 100644 --- a/src/magento2/harness.yml +++ b/src/magento2/harness.yml @@ -65,16 +65,16 @@ attributes: - task "magento:tidy" - | if [ "$APP_BUILD" == "static" ] ; then - run "mv app/etc/env.php app/etc/env-backup.php" - passthru "bin/magento setup:di:compile" - run "composer dump-autoload --optimize" - run "mv app/etc/env-backup.php app/etc/env.php" + run mv app/etc/env.php app/etc/env-backup.php + passthru bin/magento setup:di:compile + run composer dump-autoload --optimize + run mv app/etc/env-backup.php app/etc/env.php fi - | if [ "$APP_BUILD" == "static" ] && validate-magento-config ; then - run "mv app/etc/env.php app/etc/env-backup.php" - passthru "bin/magento setup:static-content:deploy -f" - run "mv app/etc/env-backup.php app/etc/env.php" + run mv app/etc/env.php app/etc/env-backup.php + passthru bin/magento setup:static-content:deploy -f + run mv app/etc/env-backup.php app/etc/env.php else echo -n "$(date +%s)" > pub/static/deployed_version.txt fi @@ -82,14 +82,14 @@ attributes: steps: # the magento installer will not work if the dpeloyment config is present so we remove and # restore it after installation. - - run "rm -f /app/app/etc/env.php" - - run "rm -f /app/app/etc/config.php" + - run rm -f /app/app/etc/env.php + - run rm -f /app/app/etc/config.php - | - passthru "magento setup:install \ - --key=${MAGENTO_CRYPT_KEY} \ + passthru magento setup:install \ + "--key=${MAGENTO_CRYPT_KEY}" \ \ --backend-frontname=admin \ - --base-url=https://${APP_HOST}/ \ + "--base-url=https://${APP_HOST}/" \ \ --admin-user=admin \ --admin-password=admin123 \ @@ -97,24 +97,24 @@ attributes: --admin-firstname=First \ --admin-lastname=Last \ \ - --db-host=${DB_HOST} \ - --db-name=${DB_NAME} \ - --db-user=${DB_USER} \ - --db-password=${DB_PASS} \ + "--db-host=${DB_HOST}" \ + "--db-name=${DB_NAME}" \ + "--db-user=${DB_USER}" \ + "--db-password=${DB_PASS}" \ \ --session-save=redis \ - --session-save-redis-host=${REDIS_SESSION_HOST} \ - --session-save-redis-port=${REDIS_SESSION_PORT} \ + "--session-save-redis-host=${REDIS_SESSION_HOST}" \ + "--session-save-redis-port=${REDIS_SESSION_PORT}" \ --session-save-redis-db=1 \ \ --cache-backend=redis \ - --cache-backend-redis-server=${REDIS_HOST} \ - --cache-backend-redis-port=${REDIS_PORT} \ + "--cache-backend-redis-server=${REDIS_HOST}" \ + "--cache-backend-redis-port=${REDIS_PORT}" \ --cache-backend-redis-db=2 \ \ --page-cache=redis \ - --page-cache-redis-server=${REDIS_HOST} \ - --page-cache-redis-port=${REDIS_PORT} \ + "--page-cache-redis-server=${REDIS_HOST}" \ + "--page-cache-redis-port=${REDIS_PORT}" \ --page-cache-redis-db=3" # magento doesn't respond with an exit code when it fails so we check # if the install succeeded or not here. @@ -123,26 +123,26 @@ attributes: (>&2 cat /tmp/my127ws-stderr.txt) exit 1 fi - - run "rm -f /app/app/etc/env.php" + - run rm -f /app/app/etc/env.php - task "overlay:apply" - task "magento:dump-config" - task "assets:dump" init: steps: - task "rabbitmq:vhosts" - - run "magento setup:upgrade --keep-generated" - - run "magento config:set 'web/unsecure/base_url' 'https://${APP_HOST}/'" - - run "magento config:set 'web/secure/base_url' 'https://${APP_HOST}/'" - - run "magento config:set 'web/secure/use_in_frontend' '1'" - - run "magento config:set 'web/secure/use_in_adminhtml' '1'" - - run "magento config:set 'web/seo/use_rewrites' '1'" + - run magento setup:upgrade --keep-generated + - run magento config:set 'web/unsecure/base_url' "https://${APP_HOST}/" + - run magento config:set 'web/secure/base_url' "https://${APP_HOST}/" + - run magento config:set 'web/secure/use_in_frontend' 1 + - run magento config:set 'web/secure/use_in_adminhtml' 1 + - run magento config:set 'web/seo/use_rewrites' 1 - if [[ "$HAS_VARNISH" == "true" ]]; then - run "magento config:set 'system/full_page_cache/caching_application' '2'"; + run magento config:set 'system/full_page_cache/caching_application' 2; fi migrate: steps: - - run "magento setup:upgrade --keep-generated" - - run "magento cache:clean" + - run magento setup:upgrade --keep-generated + - run magento cache:clean cron: jobs: - "= (@('app.mode') == 'production' ? '* * * * * /cron-run-with-env.sh /app/bin/magento cron:run' : '')" diff --git a/src/spryker/docker/image/console/root/lib/task/skeleton/apply.sh.twig b/src/spryker/docker/image/console/root/lib/task/skeleton/apply.sh.twig index 4f0019687..2d5f01241 100644 --- a/src/spryker/docker/image/console/root/lib/task/skeleton/apply.sh.twig +++ b/src/spryker/docker/image/console/root/lib/task/skeleton/apply.sh.twig @@ -6,15 +6,15 @@ function task_skeleton_apply() fetch_demoshop merge_composer_json fi - run "rsync --exclude='*.twig' --exclude='_twig' --exclude='composer-harness.json' -a /home/build/application/skeleton/ /app/" + run rsync --exclude='*.twig' --exclude='_twig' --exclude='composer-harness.json' -a /home/build/application/skeleton/ /app/ } function fetch_demoshop() { - run "git clone --depth 1 --branch 201903.0-p1 {{ @('spryker.demoshop-url') }} /tmp/spryker" + run git clone --depth 1 --branch 201903.0-p1 "{{ @('spryker.demoshop-url') }}" /tmp/spryker run "shopt -s dotglob && mv /tmp/spryker/* /app" - run "rm -rf /tmp/spryker" - run "rm -rf /app/.git" + run rm -rf /tmp/spryker" + run rm -rf /app/.git" } # Merge core composer.json with composer-harness.json @@ -27,10 +27,10 @@ function merge_composer_json() local merged_file="/app/composer-merged.json" run "jq -s '.[0] * .[1]' $core_file $override_file > $merged_file" - run "mv $merged_file $core_file" + run mv "$merged_file" "$core_file" local new_composer_packages="" new_composer_packages="$(jq -r '.["require-dev"] * .["require"] | keys[]' $override_file | tr '\n' ' ')" - [ -n "$new_composer_packages" ] && passthru "COMPOSER_PROCESS_TIMEOUT=600 composer update --with-dependencies --no-interaction --profile $new_composer_packages" + [ -n "$new_composer_packages" ] && passthru env COMPOSER_PROCESS_TIMEOUT=600 composer update --with-dependencies --no-interaction --profile "$new_composer_packages" } diff --git a/src/spryker/docker/image/console/root/lib/task/spryker/build.sh.twig b/src/spryker/docker/image/console/root/lib/task/spryker/build.sh.twig index 67cbf7d25..d6ab5b1a4 100644 --- a/src/spryker/docker/image/console/root/lib/task/spryker/build.sh.twig +++ b/src/spryker/docker/image/console/root/lib/task/spryker/build.sh.twig @@ -3,15 +3,15 @@ function task_spryker_build() { {% if @('app.mode') == 'development' %} - passthru "composer install --no-interaction --optimize-autoloader" + passthru composer install --no-interaction --optimize-autoloader {% else %} - passthru "composer install --no-interaction --no-dev --optimize-autoloader" + passthru composer install --no-interaction --no-dev --optimize-autoloader {% endif %} - passthru "vendor/bin/install -r docker -s generate" - passthru "vendor/bin/install -r docker -s cache" + passthru vendor/bin/install -r docker -s generate + passthru vendor/bin/install -r docker -s cache {% if @('app.mode') == 'development' %} - passthru "composer dumpautoload" + passthru composer dumpautoload {% else %} - passthru "composer dumpautoload -a" + passthru composer dumpautoload -a {% endif %} } diff --git a/src/spryker/docker/image/console/root/lib/task/spryker/demodata.sh b/src/spryker/docker/image/console/root/lib/task/spryker/demodata.sh index f3b3baedf..6719a0c46 100644 --- a/src/spryker/docker/image/console/root/lib/task/spryker/demodata.sh +++ b/src/spryker/docker/image/console/root/lib/task/spryker/demodata.sh @@ -2,5 +2,5 @@ function task_spryker_demodata() { - passthru "PGPASSWORD=$DB_PASS vendor/bin/install -r docker -s demodata" + PGPASSWORD=$DB_PASS passthru vendor/bin/install -r docker -s demodata } diff --git a/src/spryker/docker/image/console/root/lib/task/spryker/init.sh b/src/spryker/docker/image/console/root/lib/task/spryker/init.sh index 5fc25cc3d..16f31c892 100644 --- a/src/spryker/docker/image/console/root/lib/task/spryker/init.sh +++ b/src/spryker/docker/image/console/root/lib/task/spryker/init.sh @@ -2,6 +2,6 @@ function task_spryker_init() { - run "vendor/bin/console propel:install -o" - passthru "PGPASSWORD=$DB_PASS vendor/bin/install -r docker -s jenkins-up" + run vendor/bin/console propel:install -o + PGPASSWORD="$DB_PASS" passthru vendor/bin/install -r docker -s jenkins-up } diff --git a/src/spryker/docker/image/console/root/lib/task/spryker/install.sh b/src/spryker/docker/image/console/root/lib/task/spryker/install.sh index 19f21fc0b..9abec0e90 100644 --- a/src/spryker/docker/image/console/root/lib/task/spryker/install.sh +++ b/src/spryker/docker/image/console/root/lib/task/spryker/install.sh @@ -2,5 +2,5 @@ function task_spryker_install() { - passthru "PGPASSWORD=$DB_PASS vendor/bin/install -r docker -x frontend" + PGPASSWORD=$DB_PASS passthru vendor/bin/install -r docker -x frontend } diff --git a/src/spryker/docker/image/console/root/lib/task/spryker/migrate.sh b/src/spryker/docker/image/console/root/lib/task/spryker/migrate.sh index d30b83b59..5806a7430 100644 --- a/src/spryker/docker/image/console/root/lib/task/spryker/migrate.sh +++ b/src/spryker/docker/image/console/root/lib/task/spryker/migrate.sh @@ -2,5 +2,5 @@ function task_spryker_migrate() { - passthru "vendor/bin/console propel:migrate" + passthru vendor/bin/console propel:migrate } diff --git a/src/spryker/harness.yml b/src/spryker/harness.yml index 9c5c2e751..a39176a05 100644 --- a/src/spryker/harness.yml +++ b/src/spryker/harness.yml @@ -67,11 +67,11 @@ attributes: build: when: -f "package.json" steps: - - run "vendor/bin/install -r docker -s frontend" + - run vendor/bin/install -r docker -s frontend - | if [ "$APP_BUILD" == "static" ]; then run "rm -rf node_modules/ vendor/*/*/assets/Zed/node_modules" - run "npm cache clean --force" + run npm cache clean --force fi docker: image: @@ -181,13 +181,13 @@ command('frontend yves watch'): COMPOSE_PROJECT_NAME: = @('namespace') exec: | #!bash(workspace:/)|@ - passthru "docker-compose exec -u build console bash -i -c 'cd @('frontend.path'); @('frontend.yves.watch')'" + passthru docker-compose exec -u build --workdir '@('frontend.path')' console @('frontend.yves.watch') command('frontend zed watch'): env: COMPOSE_PROJECT_NAME: = @('namespace') exec: | #!bash(workspace:/)|@ - passthru "docker-compose exec -u build console bash -i -c 'cd @('frontend.path'); @('frontend.zed.watch')'" + passthru docker-compose exec -u build --workdir '@('frontend.path')' console @('frontend.zed.watch') --- import: - harness/config/*.yml diff --git a/src/wordpress/docker/image/console/root/lib/task/wordpress/download.sh.twig b/src/wordpress/docker/image/console/root/lib/task/wordpress/download.sh.twig index 4724d6943..474bf8163 100644 --- a/src/wordpress/docker/image/console/root/lib/task/wordpress/download.sh.twig +++ b/src/wordpress/docker/image/console/root/lib/task/wordpress/download.sh.twig @@ -3,7 +3,7 @@ function task_wordpress_download() { if [ ! -f "{{ @('wordpress.install_directory') }}/index.php" ]; then - passthru "bin/wp-cli.phar core download \ - --path='{{ @('wordpress.install_directory') }}'" + passthru bin/wp-cli.phar core download \ + "--path={{ @('wordpress.install_directory') }}" fi } diff --git a/src/wordpress/harness.yml b/src/wordpress/harness.yml index a619521b0..9c98ad548 100644 --- a/src/wordpress/harness.yml +++ b/src/wordpress/harness.yml @@ -45,21 +45,21 @@ attributes: install: steps: - | - passthru "bin/wp-cli.phar core install \ - --path='${WORDPRESS_INSTALL_DIRECTORY}' \ + passthru bin/wp-cli.phar core install \ + "--path=${WORDPRESS_INSTALL_DIRECTORY}" \ --skip-email \ - --url='$(eval echo $WORDPRESS_URL)' \ - --title='${APP_NAME}' \ + "--url=$(eval echo $WORDPRESS_URL)" \ + "--title=${APP_NAME}" \ --admin_user=admin \ --admin_password=admin123 \ - --admin_email=admin@localhost.local" + --admin_email=admin@localhost.local - task "assets:dump" init: steps: - - run "bin/wp-cli.phar --path='${WORDPRESS_INSTALL_DIRECTORY}' option update siteurl $(eval echo $WORDPRESS_URL)" - - run "bin/wp-cli.phar --path='${WORDPRESS_INSTALL_DIRECTORY}' option update home $(eval echo $WORDPRESS_URL)" - - run "bin/wp-cli.phar --path='${WORDPRESS_INSTALL_DIRECTORY}' user create admin admin@localhost.local --role=administrator --user_pass=admin123 || exit 0" - - run "bin/wp-cli.phar --path='${WORDPRESS_INSTALL_DIRECTORY}' user update admin --role=administrator --user_pass=admin123 --skip-email" + - run bin/wp-cli.phar "--path=${WORDPRESS_INSTALL_DIRECTORY}" option update siteurl "$(eval echo "${WORDPRESS_URL}")" + - run bin/wp-cli.phar "--path=${WORDPRESS_INSTALL_DIRECTORY}" option update home "$(eval echo "${WORDPRESS_URL}")" + - run "bin/wp-cli.phar '--path=${WORDPRESS_INSTALL_DIRECTORY}' user create admin admin@localhost.local --role=administrator --user_pass=admin123 || exit 0" + - run bin/wp-cli.phar "--path=${WORDPRESS_INSTALL_DIRECTORY}" user update admin --role=administrator --user_pass=admin123 --skip-email" docker: image: console: = 'my127/wordpress:' ~ @('php.version') ~ '-fpm-stretch-console' From 78f45a92ebc260b70f0d53bcf30810dc9cb385f8 Mon Sep 17 00:00:00 2001 From: Andy Thompson Date: Wed, 5 Aug 2020 11:08:58 +0100 Subject: [PATCH 02/12] Fix issue with shell used on db dumps --- src/_base/docker/image/console/root/lib/task/assets/dump.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/_base/docker/image/console/root/lib/task/assets/dump.sh b/src/_base/docker/image/console/root/lib/task/assets/dump.sh index 42ed7cb7e..0bb835b31 100644 --- a/src/_base/docker/image/console/root/lib/task/assets/dump.sh +++ b/src/_base/docker/image/console/root/lib/task/assets/dump.sh @@ -9,9 +9,9 @@ function task_assets_dump() fi if [ "${DB_PLATFORM}" == "mysql" ]; then - run mysqldump -h "${DB_HOST}" -u "${DB_USER}" "-p${DB_PASS}" "${DB_NAME}" | gzip > "/app/${ASSETS_DIR}/${DB_NAME}.sql.gz" + run "mysqldump -h '${DB_HOST}' -u '${DB_USER}' '-p${DB_PASS}' '${DB_NAME}' | gzip > '/app/${ASSETS_DIR}/${DB_NAME}.sql.gz'" elif [ "${DB_PLATFORM}" == "postgres" ]; then - PGPASSWORD=$DB_PASS run pg_dump -h ${DB_HOST} -U ${DB_USER} ${DB_NAME} | gzip > /app/${ASSETS_DIR}/${DB_NAME}.sql.gz" + PGPASSWORD="$DB_PASS" run "pg_dump -h '${DB_HOST}' -U '${DB_USER}' '${DB_NAME}' | gzip > '/app/${ASSETS_DIR}/${DB_NAME}.sql.gz'" elif [ -n "${DB_PLATFORM}" ]; then (>&2 echo "invalid database type") exit 1 From 51e0151b600c55314eb36581ca373f6f17fdddd6 Mon Sep 17 00:00:00 2001 From: andytson-inviqa Date: Wed, 5 Aug 2020 11:10:04 +0100 Subject: [PATCH 03/12] Update src/_base/docker/image/console/root/lib/sidekick.sh --- src/_base/docker/image/console/root/lib/sidekick.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_base/docker/image/console/root/lib/sidekick.sh b/src/_base/docker/image/console/root/lib/sidekick.sh index ad3f09ce7..fd0e881b1 100644 --- a/src/_base/docker/image/console/root/lib/sidekick.sh +++ b/src/_base/docker/image/console/root/lib/sidekick.sh @@ -109,7 +109,7 @@ passthru() if [ "${DEPRECATED_MODE}" = "yes" ]; then echo -e "\\033[${INDICATOR_PASSTHRU}■\\033[0m > $*" >&2 - if ! bash -e -c "${COMMAND_DEPRECATED[@]}" >&2; then + if ! bash -e -c "${COMMAND_DEPRECATED[@]}"; then exit 1 fi else From 27ace07c1b65d7a51f690fb2fe653277cbb48219 Mon Sep 17 00:00:00 2001 From: Andy Thompson Date: Wed, 5 Aug 2020 11:13:04 +0100 Subject: [PATCH 04/12] Ignore shellcheck complaint as unnecessary complexity in capturing one of two possible commands in one execution --- src/_base/docker/image/console/root/lib/sidekick.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/src/_base/docker/image/console/root/lib/sidekick.sh b/src/_base/docker/image/console/root/lib/sidekick.sh index fd0e881b1..f4c1ee7da 100644 --- a/src/_base/docker/image/console/root/lib/sidekick.sh +++ b/src/_base/docker/image/console/root/lib/sidekick.sh @@ -60,6 +60,7 @@ run() "${COMMAND[@]}" > /tmp/my127ws-stdout.txt 2> /tmp/my127ws-stderr.txt fi + # shellcheck disable=SC2181 if [ "$?" -gt 0 ]; then setCommandIndicator "${INDICATOR_ERROR}" From a2892215601e1188330bc56fe64e06f598c6f615 Mon Sep 17 00:00:00 2001 From: Andy Thompson Date: Wed, 5 Aug 2020 11:18:45 +0100 Subject: [PATCH 05/12] Revert magento2 setup passthru change There is shell code in it --- src/magento2/harness.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/magento2/harness.yml b/src/magento2/harness.yml index 3707c0dca..a26d758d7 100644 --- a/src/magento2/harness.yml +++ b/src/magento2/harness.yml @@ -85,11 +85,11 @@ attributes: - run rm -f /app/app/etc/env.php - run rm -f /app/app/etc/config.php - | - passthru magento setup:install \ - "--key=${MAGENTO_CRYPT_KEY}" \ + passthru "magento setup:install \ + --key='${MAGENTO_CRYPT_KEY}' \ \ --backend-frontname=admin \ - "--base-url=https://${APP_HOST}/" \ + --base-url='https://${APP_HOST}/'' \ \ --admin-user=admin \ --admin-password=admin123 \ @@ -97,24 +97,24 @@ attributes: --admin-firstname=First \ --admin-lastname=Last \ \ - "--db-host=${DB_HOST}" \ - "--db-name=${DB_NAME}" \ - "--db-user=${DB_USER}" \ - "--db-password=${DB_PASS}" \ + --db-host='${DB_HOST}' \ + --db-name='${DB_NAME}' \ + --db-user='${DB_USER}' \ + --db-password='${DB_PASS}' \ \ --session-save=redis \ - "--session-save-redis-host=${REDIS_SESSION_HOST}" \ - "--session-save-redis-port=${REDIS_SESSION_PORT}" \ + --session-save-redis-host='${REDIS_SESSION_HOST}' \ + --session-save-redis-port='${REDIS_SESSION_PORT}' \ --session-save-redis-db=1 \ \ --cache-backend=redis \ - "--cache-backend-redis-server=${REDIS_HOST}" \ - "--cache-backend-redis-port=${REDIS_PORT}" \ + --cache-backend-redis-server='${REDIS_HOST}' \ + --cache-backend-redis-port='${REDIS_PORT}' \ --cache-backend-redis-db=2 \ \ --page-cache=redis \ - "--page-cache-redis-server=${REDIS_HOST}" \ - "--page-cache-redis-port=${REDIS_PORT}" \ + --page-cache-redis-server='${REDIS_HOST}' \ + --page-cache-redis-port='${REDIS_PORT}' \ --page-cache-redis-db=3" # magento doesn't respond with an exit code when it fails so we check # if the install succeeded or not here. From 4203b62852b1fcf63d46dc64a142f64f4dbf8dd7 Mon Sep 17 00:00:00 2001 From: Andy Thompson Date: Wed, 5 Aug 2020 11:23:09 +0100 Subject: [PATCH 06/12] Remove unnecessary quotes from task calls To match use of run and passthru --- .../console/root/lib/task/assets/apply.sh | 2 +- .../image/console/root/lib/task/build.sh | 8 ++++---- .../image/console/root/lib/task/init.sh.twig | 6 +++--- .../console/root/lib/task/install.sh.twig | 2 +- .../console/root/lib/task/migrate.sh.twig | 2 +- .../root/lib/task/rabbitmq/vhosts.sh.twig | 2 +- .../image/console/root/lib/task/state.sh | 2 +- src/_base/harness/attributes/common.yml | 2 +- src/akeneo/harness.yml | 6 +++--- src/drupal8/harness.yml | 6 +++--- src/magento1/harness.yml | 8 ++++---- src/magento2/harness.yml | 12 ++++++------ .../root/lib/task/jenkins/setup.sh | 2 +- src/spryker/harness.yml | 18 +++++++++--------- src/wordpress/harness.yml | 8 ++++---- 15 files changed, 43 insertions(+), 43 deletions(-) diff --git a/src/_base/docker/image/console/root/lib/task/assets/apply.sh b/src/_base/docker/image/console/root/lib/task/assets/apply.sh index a946ddbea..d22e65b10 100644 --- a/src/_base/docker/image/console/root/lib/task/assets/apply.sh +++ b/src/_base/docker/image/console/root/lib/task/assets/apply.sh @@ -25,7 +25,7 @@ function task_assets_apply() if [ -f "$DATABASE_FILE" ]; then passthru "pv --force $DATABASE_FILE | zcat - | $IMPORT_COMMAND" else - task "install" + task install fi fi diff --git a/src/_base/docker/image/console/root/lib/task/build.sh b/src/_base/docker/image/console/root/lib/task/build.sh index 73b09622c..c49bf57e7 100644 --- a/src/_base/docker/image/console/root/lib/task/build.sh +++ b/src/_base/docker/image/console/root/lib/task/build.sh @@ -3,11 +3,11 @@ function task_build() { if [ ! -f /app/composer.json ]; then - task "skeleton:apply" + task skeleton:apply fi - task "overlay:apply" + task overlay:apply - task "build:backend" - task "build:frontend" + task build:backend + task build:frontend } diff --git a/src/_base/docker/image/console/root/lib/task/init.sh.twig b/src/_base/docker/image/console/root/lib/task/init.sh.twig index 75d4642cd..58e04a562 100644 --- a/src/_base/docker/image/console/root/lib/task/init.sh.twig +++ b/src/_base/docker/image/console/root/lib/task/init.sh.twig @@ -2,17 +2,17 @@ function task_init() { - task "database:available" + task database:available if ! db_hasSchema; then - task "assets:apply" + task assets:apply {% for step in @('backend.init.steps') -%} {{ step|raw }} {% endfor %} - task "welcome" + task welcome fi } diff --git a/src/_base/docker/image/console/root/lib/task/install.sh.twig b/src/_base/docker/image/console/root/lib/task/install.sh.twig index 4389d6195..07717612f 100644 --- a/src/_base/docker/image/console/root/lib/task/install.sh.twig +++ b/src/_base/docker/image/console/root/lib/task/install.sh.twig @@ -2,7 +2,7 @@ function task_install() { - task "database:available" + task database:available {% for step in @('backend.install.steps') -%} {{ step|raw }} diff --git a/src/_base/docker/image/console/root/lib/task/migrate.sh.twig b/src/_base/docker/image/console/root/lib/task/migrate.sh.twig index a778b3e42..863a1ad40 100644 --- a/src/_base/docker/image/console/root/lib/task/migrate.sh.twig +++ b/src/_base/docker/image/console/root/lib/task/migrate.sh.twig @@ -2,7 +2,7 @@ function task_migrate() { - task "database:available" + task database:available {% for step in @('backend.migrate.steps') -%} {{ step|raw }} diff --git a/src/_base/docker/image/console/root/lib/task/rabbitmq/vhosts.sh.twig b/src/_base/docker/image/console/root/lib/task/rabbitmq/vhosts.sh.twig index e329c6de9..94b9fa4fa 100644 --- a/src/_base/docker/image/console/root/lib/task/rabbitmq/vhosts.sh.twig +++ b/src/_base/docker/image/console/root/lib/task/rabbitmq/vhosts.sh.twig @@ -6,7 +6,7 @@ function task_rabbitmq_vhosts() { : {% else %} local rabbitmq_api_url="http://$RABBITMQ_HOST:$RABBITMQ_API_PORT/api" - task "http:wait" "$rabbitmq_api_url/index.html" + task http:wait "$rabbitmq_api_url/index.html" {% for vhost in @('rabbitmq.vhosts') %} curl -f -I -s -u "$RABBITMQ_USER:$RABBITMQ_PASSWORD" -X PUT "$rabbitmq_api_url/vhosts/{{ vhost }}" diff --git a/src/_base/docker/image/console/root/lib/task/state.sh b/src/_base/docker/image/console/root/lib/task/state.sh index bdd6b6874..c0e00419c 100644 --- a/src/_base/docker/image/console/root/lib/task/state.sh +++ b/src/_base/docker/image/console/root/lib/task/state.sh @@ -2,7 +2,7 @@ function task_state() { - task "database:available" + task database:available echo "Ready!" } diff --git a/src/_base/harness/attributes/common.yml b/src/_base/harness/attributes/common.yml index 8116f9c02..703f34124 100644 --- a/src/_base/harness/attributes/common.yml +++ b/src/_base/harness/attributes/common.yml @@ -102,7 +102,7 @@ attributes.default: build: when: -f "composer.json" steps: - - task "composer:install" + - task composer:install install: steps: [] init: diff --git a/src/akeneo/harness.yml b/src/akeneo/harness.yml index d15260e98..f61a0ab6e 100644 --- a/src/akeneo/harness.yml +++ b/src/akeneo/harness.yml @@ -55,12 +55,12 @@ attributes: backend: build: steps: - - task "composer:install" + - task composer:install install: steps: - passthru bin/console pim:installer:db --catalog vendor/akeneo/pim-community-dev/src/Akeneo/Platform/Bundle/InstallerBundle/Resources/fixtures/minimal - - task "overlay:apply" - - task "assets:dump" + - task overlay:apply + - task assets:dump init: steps: - passthru bin/console doctrine:migrations:migrate --no-interaction --allow-no-migration diff --git a/src/drupal8/harness.yml b/src/drupal8/harness.yml index c2c1f57bc..0a907287b 100644 --- a/src/drupal8/harness.yml +++ b/src/drupal8/harness.yml @@ -35,7 +35,7 @@ attributes: backend: build: steps: - - task "composer:install" + - task composer:install install: steps: - | @@ -56,8 +56,8 @@ attributes: --account-mail=admin@example.com \ --account-pass=admin123" - run chmod 755 /app/docroot/sites/default - - task "overlay:apply" - - task "assets:dump" + - task overlay:apply + - task assets:dump migrate: steps: - run drupal cache:rebuild diff --git a/src/magento1/harness.yml b/src/magento1/harness.yml index 33eed8a86..003a1d1fe 100644 --- a/src/magento1/harness.yml +++ b/src/magento1/harness.yml @@ -52,8 +52,8 @@ attributes: backend: build: steps: - - task "composer:install" - - task "n98:install" + - task composer:install + - task n98:install install: steps: - run rm -f /app/public/app/etc/local.xml @@ -83,8 +83,8 @@ attributes: --session_save db \ --admin_frontname admin" - run rm -f /app/public/app/etc/local.xml - - task "overlay:apply" - - task "assets:dump" + - task overlay:apply + - task assets:dump init: steps: - run n98-magerun.phar config:set 'web/unsecure/base_url' "https://${APP_HOST}/" diff --git a/src/magento2/harness.yml b/src/magento2/harness.yml index a26d758d7..a711c1375 100644 --- a/src/magento2/harness.yml +++ b/src/magento2/harness.yml @@ -61,8 +61,8 @@ attributes: backend: build: steps: - - task "composer:install" - - task "magento:tidy" + - task composer:install + - task magento:tidy - | if [ "$APP_BUILD" == "static" ] ; then run mv app/etc/env.php app/etc/env-backup.php @@ -124,12 +124,12 @@ attributes: exit 1 fi - run rm -f /app/app/etc/env.php - - task "overlay:apply" - - task "magento:dump-config" - - task "assets:dump" + - task overlay:apply + - task magento:dump-config + - task assets:dump init: steps: - - task "rabbitmq:vhosts" + - task rabbitmq:vhosts - run magento setup:upgrade --keep-generated - run magento config:set 'web/unsecure/base_url' "https://${APP_HOST}/" - run magento config:set 'web/secure/base_url' "https://${APP_HOST}/" diff --git a/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/setup.sh b/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/setup.sh index fb008c59c..5c3a323a3 100644 --- a/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/setup.sh +++ b/src/spryker/docker/image/jenkins-runner/root/lib/task/jenkins/setup.sh @@ -4,7 +4,7 @@ function task_jenkins_setup() { echo -e "Bootstrapping jenkins runner" - task "http:wait" "$JENKINS_URL" + task http:wait "$JENKINS_URL" curl -s "$JENKINS_URL/jnlpJars/jenkins-cli.jar" -o /usr/local/bin/jenkins-cli.jar curl -s "$JENKINS_URL/jnlpJars/slave.jar" -o /usr/local/bin/jenkins-slave.jar diff --git a/src/spryker/harness.yml b/src/spryker/harness.yml index a39176a05..aea0b69da 100644 --- a/src/spryker/harness.yml +++ b/src/spryker/harness.yml @@ -44,21 +44,21 @@ attributes: build: when: 'true' steps: - - task "spryker:build" + - task spryker:build install: steps: - - task "rabbitmq:vhosts" - - task "http:wait" $JENKINS_URL - - task "spryker:install" - - task "overlay:apply" + - task rabbitmq:vhosts + - task http:wait' $JENKINS_URL + - task spryker:install + - task overlay:apply init: steps: - - task "http:wait" $JENKINS_URL - - task "rabbitmq:vhosts" - - task "spryker:init" + - task http:wait $JENKINS_URL + - task rabbitmq:vhosts + - task spryker:init migrate: steps: - - task "spryker:migrate" + - task spryker:migrate frontend: yves: watch: npm run yves:watch diff --git a/src/wordpress/harness.yml b/src/wordpress/harness.yml index 9c98ad548..0823360d1 100644 --- a/src/wordpress/harness.yml +++ b/src/wordpress/harness.yml @@ -39,9 +39,9 @@ attributes: backend: build: steps: - - task "wp-cli:install" - - task "wordpress:download" - - task "composer:install" + - task wp-cli:install + - task wordpress:download + - task composer:install install: steps: - | @@ -53,7 +53,7 @@ attributes: --admin_user=admin \ --admin_password=admin123 \ --admin_email=admin@localhost.local - - task "assets:dump" + - task assets:dump init: steps: - run bin/wp-cli.phar "--path=${WORDPRESS_INSTALL_DIRECTORY}" option update siteurl "$(eval echo "${WORDPRESS_URL}")" From 965a824078cca9f1ad8a881d5563187d7348c6ae Mon Sep 17 00:00:00 2001 From: andytson-inviqa Date: Wed, 5 Aug 2020 11:28:22 +0100 Subject: [PATCH 07/12] Update src/spryker/harness.yml --- src/spryker/harness.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/spryker/harness.yml b/src/spryker/harness.yml index aea0b69da..f27877fbb 100644 --- a/src/spryker/harness.yml +++ b/src/spryker/harness.yml @@ -48,7 +48,7 @@ attributes: install: steps: - task rabbitmq:vhosts - - task http:wait' $JENKINS_URL + - task http:wait $JENKINS_URL - task spryker:install - task overlay:apply init: From 5bcd5ccc4e989d26fba30802c3bd96f143c75388 Mon Sep 17 00:00:00 2001 From: andytson-inviqa Date: Tue, 11 Aug 2020 09:17:45 +0100 Subject: [PATCH 08/12] Update src/magento2/harness.yml Co-authored-by: Kieren Evans --- src/magento2/harness.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/magento2/harness.yml b/src/magento2/harness.yml index a711c1375..932f2a2ee 100644 --- a/src/magento2/harness.yml +++ b/src/magento2/harness.yml @@ -89,7 +89,7 @@ attributes: --key='${MAGENTO_CRYPT_KEY}' \ \ --backend-frontname=admin \ - --base-url='https://${APP_HOST}/'' \ + --base-url='https://${APP_HOST}/' \ \ --admin-user=admin \ --admin-password=admin123 \ From 0132939dada9417f41403a659d5f86c46defb4e9 Mon Sep 17 00:00:00 2001 From: andytson-inviqa Date: Tue, 11 Aug 2020 09:47:14 +0100 Subject: [PATCH 09/12] Apply suggestions from code review Co-authored-by: Kieren Evans --- src/drupal8/harness.yml | 2 +- src/magento1/harness.yml | 4 ++-- .../docker/image/console/root/lib/task/skeleton/apply.sh.twig | 4 ++-- .../docker/image/console/root/lib/task/spryker/install.sh | 2 +- src/spryker/harness.yml | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/drupal8/harness.yml b/src/drupal8/harness.yml index 0a907287b..0f3494ebf 100644 --- a/src/drupal8/harness.yml +++ b/src/drupal8/harness.yml @@ -54,7 +54,7 @@ attributes: \ --account-name=admin \ --account-mail=admin@example.com \ - --account-pass=admin123" + --account-pass=admin123 - run chmod 755 /app/docroot/sites/default - task overlay:apply - task assets:dump diff --git a/src/magento1/harness.yml b/src/magento1/harness.yml index 003a1d1fe..26e88271c 100644 --- a/src/magento1/harness.yml +++ b/src/magento1/harness.yml @@ -72,7 +72,7 @@ attributes: --skip_url_validation yes \ --use_rewrites yes \ --use_secure yes \ - --secure_base_url "https://${APP_HOST}/"" \ + --secure_base_url "https://${APP_HOST}/" \ --use_secure_admin yes' \ --admin_firstname First \ --admin_lastname Last \ @@ -81,7 +81,7 @@ attributes: --admin_password admin123admin123 \ --encryption_key "${MAGENTO_CRYPT_KEY}" \ --session_save db \ - --admin_frontname admin" + --admin_frontname admin - run rm -f /app/public/app/etc/local.xml - task overlay:apply - task assets:dump diff --git a/src/spryker/docker/image/console/root/lib/task/skeleton/apply.sh.twig b/src/spryker/docker/image/console/root/lib/task/skeleton/apply.sh.twig index 2d5f01241..1b521cf9b 100644 --- a/src/spryker/docker/image/console/root/lib/task/skeleton/apply.sh.twig +++ b/src/spryker/docker/image/console/root/lib/task/skeleton/apply.sh.twig @@ -13,8 +13,8 @@ function fetch_demoshop() { run git clone --depth 1 --branch 201903.0-p1 "{{ @('spryker.demoshop-url') }}" /tmp/spryker run "shopt -s dotglob && mv /tmp/spryker/* /app" - run rm -rf /tmp/spryker" - run rm -rf /app/.git" + run rm -rf /tmp/spryker + run rm -rf /app/.git } # Merge core composer.json with composer-harness.json diff --git a/src/spryker/docker/image/console/root/lib/task/spryker/install.sh b/src/spryker/docker/image/console/root/lib/task/spryker/install.sh index 9abec0e90..63fa6a9d8 100644 --- a/src/spryker/docker/image/console/root/lib/task/spryker/install.sh +++ b/src/spryker/docker/image/console/root/lib/task/spryker/install.sh @@ -2,5 +2,5 @@ function task_spryker_install() { - PGPASSWORD=$DB_PASS passthru vendor/bin/install -r docker -x frontend + PGPASSWORD="$DB_PASS" passthru vendor/bin/install -r docker -x frontend } diff --git a/src/spryker/harness.yml b/src/spryker/harness.yml index f27877fbb..7032c29d1 100644 --- a/src/spryker/harness.yml +++ b/src/spryker/harness.yml @@ -48,12 +48,12 @@ attributes: install: steps: - task rabbitmq:vhosts - - task http:wait $JENKINS_URL + - task http:wait "$JENKINS_URL" - task spryker:install - task overlay:apply init: steps: - - task http:wait $JENKINS_URL + - task http:wait "$JENKINS_URL" - task rabbitmq:vhosts - task spryker:init migrate: From 8f1b3af2081584051198fc32cba433bff39679bb Mon Sep 17 00:00:00 2001 From: Kieren Evans Date: Tue, 11 Aug 2020 12:42:00 +0300 Subject: [PATCH 10/12] Fix package upgrade being escaped between the package names --- .../image/console/root/lib/task/skeleton/apply.sh.twig | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/spryker/docker/image/console/root/lib/task/skeleton/apply.sh.twig b/src/spryker/docker/image/console/root/lib/task/skeleton/apply.sh.twig index 1b521cf9b..f70c4132c 100644 --- a/src/spryker/docker/image/console/root/lib/task/skeleton/apply.sh.twig +++ b/src/spryker/docker/image/console/root/lib/task/skeleton/apply.sh.twig @@ -29,8 +29,12 @@ function merge_composer_json() run "jq -s '.[0] * .[1]' $core_file $override_file > $merged_file" run mv "$merged_file" "$core_file" - local new_composer_packages="" - new_composer_packages="$(jq -r '.["require-dev"] * .["require"] | keys[]' $override_file | tr '\n' ' ')" + local shared_package_list="" + local new_composer_packages=() + shared_package_list="$(jq -r '.["require-dev"] * .["require"] | keys[]' $override_file | tr '\n' ' ')" + IFS=" " read -r -a new_composer_packages <<< "$shared_package_list" - [ -n "$new_composer_packages" ] && passthru env COMPOSER_PROCESS_TIMEOUT=600 composer update --with-dependencies --no-interaction --profile "$new_composer_packages" + {% verbatim %} + [ "${#new_composer_packages[@]}" -gt 0 ] && passthru env COMPOSER_PROCESS_TIMEOUT=600 composer update --with-dependencies --no-interaction --profile "${new_composer_packages[@]}" + {% endverbatim %} } From b1f88b22bb2016c6eb85d945b534335d4aeffd59 Mon Sep 17 00:00:00 2001 From: Kieren Evans Date: Tue, 11 Aug 2020 12:45:59 +0300 Subject: [PATCH 11/12] Update src/magento1/harness.yml --- src/magento1/harness.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/magento1/harness.yml b/src/magento1/harness.yml index 26e88271c..15563fb1c 100644 --- a/src/magento1/harness.yml +++ b/src/magento1/harness.yml @@ -73,7 +73,7 @@ attributes: --use_rewrites yes \ --use_secure yes \ --secure_base_url "https://${APP_HOST}/" \ - --use_secure_admin yes' \ + --use_secure_admin yes \ --admin_firstname First \ --admin_lastname Last \ --admin_email 'admin@example.com' \ From 12981f07fc3a849af69ef9d0b843e021b830bd1f Mon Sep 17 00:00:00 2001 From: Kieren Evans Date: Tue, 11 Aug 2020 12:50:21 +0300 Subject: [PATCH 12/12] Update src/wordpress/harness.yml --- src/wordpress/harness.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wordpress/harness.yml b/src/wordpress/harness.yml index 0823360d1..392ebf619 100644 --- a/src/wordpress/harness.yml +++ b/src/wordpress/harness.yml @@ -59,7 +59,7 @@ attributes: - run bin/wp-cli.phar "--path=${WORDPRESS_INSTALL_DIRECTORY}" option update siteurl "$(eval echo "${WORDPRESS_URL}")" - run bin/wp-cli.phar "--path=${WORDPRESS_INSTALL_DIRECTORY}" option update home "$(eval echo "${WORDPRESS_URL}")" - run "bin/wp-cli.phar '--path=${WORDPRESS_INSTALL_DIRECTORY}' user create admin admin@localhost.local --role=administrator --user_pass=admin123 || exit 0" - - run bin/wp-cli.phar "--path=${WORDPRESS_INSTALL_DIRECTORY}" user update admin --role=administrator --user_pass=admin123 --skip-email" + - run bin/wp-cli.phar "--path=${WORDPRESS_INSTALL_DIRECTORY}" user update admin --role=administrator --user_pass=admin123 --skip-email docker: image: console: = 'my127/wordpress:' ~ @('php.version') ~ '-fpm-stretch-console'