-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtodo.txt
172 lines (115 loc) · 8.64 KB
/
todo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
See also: https://github.com/tanoconsulting/euts/issues
v0.w - docs
- add examples using a simpler set of packages: ez only
- document better: running tests for ezp-legacy extensions
v0.x - more test coverage, cleanups
- in current GHA tests (here and all other bundles), we could unset COMPOSE_PROJECT_NAME before running setup.sh, or make
it autodetect it
- add teststack/bin to $PATH of container user
- when test user logs in via `teststack enter`, we should set KERNEL_DIR, COMPOSER, ... -> run set-env-vars.sh ?
- improve finding ./docker vs /home/test/teststack/docker in php.sh (why cant we just use ./docker ?)
- improve mysql dockerfile: bring back timezone, cleanup steps working for all base OSes (debian & centos)
- make it easier to understand which env vars apply only to the docker version of the stack and which ones apply as well
to the CI workers. Start with PHP_VERSION, MYSQL_VERSION, NODE_VERSION
- make sure that composer cache is saved in ./docker/data/.composer from the containers (but take care about the case of
parallel runs of composer install...)
- bring composer cache to $(pwd)/docker/data/.composer when on gha - add some chown at container build and boot times?
or make it a symlink to a folder outside the code dir and make it persistent across builds - look at
https://github.com/actions/cache/blob/main/examples.md#php---composer
Also, prefer COMPOSER_CACHE_DIR in ci.yml to setting it in composer.json
- check if we can use `env:` in place of all `export` lines in the steps of ci.yml
- add .travis.yml for self-testing on Travis (either without docker use, or using ubuntu as base for containers)
- add to .gitignore the files generated during local run of teststack testing
- remove all usages of curl in favour of `wget -q -O -` (it seems not to be installed in some ubuntu versions)
- improve the output when running as gha action (see shivammatur/php for an example)
v0.y - features
- make it possible to request only parts of the setup: make them all optional (in gha action, but also outside it?)
- inception!: when in 'host' mode, make it also possible to set up a custom db version in gha, with an if (or just add an
example using an existing gha action?)
- set up 2 env vars, similar to what GHA does, for the teststack root dir and workspace root dir - in case we allow custom
setup scripts
- allow to specify extra packages to install in the test container, eg. pstotext. Also/alternatively: allow to add
extra setup scripts
- allow easy installation of LegacyBridge to test legacy extensions with eZPL 1 and 2 (eg. ezdbintegrity)
- finish:
- test: testing of legacy exts inside top-level bundle (ezworkflowengineb.)
- add some browser-based tests to the GHA ones
- enable the mysql general query log - since this is a test env, we can take the perf hit
- improve teststack runtests: on fail, dump sf and legacy error logs
- add a teststack cleanup command which removes everything: data, logs, containers, images, vendors
- docs: add other sets of example .euts.env files: minimal, with LB (bundle w. legacy ext); pure-legacy ext
- make teststack create a full config file by default instead of an empty one ? at least have an action to create it / print it
- allow project to specify a different test execution command from phpunit (or rename runtests) ?
- port from phpxmlrpc the enabling/disabling of code coverage (check differences wrt. what we do here)
- remove 'silence php warnings' from default php config; push it to consumer bundles ? (via: allow custom php configs...)
- allow project config to specify default phpunit tests directory
- document: phpunit bootstrap.php (???)
v0.z?
- allow teststack cmd to only run the containerized DB container, so that it could be used on GHA/Travis
(this will need to add a port mapping to mysql docker-compose file)
- add support for custom db ports (is there an env var for that in stock mysql container?)
- restructure Dockerfile of the 3 images we ship to make the built images as small as possible
- test using ubuntu as base image for docker builds instead of debian: all php/ubuntu versions (see which docker
images are pre-loaded on gha ubuntu 20, 22 workers)
- how to specify custom legacy configs for test setups ? (see legacy-bridge way of doing minimal config)
- do we need to run commands to install ezpl/legacy assets on setup ? (partially done for ezpl 3.3...)
- make 'll' work for 'test' user
- make teststack detect a change in CONTAINER_USER_UID dynamically on every invocation
- reintroduce hash of composer packages for autodetection of need to rerun composer
- also: if any env var has changed in test container, we should run setup again
- improve teststack: detect mysql shutdown (eg. by looking at mysql container log) instead of waiting for it to start
- in some conditions, teststack keeps waiting for ez container to finish booting, but that one is dead (bug in wait_for_bootstrap)
- make sure that both memcached and redis are started in the test container (or extra containers); also, that php exts
for those are installed
- check if we are missing a redis extension for php, as well as any php ext. required by Ibexa (see https://doc.ibexa.co/en/latest/getting_started/requirements/)
- change the names of env vars used for docker to be the same as the ones used by ezplatform3 ?
- make one test run on postgres (both on gha and on docker)
- the creation of the schema is not trivial for ezplatform 1 and 2 => internalize the schema creation sql here,
with some php-based magic used to determine which updates to run. Or just run the pg test with ezpl3 ;-)
- also: do we need to run any update sql when creating the mysql schema?
- make it easy to have many different test envs installed and possibly running in parallel:
- add a cli command for that
- test it (take care about sharing of composer cache dir)
- document it
- allow installation of custom php exts (via an env var and/or examining composer.json)
- install php-fpm
- stop installing apache by default in the test container ?
- do set up ez legacy mail transport in a way that can be easily tested (are we doing it for ez5 ?)
- test execution of tests based on other test frameworks than phpunit: ...
- test using a different Sf env than `behat`
- test usage together with https://github.com/g1a/composer-test-scenarios
- check best method for teststack installation (git vs. curl+sh)
- reduce the number of env vars needed for eZ:
- set APP_ENV and SYMFONY_ENV if unset ?
- teststack: add a check for min docker, docker-compose version (note: seems like we can use --env-file only since docker-compose 1.24)
- also: give to the user a friendlier error message if she's not in the docker group
- allow to use custom siteaccess names ?
- allow to install different mysql clients (at least for debian versions which have them)
- make installation of java in ez container optional. Also: add pstotext/pdftotext
- add more services? missing: elasticsearch
- for debian-native php versions, allow to compile by hand the latest compatible xdebug version instead of using built-in one
(esp. xdebug 3 for php >= 7.2)
- allow usage of pcov instead of xdebug for code coverage
- allow usage with ezpublish-platform, aka 5.x (as alternative to ezpublish-community)
- teststack: use green for the date in output messages
- check out integrations with snyck or dependabot
- check out docker code from ezplatform for ideas
- check out setup-php as an alternative?
- check out composer-test-scenarios too
- check out usage of https://github.com/just-containers/s6-overlay to manage services in Docker instead of entrypoint.sh
- check if there's anything worth copying from https://hub.docker.com/r/behance/docker-php/
- eg. usage of GOSS for testing the builds of the teststack
- move config file to .yml (or extras section in composer.json ?) and use php in a dedicated container to run the teststack script ?
- rename teststack actions to follow a sf-like pattern? eg. stack:build, test:run, etc... ?
v0 - alt. reality
explore possibility of rewriting this on top of GHA technology:
- shivammathur/setup-php allows to set up many php versions with extensions etc
- ramsey/composer-install should ease composer installation; it allows to install lowest deps too
- actions/checkout allows to check out code (base sw) in a subdir: this greatly removes the need for patching configs
- shogo82148/actions-setup-mysql or mirromutth/mysql-action allow to install custom mysql versions
- look at https://dev.to/sourcegraph/how-to-build-github-actions-in-php-with-minicli-and-docker-1k6m for a simpler way to
get composer onboard
- nektos/act allows to run the GHA tests in a local container!
-> check persistence of the container / shell access
- ...
- profit!