From 0c0e9fb7ece34cf0afa951c393d83a89ea9fe2af Mon Sep 17 00:00:00 2001 From: Marcus Schwemer Date: Fri, 2 Feb 2024 15:31:15 +0100 Subject: [PATCH] [TASK] Streamline local development enviroment Only ddev based enviroment is supported from now on. The native docker environment was finally dropped. --- .ddev/commands/host/initialize | 31 ++- .ddev/commands/web/typo3 | 2 +- .ddev/config.yaml | 10 +- .ddev/docker-compose.typo3.yaml | 16 +- .ddev/typo3/additional.php | 42 ---- .ddev/typo3/config.yaml | 20 -- .env | 40 ---- .gitignore | 2 +- .project/TYPO3/DockerConfiguration.php | 46 ---- .project/docker/docker-compose.darwin.yml | 68 ------ .project/docker/docker-compose.unix.yml | 63 ------ .project/docker/php/Dockerfile | 3 - .project/docker/php/zz_xdebug.ini | 2 - .project/{TYPO3 => typo3}/additional.php | 13 +- .project/{TYPO3 => typo3}/config.yaml | 6 +- {.ddev => .project}/typo3/settings.php | 9 +- Documentation/ForContributors/Readme.md | 30 +-- Makefile | 259 ---------------------- Tests/Behavior/behat.ddev.yml | 31 --- Tests/Behavior/behat.docker.yml | 31 --- Tests/Behavior/behat.sh | 4 - Tests/Behavior/behat.yml | 24 +- Tests/Behavior/behats.sh | 4 - Tests/Behavior/behatt.sh | 4 - Tests/Behavior/readme.md | 49 +--- Tests/Behavior/selenium.sh | 4 - composer.json | 15 +- 27 files changed, 90 insertions(+), 738 deletions(-) delete mode 100644 .ddev/typo3/additional.php delete mode 100644 .ddev/typo3/config.yaml delete mode 100644 .env delete mode 100644 .project/TYPO3/DockerConfiguration.php delete mode 100644 .project/docker/docker-compose.darwin.yml delete mode 100644 .project/docker/docker-compose.unix.yml delete mode 100644 .project/docker/php/Dockerfile delete mode 100644 .project/docker/php/zz_xdebug.ini rename .project/{TYPO3 => typo3}/additional.php (82%) rename .project/{TYPO3 => typo3}/config.yaml (79%) rename {.ddev => .project}/typo3/settings.php (96%) delete mode 100644 Makefile delete mode 100644 Tests/Behavior/behat.ddev.yml delete mode 100644 Tests/Behavior/behat.docker.yml delete mode 100644 Tests/Behavior/behat.sh delete mode 100644 Tests/Behavior/behats.sh delete mode 100644 Tests/Behavior/behatt.sh delete mode 100644 Tests/Behavior/selenium.sh diff --git a/.ddev/commands/host/initialize b/.ddev/commands/host/initialize index 8e6c776f6..beaf29f57 100755 --- a/.ddev/commands/host/initialize +++ b/.ddev/commands/host/initialize @@ -12,9 +12,30 @@ then fi git lfs pull -ddev import-db --src=.project/data/db.sql.gz + +echo "Symlink configuration" +cp .build/vendor/typo3/cms-install/Resources/Private/FolderStructureTemplateFiles/root-htaccess .build/public/.htaccess +mkdir -p .build/config/sites/main +ln -snf ../../../../.project/typo3/config.yaml .build/config/sites/main/config.yaml +mkdir -p .build/config/system +ln -snf ../../../.project/typo3/settings.php .build/config/system/settings.php +ln -snf ../../../.project/typo3/additional.php .build/config/system/additional.php + +echo "Importing database" +ddev import-db --file=.project/data/db.sql.gz + +echo "Run 'composer install'" ddev composer install -cp .Build/vendor/typo3/cms-install/Resources/Private/FolderStructureTemplateFiles/root-htaccess .Build/Web/.htaccess -mkdir -p config/sites/main && cp .project/TYPO3/config.yaml config/sites/main/ -mkdir -p config/system && cp .ddev/typo3/*.php config/system -mkdir -p .Build/Web/fileadmin && cd .Build/Web && tar xf ../../.project/data/fileadmin.tar.gz + +echo "Extracting fileadmin" +tar xf .project/data/fileadmin.tar.gz -C .build/public/ + +echo "Copy .htaccess" +cp .build/vendor/typo3/cms-install/Resources/Private/FolderStructureTemplateFiles/root-htaccess .build/public/.htaccess + +echo "Update Languages (needed for behaviour tests)" +ddev typo3 language:update + +ddev describe + +echo "Thanks for supporting 'EXT:powermail" diff --git a/.ddev/commands/web/typo3 b/.ddev/commands/web/typo3 index e4feeb57c..22e4c37d6 100755 --- a/.ddev/commands/web/typo3 +++ b/.ddev/commands/web/typo3 @@ -7,4 +7,4 @@ ## Example: "ddev typo3 site:list" or "ddev typo3 list" or "ddev typo3 extension:list" ## ProjectTypes: typo3 -.Build/bin/typo3 "$@" +.build/vendor/bin/typo3 "$@" diff --git a/.ddev/config.yaml b/.ddev/config.yaml index 9e6a94fbb..9ccc00a41 100644 --- a/.ddev/config.yaml +++ b/.ddev/config.yaml @@ -1,6 +1,6 @@ -name: powermail +name: powermail-v12 type: typo3 -docroot: .Build/Web/ +docroot: .build/public/ php_version: "8.1" webserver_type: apache-fpm router_http_port: "80" @@ -8,7 +8,9 @@ router_https_port: "443" xdebug_enabled: false additional_hostnames: [] additional_fqdns: [] -mariadb_version: "10.3" +database: + type: "mariadb" + version: "10.3" mysql_version: "" use_dns_when_possible: true composer_version: "2" @@ -16,7 +18,7 @@ web_environment: [] hooks: post-start: - exec: composer install -host_db_port: "28262" +host_db_port: "64241" # This config.yaml was created with ddev version v1.17.5 # webimage: drud/ddev-webserver:v1.17.4 diff --git a/.ddev/docker-compose.typo3.yaml b/.ddev/docker-compose.typo3.yaml index 72c418f88..6106ac09d 100644 --- a/.ddev/docker-compose.typo3.yaml +++ b/.ddev/docker-compose.typo3.yaml @@ -3,13 +3,9 @@ services: web: environment: - TYPO3_CONTEXT=Development/DDEV - # Variables for first installation - - TYPO3_INSTALL_DB_DRIVER=mysql - - TYPO3_INSTALL_DB_USER=db - - TYPO3_INSTALL_DB_PASSWORD=db - - TYPO3_INSTALL_DB_HOST=db - - TYPO3_INSTALL_DB_PORT=3306 - - TYPO3_INSTALL_DB_USE_EXISTING=1 - - TYPO3_INSTALL_DB_DBNAME=db - - TYPO3_INSTALL_SITE_SETUP_TYPE=no - - TYPO3_INSTALL_WEB_SERVER_CONFIG=none + - TYPO3_PATH_APP=/var/www/html/.build + - MYSQL_DATABASE=db + - MYSQL_PASSWORD=db + - MYSQL_USER=db + - MYSQL_HOST=db + - MAIL_HOST=mail:1025 diff --git a/.ddev/typo3/additional.php b/.ddev/typo3/additional.php deleted file mode 100644 index 454a9faba..000000000 --- a/.ddev/typo3/additional.php +++ /dev/null @@ -1,42 +0,0 @@ - [ - 'Connections' => [ - 'Default' => [ - 'dbname' => 'db', - 'host' => 'db', - 'password' => 'db', - 'port' => '3306', - 'user' => 'db', - ], - ], - ], - // This GFX configuration allows processing by installed ImageMagick 6 - 'GFX' => [ - 'processor' => 'ImageMagick', - 'processor_path' => '/usr/bin/', - 'processor_path_lzw' => '/usr/bin/', - ], - // This mail configuration sends all emails to mailhog - 'MAIL' => [ - 'transport' => 'smtp', - 'transport_smtp_server' => 'localhost:1025', - ], - 'SYS' => [ - 'trustedHostsPattern' => '.*.*', - 'devIPmask' => '*', - 'displayErrors' => 1, - ], - ] - ); -} diff --git a/.ddev/typo3/config.yaml b/.ddev/typo3/config.yaml deleted file mode 100644 index 698454975..000000000 --- a/.ddev/typo3/config.yaml +++ /dev/null @@ -1,20 +0,0 @@ -base: 'https://femanager.ddev.site/' -baseVariants: { } -errorHandling: { } -languages: - - - title: English - enabled: true - base: / - typo3Language: default - locale: en_US.UTF-8 - iso-639-1: en - websiteTitle: '' - navigationTitle: '' - hreflang: en-US - direction: ltr - flag: en-us-gb - languageId: '0' -rootPageId: 1 -routes: { } -websiteTitle: '' diff --git a/.env b/.env deleted file mode 100644 index f513e6a73..000000000 --- a/.env +++ /dev/null @@ -1,40 +0,0 @@ -HOST=local.powermail-v11.de -MAIL=mail.powermail-v11.de - -WEBROOT=.Build/Web -TYPO3_CACHE_DIR=var - -SQLDUMPSDIR=.project/data/ -SQLDUMPFILE=db.sql.gz -SQLPORT=39699 - -CHROMEPORT=19647 - -# Service names from docker-compose.yml to include in URL generation make target. Delimited by \| -SERVICELIST=mail - -# MySQL variables -MYSQL_ROOT_PASSWORD=root -MYSQL_DATABASE=typo3 -MYSQL_PASSWORD=app -MYSQL_USER=app -MYSQL_HOST=mysql - -# TYPO3 -TYPO3_CONTEXT=Development/Docker - -# TYPO3 Console Setup - -TYPO3_INSTALL_DB_DRIVER=mysqli -TYPO3_INSTALL_DB_USER=app -TYPO3_INSTALL_DB_PASSWORD=app -TYPO3_INSTALL_DB_HOST=mysql -TYPO3_INSTALL_DB_PORT=3306 -TYPO3_INSTALL_DB_UNIX_SOCKET="" -TYPO3_INSTALL_DB_USE_EXISTING=y -TYPO3_INSTALL_DB_DBNAME=typo3 -TYPO3_INSTALL_ADMIN_USER=admin -TYPO3_INSTALL_ADMIN_PASSWORD=Password123! -TYPO3_INSTALL_SITE_NAME="Powermail" -TYPO3_INSTALL_SITE_SETUP_TYPE=no -TYPO3_INSTALL_WEB_SERVER_CONFIG=apache diff --git a/.gitignore b/.gitignore index 9ba3c0353..6f33405f9 100644 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,7 @@ Thumbs.db .svn .sass-cache .php-cs-fixer.cache -.Build +.build composer.lock package-lock.json var diff --git a/.project/TYPO3/DockerConfiguration.php b/.project/TYPO3/DockerConfiguration.php deleted file mode 100644 index c56602ec8..000000000 --- a/.project/TYPO3/DockerConfiguration.php +++ /dev/null @@ -1,46 +0,0 @@ - 'utf8', - 'driver' => 'mysqli', - 'dbname' => getenv('MYSQL_DATABASE'), - 'host' => getenv('MYSQL_HOST'), - 'user' => getenv('MYSQL_USER'), - 'password' => getenv('MYSQL_PASSWORD'), -]; - -$GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename'] = 'LOKAL: ' . $GLOBALS['TYPO3_CONF_VARS']['SYS']['sitename']; - -$GLOBALS['TYPO3_CONF_VARS']['GFX']['colorspace'] = 'sRGB'; -$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_enabled'] = true; -$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor'] = 'ImageMagick'; -$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_path'] = '/usr/bin/'; -$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor_path_lzw'] = '/usr/bin/'; - -// joh316 -$GLOBALS['TYPO3_CONF_VARS']['BE']['installToolPassword'] = '$argon2i$v=19$m=65536,t=16,p=1$RmZtaE5LQU1rSGw2NUZiWQ$YdU5on+xJ4lI6Gwd4LWpbddeAEu88cctS2dnO+r9ty0'; - -$GLOBALS['TYPO3_CONF_VARS']['BE']['lockSSL'] = '0'; -$GLOBALS['TYPO3_CONF_VARS']['BE']['compressionLevel'] = '0'; -$GLOBALS['TYPO3_CONF_VARS']['BE']['debug'] = true; - -// Debug lokal aktivieren - OS รผbergreifend -$GLOBALS['TYPO3_CONF_VARS']['SYS']['displayErrors'] = 1; -$GLOBALS['TYPO3_CONF_VARS']['SYS']['enableDeprecationLog'] = 'file'; -$GLOBALS['TYPO3_CONF_VARS']['SYS']['systemLogLevel'] = 0; -$GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask'] = '*'; -$GLOBALS['TYPO3_CONF_VARS']['SYS']['clearCacheSystem'] = 1; -$GLOBALS['TYPO3_CONF_VARS']['SYS']['curlUse'] = 1; -$GLOBALS['TYPO3_CONF_VARS']['SYS']['exceptionalErrors'] = '28674'; - -// Mail Settings -$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_smtp_server'] = 'mail:1025'; -$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_smtp_encrypt'] = ''; -$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_smtp_password'] = ''; -$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_smtp_username'] = ''; -$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport'] = 'smtp'; -$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromAddress'] = 'docker@localhost'; -$GLOBALS['TYPO3_CONF_VARS']['MAIL']['defaultMailFromName'] = 'local - Docker'; - -// Used for in-container requests -$GLOBALS['TYPO3_CONF_VARS']['HTTP']['verify'] = '0'; diff --git a/.project/docker/docker-compose.darwin.yml b/.project/docker/docker-compose.darwin.yml deleted file mode 100644 index da388a7db..000000000 --- a/.project/docker/docker-compose.darwin.yml +++ /dev/null @@ -1,68 +0,0 @@ -version: "3.7" - -services: - httpd: - image: in2code/httpd:2.4-alpine - environment: - WEB_DOCUMENT_ROOT: /app/${WEBROOT}/ - VIRTUAL_HOST: ${HOST} - VIRTUAL_PORT: 443 - VIRTUAL_PROTO: https - volumes: - - ./:/app/:cached - - typo3var:/app/${TYPO3_CACHE_DIR}/:nocopy - networks: - default: - aliases: - - ${HOST} - - php: - build: - context: .project/docker/php/ - dockerfile: Dockerfile - volumes: - - ./:/app/:cached - - typo3var:/app/${TYPO3_CACHE_DIR}/:nocopy - - $HOME/.composer/auth.json:/tmp/composer/auth.json - - $HOME/.composer/cache/:/tmp/composer/cache/ - env_file: - - .env - extra_hosts: - - host.docker.internal:host-gateway - - mysql: - image: in2code/mysql:5.7 - env_file: - - .env - volumes: - - mysql:/var/lib/mysql/ - - ${SQLDUMPSDIR}:/${SQLDUMPSDIR} - ports: - - ${SQLPORT}:3306 - - node: - image: node:10 - user: node - command: "npm run run-all" - volumes: - - ./:/home/node/app/ - working_dir: /home/node/app/Resources/Private - - chrome: - image: seleniarm/standalone-chromium:111.0 - environment: - HTTP_EXPOSE: 4444 - volumes: - - /dev/shm:/dev/shm - ports: - - ${CHROMEPORT}:5900 - - mail: - image: mailhog/mailhog - environment: - VIRTUAL_PORT: 8025 - VIRTUAL_HOST: ${MAIL} - -volumes: - typo3var: - mysql: diff --git a/.project/docker/docker-compose.unix.yml b/.project/docker/docker-compose.unix.yml deleted file mode 100644 index cca4a08cb..000000000 --- a/.project/docker/docker-compose.unix.yml +++ /dev/null @@ -1,63 +0,0 @@ -version: "3.7" - -services: - httpd: - image: in2code/httpd:2.4-alpine - environment: - WEB_DOCUMENT_ROOT: /app/${WEBROOT}/ - VIRTUAL_HOST: ${HOST} - VIRTUAL_PORT: 443 - VIRTUAL_PROTO: https - volumes: - - ./:/app/:cached - networks: - default: - aliases: - - ${HOST} - - php: - build: - context: .project/docker/php/ - dockerfile: Dockerfile - volumes: - - ./:/app/:cached - - $HOME/.composer/auth.json:/tmp/composer/auth.json - - $HOME/.composer/cache/:/tmp/composer/cache/ - env_file: - - .env - - mysql: - image: in2code/mysql:5.7 - env_file: - - .env - volumes: - - mysql:/var/lib/mysql/ - - ${SQLDUMPSDIR}:/${SQLDUMPSDIR} - ports: - - ${SQLPORT}:3306 - - node: - image: node:10 - user: node - command: ["bash"] - tty: true - volumes: - - ./:/home/node/app/ - working_dir: /home/node/app/Resources/Private - - chrome: - image: seleniarm/standalone-chromium:111.0 - volumes: - - /dev/shm:/dev/shm - ports: - - ${CHROMEPORT}:5900 - - mail: - image: mailhog/mailhog - environment: - VIRTUAL_PORT: 8025 - VIRTUAL_HOST: ${MAIL} - -volumes: - typo3var: - mysql: diff --git a/.project/docker/php/Dockerfile b/.project/docker/php/Dockerfile deleted file mode 100644 index df36a0acb..000000000 --- a/.project/docker/php/Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM in2code/php-dev:8.1-fpm - -COPY zz_xdebug.ini /usr/local/etc/php/conf.d/zz_xdebug.ini diff --git a/.project/docker/php/zz_xdebug.ini b/.project/docker/php/zz_xdebug.ini deleted file mode 100644 index 96fa552b3..000000000 --- a/.project/docker/php/zz_xdebug.ini +++ /dev/null @@ -1,2 +0,0 @@ -xdebug.client_host=host.docker.internal -xdebug.discover_client_host=0 diff --git a/.project/TYPO3/additional.php b/.project/typo3/additional.php similarity index 82% rename from .project/TYPO3/additional.php rename to .project/typo3/additional.php index e012eec99..b5be9dcc4 100644 --- a/.project/TYPO3/additional.php +++ b/.project/typo3/additional.php @@ -15,12 +15,16 @@ 'DB' => [ 'Connections' => [ 'Default' => [ - 'charset' => 'utf8', + 'charset' => 'utf8mb4', 'driver' => 'mysqli', 'dbname' => getenv('MYSQL_DATABASE'), 'host' => getenv('MYSQL_HOST'), 'user' => getenv('MYSQL_USER'), 'password' => getenv('MYSQL_PASSWORD'), + 'tableoptions' => [ + 'charset' => 'utf8mb4', + 'collate' => 'utf8mb4_unicode_ci', + ], ], ], ], @@ -35,7 +39,7 @@ 'verify' => '0', ], 'MAIL' => [ - 'transport_smtp_server' => 'mail:1025', + 'transport_smtp_server' => getenv('MAIL_HOST'), 'transport_smtp_encrypt' => '', 'transport_smtp_password' => '', 'transport_smtp_username' => '', @@ -51,8 +55,9 @@ 'devIPmask' => '*', 'clearCacheSystem' => 1, 'curlUse' => 1, - 'exceptionalErrors' => '28674' - ] + 'exceptionalErrors' => '28674', + 'trustedHostsPattern' => '.*.*', + ], ]; $GLOBALS['TYPO3_CONF_VARS'] = array_replace_recursive($GLOBALS['TYPO3_CONF_VARS'], $changeSettings); diff --git a/.project/TYPO3/config.yaml b/.project/typo3/config.yaml similarity index 79% rename from .project/TYPO3/config.yaml rename to .project/typo3/config.yaml index c38cadff6..294531f82 100644 --- a/.project/TYPO3/config.yaml +++ b/.project/typo3/config.yaml @@ -1,9 +1,5 @@ -base: 'https://local.powermail-v11.de/' +base: 'https://powermail-v12.ddev.site/' errorHandling: { } -baseVariants: - - - base: 'https://powermail-v11.ddev.site/' - condition: 'applicationContext == "Development/DDEV"' languages: - title: deutsch diff --git a/.ddev/typo3/settings.php b/.project/typo3/settings.php similarity index 96% rename from .ddev/typo3/settings.php rename to .project/typo3/settings.php index 219cb20b8..e5903d03e 100644 --- a/.ddev/typo3/settings.php +++ b/.project/typo3/settings.php @@ -12,7 +12,7 @@ 'Connections' => [ 'Default' => [ 'charset' => 'utf8mb4', - 'dbname' => 'test', + 'dbname' => 'db', 'driver' => 'mysqli', 'host' => 'db', 'password' => 'db', @@ -25,6 +25,13 @@ ], ], ], + 'EXTCONF' => [ + 'lang' => [ + 'availableLanguages' => [ + 'de', + ], + ], + ], 'EXTENSIONS' => [ 'backend' => [ 'backendFavicon' => '', diff --git a/Documentation/ForContributors/Readme.md b/Documentation/ForContributors/Readme.md index cc09b8c85..e837903e6 100644 --- a/Documentation/ForContributors/Readme.md +++ b/Documentation/ForContributors/Readme.md @@ -2,18 +2,15 @@ If you want to contribute to the TYPO3 extension powermail, you are very welcome. -To make it easier to contribute, there are two docker based installations, with a complete TYPO3 setup and ready to +To make it easier to contribute, we provide a ddev enviroment, with a complete TYPO3 setup and ready to use. -## Development environments - -### DDEV-based environment -#### Prerequisites +## Prerequisites - Docker installed https://docs.docker.com/get-docker/ - ddev installed https://ddev.readthedocs.io/en/stable/ -#### Project setup +## Project setup - open a console in the project root - run `ddev start` @@ -24,30 +21,9 @@ Now you will be able to work with the website Frontend: https://powermail-.ddev.site/ \ Backend: https://powermail-.ddev.site/typo3 - -Username: admin \ -Password: password - -### "Plain" docker environment - -#### Prequisites - -- Docker installed https://docs.docker.com/get-docker/ -- Dinghy Proxy installed https://github.com/codekitchen/dinghy-http-proxy - -#### Project setup - -- open a console in the project root -- run `make install-project` - -Frontend https://local-.powermail.de/ \ -Backend: https://local-.powermail.de/typo3 - Username: admin \ Password: password -For all available `make` commands just run `make` - ## Behaviour tests More information on running behaviour tests is available here: [Behaviour tests](../../Tests/Behavior/readme.md) diff --git a/Makefile b/Makefile deleted file mode 100644 index 3ef502d43..000000000 --- a/Makefile +++ /dev/null @@ -1,259 +0,0 @@ -## Show this help -help: - echo "$(EMOJI_interrobang) Makefile version $(VERSION) help " - echo '' - echo 'About this help:' - echo ' Commands are ${BLUE}blue${RESET}' - echo ' Targets are ${YELLOW}yellow${RESET}' - echo ' Descriptions are ${GREEN}green${RESET}' - echo '' - echo 'Usage:' - echo ' ${BLUE}make${RESET} ${YELLOW}${RESET}' - echo '' - echo 'Targets:' - awk '/^[a-zA-Z\-\_0-9]+:/ { \ - helpMessage = match(lastLine, /^## (.*)/); \ - if (helpMessage) { \ - helpCommand = substr($$1, 0, index($$1, ":")+1); \ - helpMessage = substr(lastLine, RSTART + 3, RLENGTH); \ - printf " ${YELLOW}%-${TARGET_MAX_CHAR_NUM}s${RESET} ${GREEN}%s${RESET}\n", helpCommand, helpMessage; \ - } \ - } \ - { lastLine = $$0 }' $(MAKEFILE_LIST) - -## Stop all containers -stop: - echo "$(EMOJI_stop) Shutting down" - docker-compose stop - sleep 0.4 - docker-compose down --remove-orphans - -## Removes all containers and volumes -destroy: stop - echo "$(EMOJI_litter) Removing the project" - docker-compose down -v --remove-orphans - git clean -dfx - make link-compose-file - -## Starts docker-compose up -d -start: - echo "$(EMOJI_up) Starting the docker project" - docker-compose up -d --build - make .fix-mount-perms - make urls - -## Creates a backup of the database -mysql-dump: - echo "$(EMOJI_floppy_disk) Dumping the database" - mkdir -p $(SQLDUMPSDIR) - docker-compose exec -u 1000:1000 mysql bash -c "mysqldump -u$(MYSQL_USER) -p$(MYSQL_PASSWORD) --no-tablespaces --add-drop-database --create-options --extended-insert --no-autocommit --quick --default-character-set=utf8mb4 $(MYSQL_DATABASE) | gzip > /$(SQLDUMPSDIR)/$(SQLDUMPFILE)" - - -## Restores the database from the backup file defined in .env -mysql-restore: - echo "$(EMOJI_robot) Restoring the database" - docker-compose exec mysql bash -c 'DUMPFILE="/$(SQLDUMPSDIR)/$(SQLDUMPFILE)"; if [[ "$${DUMPFILE##*.}" == "sql" ]]; then cat $$DUMPFILE; else zcat $$DUMPFILE; fi | mysql --default-character-set=utf8 -u$(MYSQL_USER) -p$(MYSQL_PASSWORD) $(MYSQL_DATABASE)' - -## Starts composer-install -composer-install: - echo "$(EMOJI_package) Installing composer dependencies" - docker-compose exec php composer install - -## Create necessary directories -create-dirs: - echo "$(EMOJI_dividers) Creating required directories" - mkdir -p $(TYPO3_CACHE_DIR) - mkdir -p $(SQLDUMPSDIR) - mkdir -p $(WEBROOT)/$(TYPO3_CACHE_DIR) - -## Starts composer-install -composer-install-production: - echo "$(EMOJI_package) Installing composer dependencies (without dev)" - docker-compose exec php composer install --no-dev -ao - -## Install mkcert on this computer, skips installation if already present -install-mkcert: - if [[ "$$OSTYPE" == "linux-gnu" ]]; then \ - if [[ "$$(command -v certutil > /dev/null; echo $$?)" -ne 0 ]]; then sudo apt install libnss3-tools; fi; \ - if [[ "$$(command -v mkcert > /dev/null; echo $$?)" -ne 0 ]]; then sudo curl -L https://github.com/FiloSottile/mkcert/releases/download/v1.4.1/mkcert-v1.4.1-linux-amd64 -o /usr/local/bin/mkcert; sudo chmod +x /usr/local/bin/mkcert; fi; \ - elif [[ "$$OSTYPE" == "darwin"* ]]; then \ - BREW_LIST=$$(brew ls); \ - if [[ ! $$BREW_LIST == *"mkcert"* ]]; then brew install mkcert; fi; \ - if [[ ! $$BREW_LIST == *"nss"* ]]; then brew install nss; fi; \ - fi; - mkcert -install > /dev/null - -## Create SSL certificates for dinghy and starting project -create-certificate: install-mkcert - echo "$(EMOJI_secure) Creating SSL certificates for dinghy http proxy" - mkdir -p $(HOME)/.dinghy/certs/ - PROJECT=$$(echo "$${PWD##*/}" | tr -d '.'); \ - if [[ ! -f $(HOME)/.dinghy/certs/$$PROJECT.docker.key ]]; then mkcert -cert-file $(HOME)/.dinghy/certs/$$PROJECT.docker.crt -key-file $(HOME)/.dinghy/certs/$$PROJECT.docker.key "*.$$PROJECT.docker"; fi; - if [[ ! -f $(HOME)/.dinghy/certs/${HOST}.key ]]; then mkcert -cert-file $(HOME)/.dinghy/certs/${HOST}.crt -key-file $(HOME)/.dinghy/certs/${HOST}.key ${HOST}; fi; - if [[ ! -f $(HOME)/.dinghy/certs/${MAIL}.key ]]; then mkcert -cert-file $(HOME)/.dinghy/certs/${MAIL}.crt -key-file $(HOME)/.dinghy/certs/${MAIL}.key ${MAIL}; fi; - -## Choose the right docker-compose file for your environment -link-compose-file: - echo "$(EMOJI_triangular_ruler) Linking the OS specific compose file" -ifeq ($(shell uname -s), Darwin) - ln -snf .project/docker/docker-compose.darwin.yml docker-compose.yml -else - ln -snf .project/docker/docker-compose.unix.yml docker-compose.yml -endif - -## Install Frontend Build Tool Chain dependencies -npm-install: - echo "$(EMOJI_explodinghead) Installing Frontend Build Toolchain (this might take a while)" - docker-compose exec -u node -w /home/node/app/Resources/Private/ node npm ci - -## Start watch on node-container -npm-watch: - docker-compose exec -u node -w /home/node/app/Resources/Private/ node npm run watch:all - -## Stop the node container -npm-stop: - docker-compose stop node - -## Initialize the docker setup -init-docker: create-dirs create-certificate - echo "$(EMOJI_rocket) Initializing docker environment" - docker-compose pull - docker-compose up -d --build - docker-compose exec -u root php chown -R app:app /app/$(WEBROOT)/$(TYPO3_CACHE_DIR)/; - -## Copies the TYPO3 site configuration -typo3-add-site: - echo "$(EMOJI_triangular_flag) Copying the TYPO3 site configuration" - mkdir -p config/sites/main/ - cp -f .project/TYPO3/config.yaml config/sites/main/config.yaml - -## Copies the Additional/DockerConfiguration.php to the correct directory -typo3-add-dockerconfig: - echo "$(EMOJI_plug) Copying the docker specific configuration for TYPO3" - mkdir -p ./config/system - cp -f .project/TYPO3/additional.php ./config/system/additional.php - -## Runs the TYPO3 Database Compare -typo3-comparedb: - echo "$(EMOJI_leftright) Running database:updateschema" - docker-compose exec php ./.Build/bin/typo3 database:updateschema - -## Starts the TYPO3 setup process -typo3-setupinstall: - echo "$(EMOJI_upright) Running install:setup" - docker-compose exec php ./.Build/bin/typo3 install:setup - -## Clears TYPO3 caches via typo3-console -typo3-clearcache: - echo "$(EMOJI_broom) Clearing TYPO3 caches" - docker-compose exec php ./.Build/bin/typo3 cache:flush - -## Downloads the dynamicReturnTypeMeta.json for the PhpStorm dynamic return type plugin -typo3-install-autocomplete: - echo "$(EMOJI_crystal_ball) Installing TYPO3 autocompletion" - curl -sLO https://raw.githubusercontent.com/TYPO3/TYPO3.CMS/master/dynamicReturnTypeMeta.json - -## Checkout LFS files -lfs-fetch: - echo "$(EMOJI_milky_way) Fetching git LFS content" - git lfs fetch - git lfs checkout - -## Provision fileadmin with necessary files -provision-fileadmin: - echo "$(EMOJI_package) Provision fileadmin with necessary files from git lfs" - cd .Build/Web; \ - tar xvfz ../../.project/data/fileadmin.tar.gz - -## To start an existing project incl. rsync from fileadmin, uploads and database dump -install-project: lfs-fetch link-compose-file destroy add-hosts-entry init-docker .fix-mount-perms composer-install typo3-add-site typo3-add-dockerconfig typo3-install-autocomplete typo3-setupinstall provision-fileadmin mysql-restore typo3-clearcache typo3-comparedb - echo "---------------------" - echo "" - echo "The project is online $(EMOJI_thumbsup)" - echo "" - echo 'Stop the project with "make stop"' - echo "" - echo "---------------------" - make urls - -## Print Project URIs -urls: - PROJECT=$$(echo "$${PWD##*/}" | tr -d '.'); \ - SERVICES=$$(docker-compose ps --services | grep '$(SERVICELIST)'); \ - LONGEST=$$(($$(echo -e "$$SERVICES\nFrontend:" | wc -L 2> /dev/null || echo 15)+2)); \ - echo "$(EMOJI_telescope) Project URLs:"; \ - echo ''; \ - printf " %-$${LONGEST}s %s\n" "Frontend:" "https://$(HOST)/"; \ - printf " %-$${LONGEST}s %s\n" "Backend:" "https://$(HOST)/typo3/"; \ - printf " %-$${LONGEST}s %s\n" "Mail:" "https://$(MAIL)/"; \ - for service in $$SERVICES; do \ - printf " %-$${LONGEST}s %s\n" "$$service:" "https://$$service.$$PROJECT.docker/"; \ - done; - -## Create the hosts entry for the custom project URL (non-dinghy convention) -add-hosts-entry: - echo "$(EMOJI_monkey) Creating Hosts Entry (if not set yet)" - SERVICES=$$(command -v getent > /dev/null && echo "getent ahostsv4" || echo "dscacheutil -q host -a name"); \ - if [ ! "$$($$SERVICES $(HOST) | grep 127.0.0.1 > /dev/null; echo $$?)" -eq 0 ]; then sudo bash -c 'echo "127.0.0.1 $(HOST)" >> /etc/hosts; echo "Entry was added"'; else echo 'Entry already exists'; fi;\ - if [ ! "$$($$SERVICES $(MAIL) | grep 127.0.0.1 > /dev/null; echo $$?)" -eq 0 ]; then sudo bash -c 'echo "127.0.0.1 $(MAIL)" >> /etc/hosts; echo "Entry was added"'; else echo 'Entry already exists'; fi; - -## Log into the PHP container -login-php: - echo "$(EMOJI_elephant) Logging into the PHP container" - docker-compose exec php bash - -## Log into the mysql container -login-mysql: - echo "$(EMOJI_dolphin) Logging into MySQL Container" - docker-compose exec mysql bash - -## Set correct onwership of mounts. Docker creates mounts owned by root:root. -.fix-mount-perms: -ifeq ($(shell uname -s), Darwin) - echo "$(EMOJI_rocket) Fixing docker mount permissions" - docker-compose exec -u root php chown -R app:app /app/$(TYPO3_CACHE_DIR)/; -endif - -include .env - -# SETTINGS -TARGET_MAX_CHAR_NUM := 25 -MAKEFLAGS += --silent -SHELL := /bin/bash -VERSION := 1.0.0 - -# COLORS -GREEN := $(shell tput -Txterm setaf 2) -YELLOW := $(shell tput -Txterm setaf 3) -BLUE := $(shell tput -Txterm setaf 4) -WHITE := $(shell tput -Txterm setaf 7) -RESET := $(shell tput -Txterm sgr0) - -# EMOJIS (some are padded right with whitespace for text alignment) -EMOJI_litter := "๐Ÿšฎ๏ธ" -EMOJI_interrobang := "โ‰๏ธ " -EMOJI_floppy_disk := "๐Ÿ’พ๏ธ" -EMOJI_dividers := "๐Ÿ—‚๏ธ " -EMOJI_up := "๐Ÿ†™๏ธ" -EMOJI_receive := "๐Ÿ“ฅ๏ธ" -EMOJI_robot := "๐Ÿค–๏ธ" -EMOJI_stop := "๐Ÿ›‘๏ธ" -EMOJI_package := "๐Ÿ“ฆ๏ธ" -EMOJI_secure := "๐Ÿ”๏ธ" -EMOJI_explodinghead := "๐Ÿคฏ๏ธ" -EMOJI_rocket := "๐Ÿš€๏ธ" -EMOJI_plug := "๐Ÿ”Œ๏ธ" -EMOJI_leftright := "โ†”๏ธ " -EMOJI_upright := "โ†—๏ธ " -EMOJI_thumbsup := "๐Ÿ‘๏ธ" -EMOJI_telescope := "๐Ÿ”ญ๏ธ" -EMOJI_monkey := "๐Ÿ’๏ธ" -EMOJI_elephant := "๐Ÿ˜๏ธ" -EMOJI_dolphin := "๐Ÿฌ๏ธ" -EMOJI_helicopter := "๐Ÿš๏ธ" -EMOJI_broom := "๐Ÿงน" -EMOJI_nutandbolt := "๐Ÿ”ฉ" -EMOJI_crystal_ball := "๐Ÿ”ฎ" -EMOJI_triangular_ruler := "๐Ÿ“" -EMOJI_milky_way := "๐ŸŒŒ" -EMOJI_triangular_flag := "๐Ÿšฉ" diff --git a/Tests/Behavior/behat.ddev.yml b/Tests/Behavior/behat.ddev.yml deleted file mode 100644 index 6c2d0d2af..000000000 --- a/Tests/Behavior/behat.ddev.yml +++ /dev/null @@ -1,31 +0,0 @@ -default: - autoload: - '': '%paths.base%/Features/Bootstrap' - suites: - default: - paths: - features: '%paths.base%/Features' - bootstrap: '%paths.base%/Features/Bootstrap' - contexts: - - DrevOps\BehatScreenshotExtension\Context\ScreenshotContext - - FeatureContext - extensions: - DrevOps\BehatScreenshotExtension: - dir: '%paths.base%/../../.project/data/screenshots' - fail: true - fail_prefix: 'failed_' - purge: true - Behat\MinkExtension: - base_url: https://powermail-v11.ddev.site/ - files_path: /var/www/html/Tests/Behavior/Assets - selenium2: ~ - browser_name: 'chrome' - sessions: - default: - selenium2: - capabilities: - acceptSslCerts: true - browser: chrome - extra_capabilities: - acceptInsecureCerts: true - wd_host: 'http://chrome:4444/wd/hub' diff --git a/Tests/Behavior/behat.docker.yml b/Tests/Behavior/behat.docker.yml deleted file mode 100644 index 0a76f8513..000000000 --- a/Tests/Behavior/behat.docker.yml +++ /dev/null @@ -1,31 +0,0 @@ -default: - autoload: - '': '%paths.base%/Features/Bootstrap' - suites: - default: - paths: - features: '%paths.base%/Features' - bootstrap: '%paths.base%/Features/Bootstrap' - contexts: - - DrevOps\BehatScreenshotExtension\Context\ScreenshotContext - - FeatureContext - extensions: - DrevOps\BehatScreenshotExtension: - dir: '%paths.base%/../../.project/data/screenshots' - fail: true - fail_prefix: 'failed_' - purge: true - Behat\MinkExtension: - base_url: https://local.powermail-v11.de - files_path: /app/Tests/Behavior/Assets - selenium2: ~ - browser_name: 'chrome' - sessions: - default: - selenium2: - capabilities: - acceptSslCerts: true - browser: chrome - extra_capabilities: - acceptInsecureCerts: true - wd_host: 'http://chrome:4444/wd/hub' diff --git a/Tests/Behavior/behat.sh b/Tests/Behavior/behat.sh deleted file mode 100644 index bdcaa7e67..000000000 --- a/Tests/Behavior/behat.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -echo 'start behat for powermail' -../../.Build/vendor/behat/behat/bin/behat diff --git a/Tests/Behavior/behat.yml b/Tests/Behavior/behat.yml index c381f1aaa..ed782531f 100644 --- a/Tests/Behavior/behat.yml +++ b/Tests/Behavior/behat.yml @@ -6,10 +6,26 @@ default: paths: features: '%paths.base%/Features' bootstrap: '%paths.base%/Features/Bootstrap' - contexts: [FeatureContext] + contexts: + - DrevOps\BehatScreenshotExtension\Context\ScreenshotContext + - FeatureContext extensions: + DrevOps\BehatScreenshotExtension: + dir: '%paths.base%/../../.project/data/screenshots' + fail: true + fail_prefix: 'failed_' + purge: true Behat\MinkExtension: - base_url: http://powermail102.localhost.de - files_path: /var/www/html/powermailShared/fileadmin/user_upload - goutte: ~ + base_url: https://powermail-v12.ddev.site/ + files_path: /var/www/html/Tests/Behavior/Assets selenium2: ~ + browser_name: 'chrome' + sessions: + default: + selenium2: + capabilities: + acceptSslCerts: true + browser: chrome + extra_capabilities: + acceptInsecureCerts: true + wd_host: 'http://chrome:4444/wd/hub' diff --git a/Tests/Behavior/behats.sh b/Tests/Behavior/behats.sh deleted file mode 100644 index 77dec1da0..000000000 --- a/Tests/Behavior/behats.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -echo 'start behat for powermail and stop on the first failure' -../../.Build/vendor/behat/behat/bin/behat --stop-on-failure diff --git a/Tests/Behavior/behatt.sh b/Tests/Behavior/behatt.sh deleted file mode 100644 index 3b8a53711..000000000 --- a/Tests/Behavior/behatt.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -echo 'start behat for powermail and stop on the first failure with a tag' -../../.Build/vendor/behat/behat/bin/behat --stop-on-failure --tags=$1 diff --git a/Tests/Behavior/readme.md b/Tests/Behavior/readme.md index b24a46555..617d137dd 100644 --- a/Tests/Behavior/readme.md +++ b/Tests/Behavior/readme.md @@ -1,38 +1,6 @@ -# How to start behavior tests for powermail? +# How to start behaviour tests for powermail? -## Preperations - -* First of all, do a `composer update` in powermail root folder -* You have to install a local TYPO3-instance in the next step and it should be available under `powermail102. - localhost.de` -* Move (or symlink) the powermail-Folder into typo3conf/ext/ and activate the extension. -* Then import the database dump from http://powermail.in2code.ws/fileadmin/behat/powermail.sql.gz - -## Command line - -### Start Selenium - -* Download geckodriver from https://github.com/mozilla/geckodriver/releases, make it executable and move it to `/usr/local/bin/` -* Open a console and go to `EXT:powermail/Tests/Behavior/` -* Start a selenium server with `sh selenium.sh` -* As an alternative, you could specify which browser version should be used (if you installed a second firefox - probably older then quantum) - in my case: -`java -jar ../../.Build/vendor/se/selenium-server-standalone/bin/selenium-server-standalone.jar -Dwebdriver.firefox.bin="/var/www/Webtools/firefox/42/firefox"` - -### Start Behat - -* Open another console and go to `EXT:powermail/Tests/Behavior/` -* Start behat with `sh behat.sh` or with `sh behats.sh` (for stopping on first failure) -* As an alternative, you could specify a single test by its tag like `sh behatt.sh Pi1Default` (to start all tests @Pi1Default) - -## Screenshot - -Screen from the huge testparcours that has to be passed before every release: - - - -## Behaviour tests with docker - -### Using ddev +## Using docker and ddev Run the following commands in the project root @@ -41,15 +9,4 @@ Run the following commands in the project root Then ssh into ddev `ddev ssh` and then run the behat tests via composer -`composer run test:behaviour:ddev` - -### "Plain" docker - -- Prerequisite: https://github.com/codekitchen/dinghy-http-proxy \ - This is a local proxy, that enables you to run multiple docker projects in parallel -- Run `make install-project` -- Run `make login-php` - -In the container run - -`composer run test:behaviour:docker` +`composer run test:behaviour` diff --git a/Tests/Behavior/selenium.sh b/Tests/Behavior/selenium.sh deleted file mode 100644 index 09166bcd6..000000000 --- a/Tests/Behavior/selenium.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -echo 'start selenium server for powermail' -java -jar ../../.Build/vendor/se/selenium-server-standalone/bin/selenium-server-standalone.jar diff --git a/composer.json b/composer.json index 8769af490..bb3707f01 100644 --- a/composer.json +++ b/composer.json @@ -92,20 +92,17 @@ } }, "config": { - "vendor-dir": ".Build/vendor", - "bin-dir": ".Build/bin", + "vendor-dir": ".build/vendor", + "bin-dir": ".build/vendor/bin", "allow-plugins": { "typo3/class-alias-loader": true, "typo3/cms-composer-installers": true } }, "scripts": { - "test:behaviour:ddev": "behat --config Tests/Behavior/behat.ddev.yml", - "test:behaviour:ddev:tag": "behat --config Tests/Behavior/behat.ddev.yml --tags", - "test:behaviour:ddev:stop": "behat --config Tests/Behavior/behat.ddev.yml --stop-on-failure", - "test:behaviour:docker": "behat --config Tests/Behavior/behat.docker.yml", - "test:behaviour:docker:tag": "behat --config Tests/Behavior/behat.docker.yml --tags", - "test:behaviour:docker:stop": "behat --config Tests/Behavior/behat.docker.yml --stop-on-failure", + "test:behaviour": "behat --config Tests/Behavior/behat.yml", + "test:behaviour:tag": "behat --config Tests/Behavior/behat.yml --tags", + "test:behaviour:stop": "behat --config Tests/Behavior/behat.yml --stop-on-failure", "test:php:cs": "php-cs-fixer --version && php-cs-fixer fix --dry-run --config=.project/tests/.php-cs-fixer.php --diff", "test:php:lint": "find *.php Classes Configuration Tests -name '*.php' -print0 | xargs -0 -n 1 -P 4 php -l", "test:typoscript:lint": "typoscript-lint --config=.project/tests/typoscript-lint.yml", @@ -114,7 +111,7 @@ "extra": { "typo3/cms": { "cms-package-dir": "{$vendor-dir}/typo3/cms", - "web-dir": ".Build/Web", + "web-dir": ".build/public", "extension-key": "powermail", "ignore-as-root": false }