[BUGFIX] Add reports.html to acceptance tests
[Packages/TYPO3.CMS.git] / Build / testing-docker / local / docker-compose.yml
1 version: '2.3'
2 services:
3   chrome:
4     image: selenium/standalone-chrome:3.12
5
6   mariadb10:
7     image: mariadb:10
8     environment:
9       MYSQL_ROOT_PASSWORD: funcp
10     tmpfs:
11       - /var/lib/mysql/:rw,noexec,nosuid
12
13   mssql2017cu9:
14     image: microsoft/mssql-server-linux:2017-CU9
15     environment:
16       ACCEPT_EULA: Y
17       SA_PASSWORD: "Test1234!"
18       MSSQL_PID: Developer
19     # No tmpfs setup here since mssql fails on tmpfs o_direct.
20     # This makes mssql sloooow for functionals.
21
22   postgres10:
23     image: postgres:10
24     environment:
25       POSTGRES_PASSWORD: funcp
26       POSTGRES_USER: ${HOST_USER}
27     tmpfs:
28       - /var/lib/postgresql/data:rw,noexec,nosuid
29
30   web:
31     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
32     user: ${HOST_UID}
33     stop_grace_period: 1s
34     volumes:
35       - ${CORE_ROOT}:${CORE_ROOT}
36     command: php -n -c /etc/php/cli-no-xdebug/php.ini -S web:8000 -t ${CORE_ROOT}
37
38   redis4:
39     image: redis:4-alpine
40
41   memcached1-5:
42     image: memcached:1.5-alpine
43
44
45   prepare_acceptance_backend_mariadb10:
46     image: alpine:3.8
47     links:
48       - mariadb10
49       - chrome
50       - web
51     command: >
52       /bin/sh -c "
53         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
54           set -x
55         fi
56         echo Waiting for database start...;
57         while ! nc -z mariadb10 3306; do
58           sleep 1;
59         done;
60         echo Database is up;
61       "
62   acceptance_backend_mariadb10:
63     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
64     user: ${HOST_UID}
65     environment:
66       typo3DatabaseName: func_test
67       typo3DatabaseUsername: root
68       typo3DatabasePassword: funcp
69       typo3DatabaseHost: mariadb10
70     volumes:
71       - ${CORE_ROOT}:${CORE_ROOT}
72       - ${HOST_HOME}:${HOST_HOME}
73       - /etc/passwd:/etc/passwd:ro
74       - /etc/group:/etc/group:ro
75     working_dir: ${CORE_ROOT}
76     command: >
77       /bin/sh -c "
78         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
79           set -x
80         fi
81         mkdir -p typo3temp/var/tests/ \
82           && ./bin/codecept run Backend -d -c typo3/sysext/core/Tests/codeception.yml ${TEST_FILE} --html reports.html
83       "
84
85   prepare_acceptance_install_mariadb10:
86     image: alpine:3.8
87     links:
88       - mariadb10
89       - chrome
90       - web
91     command: >
92       /bin/sh -c "
93         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
94           set -x
95         fi
96         echo Waiting for database start...;
97         while ! nc -z mariadb10 3306; do
98           sleep 1;
99         done;
100         echo Database is up;
101       "
102   acceptance_install_mariadb10:
103     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
104     user: ${HOST_UID}
105     environment:
106       typo3InstallMysqlDatabaseHost: mariadb10
107       typo3InstallMysqlDatabaseName: func_test
108       typo3InstallMysqlDatabaseUsername: root
109       typo3InstallMysqlDatabasePassword: funcp
110     volumes:
111       - ${CORE_ROOT}:${CORE_ROOT}
112       - ${HOST_HOME}:${HOST_HOME}
113       - /etc/passwd:/etc/passwd:ro
114       - /etc/group:/etc/group:ro
115     working_dir: ${CORE_ROOT}
116     command: >
117       /bin/sh -c "
118         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
119           set -x
120         fi
121         mkdir -p typo3temp/var/tests/ \
122           && ./bin/codecept run Install -d -c typo3/sysext/core/Tests/codeception.yml --env=mysql --html reports.html
123       "
124
125   prepare_acceptance_install_postgres10:
126     image: alpine:3.8
127     links:
128       - postgres10
129       - chrome
130       - web
131     command: >
132       /bin/sh -c "
133         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
134           set -x
135         fi
136         echo Waiting for database start...;
137         while ! nc -z postgres10 5432; do
138           sleep 1;
139         done;
140         echo Database is up;
141       "
142   acceptance_install_postgres10:
143     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
144     user: ${HOST_UID}
145     environment:
146       typo3InstallPostgresqlDatabaseHost: postgres10
147       typo3InstallPostgresqlDatabaseName: ${HOST_USER}
148       typo3InstallPostgresqlDatabaseUsername: ${HOST_USER}
149       typo3InstallPostgresqlDatabasePassword: funcp
150     working_dir: ${CORE_ROOT}
151     volumes:
152       - ${CORE_ROOT}:${CORE_ROOT}
153       - ${HOST_HOME}:${HOST_HOME}
154       - /etc/passwd:/etc/passwd:ro
155       - /etc/group:/etc/group:ro
156     command: >
157       /bin/sh -c "
158         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
159           set -x
160         fi
161         mkdir -p typo3temp/var/tests/ \
162           && ./bin/codecept run Install -d -c typo3/sysext/core/Tests/codeception.yml --env=postgresql --html reports.html
163       "
164
165   prepare_acceptance_install_sqlite:
166     image: alpine:3.8
167     links:
168       - chrome
169       - web
170     command: >
171       /bin/sh -c "
172         sleep 1;
173       "
174   acceptance_install_sqlite:
175     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
176     user: ${HOST_UID}
177     volumes:
178       - ${CORE_ROOT}:${CORE_ROOT}
179       - ${HOST_HOME}:${HOST_HOME}
180       - /etc/passwd:/etc/passwd:ro
181       - /etc/group:/etc/group:ro
182     working_dir: ${CORE_ROOT}
183     command: >
184       /bin/sh -c "
185         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
186           set -x
187         fi
188         mkdir -p typo3temp/var/tests/ \
189           && ./bin/codecept run Install -d -c typo3/sysext/core/Tests/codeception.yml --env=sqlite --html reports.html
190       "
191
192   build_css:
193     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
194     user: ${HOST_UID}
195     volumes:
196     - ${CORE_ROOT}:${CORE_ROOT}
197     - ${HOST_HOME}:${HOST_HOME}
198     - /etc/passwd:/etc/passwd:ro
199     - /etc/group:/etc/group:ro
200     working_dir: ${CORE_ROOT}/Build
201     command: >
202       /bin/sh -c "
203         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
204           set -x
205         fi
206         yarn install \
207           && ./node_modules/grunt/bin/grunt css
208       "
209
210   build_javascript:
211     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
212     user: ${HOST_UID}
213     volumes:
214     - ${CORE_ROOT}:${CORE_ROOT}
215     - ${HOST_HOME}:${HOST_HOME}
216     - /etc/passwd:/etc/passwd:ro
217     - /etc/group:/etc/group:ro
218     working_dir: ${CORE_ROOT}/Build
219     command: >
220       /bin/sh -c "
221         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
222           set -x
223         fi
224         yarn install \
225           && ./node_modules/grunt/bin/grunt scripts
226       "
227
228   cgl_git:
229     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
230     user: ${HOST_UID}
231     volumes:
232     - ${CORE_ROOT}:${CORE_ROOT}
233     - ${HOST_HOME}:${HOST_HOME}
234     - /etc/passwd:/etc/passwd:ro
235     - /etc/group:/etc/group:ro
236     working_dir: ${CORE_ROOT}
237     command: >
238       /bin/sh -c "
239         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
240           set -x
241         fi
242         Build/Scripts/cglFixMyCommit.sh ${CGLCHECK_DRY_RUN};
243       "
244
245   cgl_all:
246     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
247     user: ${HOST_UID}
248     volumes:
249     - ${CORE_ROOT}:${CORE_ROOT}
250     - ${HOST_HOME}:${HOST_HOME}
251     - /etc/passwd:/etc/passwd:ro
252     - /etc/group:/etc/group:ro
253     working_dir: ${CORE_ROOT}
254     command: >
255       /bin/sh -c "
256         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
257           set -x
258         fi
259         php -n -c /etc/php/cli-no-xdebug/php.ini bin/php-cs-fixer fix -v ${CGLCHECK_DRY_RUN} --path-mode intersection \
260           --config=Build/.php_cs typo3/
261       "
262
263   check_annotations:
264     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
265     user: ${HOST_UID}
266     volumes:
267     - ${CORE_ROOT}:${CORE_ROOT}
268     - ${HOST_HOME}:${HOST_HOME}
269     - /etc/passwd:/etc/passwd:ro
270     - /etc/group:/etc/group:ro
271     working_dir: ${CORE_ROOT}
272     command: >
273       /bin/sh -c "
274         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
275           set -x
276         fi
277         Build/Scripts/annotationChecker.php;
278       "
279
280   check_bom:
281     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
282     user: ${HOST_UID}
283     volumes:
284     - ${CORE_ROOT}:${CORE_ROOT}
285     - ${HOST_HOME}:${HOST_HOME}
286     - /etc/passwd:/etc/passwd:ro
287     - /etc/group:/etc/group:ro
288     working_dir: ${CORE_ROOT}
289     command: >
290       /bin/sh -c "
291         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
292           set -x
293         fi
294         Build/Scripts/checkUtf8Bom.sh
295       "
296
297   check_composer:
298     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
299     user: ${HOST_UID}
300     volumes:
301     - ${CORE_ROOT}:${CORE_ROOT}
302     - ${HOST_HOME}:${HOST_HOME}
303     - /etc/passwd:/etc/passwd:ro
304     - /etc/group:/etc/group:ro
305     working_dir: ${CORE_ROOT}
306     command: >
307       /bin/sh -c "
308         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
309           set -x
310         fi
311         Build/Scripts/checkIntegrityComposer.php;
312       "
313
314   check_csv_fixtures:
315     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
316     user: ${HOST_UID}
317     volumes:
318     - ${CORE_ROOT}:${CORE_ROOT}
319     - ${HOST_HOME}:${HOST_HOME}
320     - /etc/passwd:/etc/passwd:ro
321     - /etc/group:/etc/group:ro
322     working_dir: ${CORE_ROOT}
323     command: >
324       /bin/sh -c "
325         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
326           set -x
327         fi
328         Build/Scripts/checkIntegrityCsvFixtures.php;
329       "
330
331   check_exception_codes:
332     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
333     user: ${HOST_UID}
334     volumes:
335     - ${CORE_ROOT}:${CORE_ROOT}
336     - ${HOST_HOME}:${HOST_HOME}
337     - /etc/passwd:/etc/passwd:ro
338     - /etc/group:/etc/group:ro
339     working_dir: ${CORE_ROOT}
340     command: >
341       /bin/sh -c "
342         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
343           set -x
344         fi
345         Build/Scripts/duplicateExceptionCodeCheck.sh;
346       "
347
348   check_extension_scanner_rst:
349     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
350     user: ${HOST_UID}
351     volumes:
352     - ${CORE_ROOT}:${CORE_ROOT}
353     - ${HOST_HOME}:${HOST_HOME}
354     - /etc/passwd:/etc/passwd:ro
355     - /etc/group:/etc/group:ro
356     working_dir: ${CORE_ROOT}
357     command: >
358       /bin/sh -c "
359         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
360           set -x
361         fi
362         Build/Scripts/extensionScannerRstFileReferences.php;
363       "
364
365   check_file_path_length:
366     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
367     user: ${HOST_UID}
368     volumes:
369     - ${CORE_ROOT}:${CORE_ROOT}
370     - ${HOST_HOME}:${HOST_HOME}
371     - /etc/passwd:/etc/passwd:ro
372     - /etc/group:/etc/group:ro
373     working_dir: ${CORE_ROOT}
374     command: >
375       /bin/sh -c "
376         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
377           set -x
378         fi
379         Build/Scripts/maxFilePathLength.sh;
380       "
381
382   check_git_submodule:
383     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
384     user: ${HOST_UID}
385     volumes:
386     - ${CORE_ROOT}:${CORE_ROOT}
387     - ${HOST_HOME}:${HOST_HOME}
388     - /etc/passwd:/etc/passwd:ro
389     - /etc/group:/etc/group:ro
390     working_dir: ${CORE_ROOT}
391     command: >
392       /bin/sh -c "
393         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
394           set -x
395         fi
396         if [ `git submodule status 2>&1 | wc -l` -ne 0 ]; then
397           echo \"Found a submodule definition in repository\";
398           exit 1;
399         fi
400       "
401
402   check_permissions:
403     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
404     user: ${HOST_UID}
405     volumes:
406     - ${CORE_ROOT}:${CORE_ROOT}
407     - ${HOST_HOME}:${HOST_HOME}
408     - /etc/passwd:/etc/passwd:ro
409     - /etc/group:/etc/group:ro
410     working_dir: ${CORE_ROOT}
411     command: >
412       /bin/sh -c "
413         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
414           set -x
415         fi
416         Build/Scripts/checkFilePermissions.sh;
417       "
418
419   check_rst:
420     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
421     user: ${HOST_UID}
422     volumes:
423     - ${CORE_ROOT}:${CORE_ROOT}
424     - ${HOST_HOME}:${HOST_HOME}
425     - /etc/passwd:/etc/passwd:ro
426     - /etc/group:/etc/group:ro
427     working_dir: ${CORE_ROOT}
428     command: >
429       /bin/sh -c "
430         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
431           set -x
432         fi
433         Build/Scripts/validateRstFiles.php;
434       "
435
436   check_xlf:
437     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
438     user: ${HOST_UID}
439     volumes:
440     - ${CORE_ROOT}:${CORE_ROOT}
441     - ${HOST_HOME}:${HOST_HOME}
442     - /etc/passwd:/etc/passwd:ro
443     - /etc/group:/etc/group:ro
444     working_dir: ${CORE_ROOT}
445     command: >
446       /bin/sh -c "
447         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
448           set -x
449         fi
450         Build/Scripts/xlfcheck.sh;
451       "
452
453   composer_install:
454     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
455     user: ${HOST_UID}
456     volumes:
457     - ${CORE_ROOT}:${CORE_ROOT}
458     - ${HOST_HOME}:${HOST_HOME}
459     - /etc/passwd:/etc/passwd:ro
460     - /etc/group:/etc/group:ro
461     working_dir: ${CORE_ROOT}
462     command: >
463       /bin/sh -c "
464         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
465           set -x
466         fi
467         composer install;
468       "
469
470   composer_validate:
471     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
472     user: ${HOST_UID}
473     volumes:
474     - ${CORE_ROOT}:${CORE_ROOT}
475     - ${HOST_HOME}:${HOST_HOME}
476     - /etc/passwd:/etc/passwd:ro
477     - /etc/group:/etc/group:ro
478     working_dir: ${CORE_ROOT}
479     command: >
480       /bin/sh -c "
481         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
482           set -x
483         fi
484         composer validate;
485       "
486
487   prepare_functional_mariadb10:
488     image: alpine:3.8
489     links:
490       - mariadb10
491       - redis4
492       - memcached1-5
493     command: >
494       /bin/sh -c "
495         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
496           set -x
497         fi
498         echo Waiting for database start...;
499         while ! nc -z mariadb10 3306; do
500           sleep 1;
501         done;
502         echo Database is up;
503       "
504   functional_mariadb10:
505     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
506     user: ${HOST_UID}
507     volumes:
508       - ${CORE_ROOT}:${CORE_ROOT}
509       - ${HOST_HOME}:${HOST_HOME}
510       - /etc/passwd:/etc/passwd:ro
511       - /etc/group:/etc/group:ro
512     environment:
513       typo3DatabaseName: func_test
514       typo3DatabaseUsername: root
515       typo3DatabasePassword: funcp
516       typo3DatabaseHost: mariadb10
517       typo3TestingRedisHost: redis4
518       typo3TestingMemcachedHost: memcached1-5
519     working_dir: ${CORE_ROOT}
520     command: >
521       /bin/sh -c "
522         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
523           set -x
524         fi
525         php -v | grep '^PHP'
526         if [ ${PHP_XDEBUG_ON} -eq 0 ]; then
527           php -n -c /etc/php/cli-no-xdebug/php.ini \
528             vendor/phpunit/phpunit/phpunit -c vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTests.xml ${EXTRA_TEST_OPTIONS} ${TEST_FILE};
529         else
530           DOCKER_HOST=`route -n | awk '/^0.0.0.0/ { print $$2 }'`
531           XDEBUG_CONFIG=\"remote_port=${PHP_XDEBUG_PORT} remote_enable=1 remote_host=$${DOCKER_HOST}\" \
532             vendor/phpunit/phpunit/phpunit -c vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTests.xml ${EXTRA_TEST_OPTIONS} ${TEST_FILE};
533         fi
534       "
535
536   prepare_functional_mssql2017cu9:
537     image: alpine:3.8
538     links:
539       - mssql2017cu9
540       - redis4
541       - memcached1-5
542     command: >
543       /bin/sh -c "
544         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
545           set -x
546         fi
547         echo Waiting for database start...;
548         while ! nc -z mssql2017cu9 1433; do
549           sleep 1;
550         done;
551         echo Database is up;
552       "
553   functional_mssql2017cu9:
554     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
555     user: ${HOST_UID}
556     volumes:
557       - ${CORE_ROOT}:${CORE_ROOT}
558       - ${HOST_HOME}:${HOST_HOME}
559       - /etc/passwd:/etc/passwd:ro
560       - /etc/group:/etc/group:ro
561     environment:
562       typo3DatabaseDriver: sqlsrv
563       typo3DatabaseName: func
564       typo3DatabasePassword: "Test1234!"
565       typo3DatabaseUsername: SA
566       typo3DatabasePort: 1433
567       typo3DatabaseCharset: utf-8
568       typo3DatabaseHost: mssql2017cu9
569       typo3TestingRedisHost: redis4
570       typo3TestingMemcachedHost: memcached1-5
571     working_dir: ${CORE_ROOT}
572     command: >
573       /bin/sh -c "
574         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
575           set -x
576         fi
577         php -v | grep '^PHP'
578         if [ ${PHP_XDEBUG_ON} -eq 0 ]; then
579           php -n -c /etc/php/cli-no-xdebug/php.ini \
580             vendor/phpunit/phpunit/phpunit -c vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTests.xml ${EXTRA_TEST_OPTIONS} --exclude-group not-mssql ${TEST_FILE};
581         else
582           DOCKER_HOST=`route -n | awk '/^0.0.0.0/ { print $$2 }'`
583           XDEBUG_CONFIG=\"remote_port=${PHP_XDEBUG_PORT} remote_enable=1 remote_host=$${DOCKER_HOST}\" \
584             vendor/phpunit/phpunit/phpunit -c vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTests.xml ${EXTRA_TEST_OPTIONS} --exclude-group not-mssql ${TEST_FILE};
585         fi
586       "
587
588   prepare_functional_postgres10:
589     image: alpine:3.8
590     links:
591       - postgres10
592       - redis4
593       - memcached1-5
594     command: >
595       /bin/sh -c "
596         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
597           set -x
598         fi
599         echo Waiting for database start...;
600         while ! nc -z postgres10 5432; do
601           sleep 1;
602         done;
603         echo Database is up;
604       "
605   functional_postgres10:
606     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
607     user: ${HOST_UID}
608     volumes:
609       - ${CORE_ROOT}:${CORE_ROOT}
610       - ${HOST_HOME}:${HOST_HOME}
611       - /etc/passwd:/etc/passwd:ro
612       - /etc/group:/etc/group:ro
613     environment:
614       typo3DatabaseDriver: pdo_pgsql
615       typo3DatabaseName: bamboo
616       typo3DatabaseUsername: ${HOST_USER}
617       typo3DatabaseHost: postgres10
618       typo3DatabasePassword: funcp
619       typo3TestingRedisHost: redis4
620       typo3TestingMemcachedHost: memcached1-5
621     working_dir: ${CORE_ROOT}
622     command: >
623       /bin/sh -c "
624         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
625           set -x
626         fi
627         php -v | grep '^PHP'
628         if [ ${PHP_XDEBUG_ON} -eq 0 ]; then
629           php -n -c /etc/php/cli-no-xdebug/php.ini \
630             vendor/phpunit/phpunit/phpunit -c vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTests.xml ${EXTRA_TEST_OPTIONS} --exclude-group not-postgres ${TEST_FILE};
631         else
632           DOCKER_HOST=`route -n | awk '/^0.0.0.0/ { print $$2 }'`
633           XDEBUG_CONFIG=\"remote_port=${PHP_XDEBUG_PORT} remote_enable=1 remote_host=$${DOCKER_HOST}\" \
634             vendor/phpunit/phpunit/phpunit -c vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTests.xml ${EXTRA_TEST_OPTIONS} --exclude-group not-postgres ${TEST_FILE};
635         fi
636       "
637
638   prepare_functional_sqlite:
639     image: alpine:3.8
640     links:
641       - redis4
642       - memcached1-5
643     command: >
644       /bin/sh -c "
645         sleep 1;
646       "
647   functional_sqlite:
648     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
649     user: ${HOST_UID}
650     volumes:
651       - ${CORE_ROOT}:${CORE_ROOT}
652       - ${HOST_HOME}:${HOST_HOME}
653       - /etc/passwd:/etc/passwd:ro
654       - /etc/group:/etc/group:ro
655       # @todo: sqlite DB is currently written to functional-doc-root (typo3temp/var/test-functional-xy/) /test.sqlite
656       # This directory is mapped to the local dir, so it is hard disk and not a tmpfs. sqlite functionals would speed
657       # up significantly if typo3/testing-framework would accept an environment variable to locate test.sqlite file on
658       # some tmpfs mount. Note this is not an issue within bamboo since in bamboo the entire core checkout is a tmpfs already.
659     environment:
660       typo3DatabaseDriver: pdo_sqlite
661       typo3TestingRedisHost: redis4
662       typo3TestingMemcachedHost: memcached1-5
663     working_dir: ${CORE_ROOT}
664     command: >
665       /bin/sh -c "
666         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
667           set -x
668         fi
669         php -v | grep '^PHP'
670         if [ ${PHP_XDEBUG_ON} -eq 0 ]; then
671           php -n -c /etc/php/cli-no-xdebug/php.ini \
672             vendor/phpunit/phpunit/phpunit -c vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTests.xml ${EXTRA_TEST_OPTIONS} --exclude-group not-sqlite ${TEST_FILE};
673         else
674           DOCKER_HOST=`route -n | awk '/^0.0.0.0/ { print $$2 }'`
675           XDEBUG_CONFIG=\"remote_port=${PHP_XDEBUG_PORT} remote_enable=1 remote_host=$${DOCKER_HOST}\" \
676             vendor/phpunit/phpunit/phpunit -c vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTests.xml ${EXTRA_TEST_OPTIONS} --exclude-group not-sqlite ${TEST_FILE};
677         fi
678       "
679
680   lint:
681     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
682     user: ${HOST_UID}
683     volumes:
684     - ${CORE_ROOT}:${CORE_ROOT}
685     - /etc/passwd:/etc/passwd:ro
686     - /etc/group:/etc/group:ro
687     working_dir: ${CORE_ROOT}
688     command: >
689       /bin/sh -c "
690         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
691           set -x
692         fi
693         php -v | grep '^PHP'
694         find typo3/ -name \\*.php -print0 | xargs -0 -n1 -P4 php -n -c /etc/php/cli-no-xdebug/php.ini -l >/dev/null
695       "
696
697   lint_scss:
698     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
699     user: ${HOST_UID}
700     volumes:
701     - ${CORE_ROOT}:${CORE_ROOT}
702     - ${HOST_HOME}:${HOST_HOME}
703     - /etc/passwd:/etc/passwd:ro
704     - /etc/group:/etc/group:ro
705     working_dir: ${CORE_ROOT}/Build
706     command: >
707       /bin/sh -c "
708         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
709           set -x
710         fi
711         yarn install \
712           && ./node_modules/grunt/bin/grunt stylelint;
713       "
714
715   lint_typescript:
716     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
717     user: ${HOST_UID}
718     volumes:
719     - ${CORE_ROOT}:${CORE_ROOT}
720     - ${HOST_HOME}:${HOST_HOME}
721     - /etc/passwd:/etc/passwd:ro
722     - /etc/group:/etc/group:ro
723     working_dir: ${CORE_ROOT}/Build
724     command: >
725       /bin/sh -c "
726         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
727           set -x
728         fi
729         yarn install \
730           && ./node_modules/grunt/bin/grunt tslint;
731       "
732
733   unit:
734     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
735     user: ${HOST_UID}
736     volumes:
737       - ${CORE_ROOT}:${CORE_ROOT}
738       - ${HOST_HOME}:${HOST_HOME}
739       - /etc/passwd:/etc/passwd:ro
740       - /etc/group:/etc/group:ro
741     working_dir: ${CORE_ROOT}
742     command: >
743       /bin/sh -c "
744         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
745           set -x
746         fi
747         php -v | grep '^PHP'
748         if [ ${PHP_XDEBUG_ON} -eq 0 ]; then
749           php -n -c /etc/php/cli-no-xdebug/php.ini \
750             vendor/phpunit/phpunit/phpunit -c vendor/typo3/testing-framework/Resources/Core/Build/UnitTests.xml ${EXTRA_TEST_OPTIONS} ${TEST_FILE};
751         else
752           DOCKER_HOST=`route -n | awk '/^0.0.0.0/ { print $$2 }'`
753           XDEBUG_CONFIG=\"remote_port=${PHP_XDEBUG_PORT} remote_enable=1 remote_host=$${DOCKER_HOST}\" \
754             vendor/phpunit/phpunit/phpunit -c vendor/typo3/testing-framework/Resources/Core/Build/UnitTests.xml ${EXTRA_TEST_OPTIONS} ${TEST_FILE};
755         fi
756       "
757
758   unitDeprecated:
759     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
760     user: ${HOST_UID}
761     volumes:
762       - ${CORE_ROOT}:${CORE_ROOT}
763       - ${HOST_HOME}:${HOST_HOME}
764       - /etc/passwd:/etc/passwd:ro
765       - /etc/group:/etc/group:ro
766     working_dir: ${CORE_ROOT}
767     command: >
768       /bin/sh -c "
769         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
770           set -x
771         fi
772         php -v | grep '^PHP'
773         if [ ${PHP_XDEBUG_ON} -eq 0 ]; then
774           php -n -c /etc/php/cli-no-xdebug/php.ini \
775             vendor/phpunit/phpunit/phpunit -c vendor/typo3/testing-framework/Resources/Core/Build/UnitTestsDeprecated.xml ${EXTRA_TEST_OPTIONS} ${TEST_FILE};
776         else
777           DOCKER_HOST=`route -n | awk '/^0.0.0.0/ { print $$2 }'`
778           XDEBUG_CONFIG=\"remote_port=${PHP_XDEBUG_PORT} remote_enable=1 remote_host=$${DOCKER_HOST}\" \
779             vendor/phpunit/phpunit/phpunit -c vendor/typo3/testing-framework/Resources/Core/Build/UnitTestsDeprecated.xml ${EXTRA_TEST_OPTIONS} ${TEST_FILE};
780         fi
781       "
782
783   unitJavascript:
784     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
785     user: ${HOST_UID}
786     volumes:
787       - ${CORE_ROOT}:${CORE_ROOT}
788       - ${HOST_HOME}:${HOST_HOME}
789       - /etc/passwd:/etc/passwd:ro
790       - /etc/group:/etc/group:ro
791     working_dir: ${CORE_ROOT}/Build
792     command: >
793       /bin/sh -c "
794         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
795           set -x
796         fi
797         yarn install \
798           && cd .. \
799           && Build/node_modules/karma/bin/karma start \
800             vendor/typo3/testing-framework/Resources/Core/Build/Configuration/JSUnit/karma.conf.js --single-run
801       "
802
803   unitRandom:
804     image: typo3gmbh/${DOCKER_PHP_IMAGE}:latest
805     user: ${HOST_UID}
806     volumes:
807       - ${CORE_ROOT}:${CORE_ROOT}
808       - ${HOST_HOME}:${HOST_HOME}
809       - /etc/passwd:/etc/passwd:ro
810       - /etc/group:/etc/group:ro
811     working_dir: ${CORE_ROOT}
812     command: >
813       /bin/sh -c "
814         if [ ${SCRIPT_VERBOSE} -eq 1 ]; then
815           set -x
816         fi
817         php -v | grep '^PHP'
818         if [ ${PHP_XDEBUG_ON} -eq 0 ]; then
819           php -n -c /etc/php/cli-no-xdebug/php.ini \
820             vendor/phpunit/phpunit/phpunit-randomizer -c vendor/typo3/testing-framework/Resources/Core/Build/UnitTests.xml ${EXTRA_TEST_OPTIONS} ${PHPUNIT_RANDOM} ${TEST_FILE};
821         else
822           DOCKER_HOST=`route -n | awk '/^0.0.0.0/ { print $$2 }'`
823           XDEBUG_CONFIG=\"remote_port=${PHP_XDEBUG_PORT} remote_enable=1 remote_host=$${DOCKER_HOST}\" \
824             vendor/phpunit/phpunit/phpunit-randomizer -c vendor/typo3/testing-framework/Resources/Core/Build/UnitTests.xml ${EXTRA_TEST_OPTIONS} ${PHPUNIT_RANDOM} ${TEST_FILE};
825         fi
826       "