`GALAXY_TEST_UID`, `GALAXY_VIRTUAL_ENV` and `GALAXY_TEST_DATABASE_TYPE`
were not assigned the default value due to using `:-` instead of `:=` .
Also clean up and fixes suggested by `shellcheck`.
- `MAINTAINER` is deprecated
- Ports for `EXPOSE` don't need a starting colon
- We use the `psycopg2-binary` wheel in
`lib/galaxy/dependencies/conditional-requirements.txt`
- Rev to new container with 18.05 dependencies pre-installed.
- Enable caching of Yarn stuffs to enable
- Redo fix for git not working in node container - was mounting /etc/passwd but that wasn't compat. with Mac OS X, setting these environment variables are.
- Rearrange startup script a bit to make it load faster (wait for Selenium right before the tests not before waiting for DB).
- Fix random error in logs related to Selenium trying to read something in /root by passing -H to set the Selenium user's home directory.
The current Dockerfile build is broken because Selenium is not compatible with the latest chromedriver it seems (and the version in galaxy/testing-base:18.01.4 isn't compatible with the latest stable Chrome - version 65). I can't get older versions of Chrome to install with the current apt source but this does at least pin the version of chromedriver.
Longer term it would be good to have the version of chrome we target to be pinned also, I hate that this Dockerfile isn't reproducible.
- Bake Selenium (chrome, chrome-wrapper, xvfb, and Selenium server) into Docker test image. (1)
- Correct usage of common_startup.sh to fetch dev wheels (don't use pip directly).
- Fix/enhance the test wrapper file to not set GALAXY_CONFIG_OVERRIDE_DATABASE_CONNECATION - this prevents integration database templating (#4887) from working with the Docker image.
- Update target Dockerfile.
1) The Docker compose setup for Selenium tests currently used by Jenkins is nice in that it uses official Selenium and Postgres Docker images - but it is problematic in that it takes more resources than the other single container Docker jobs, it doesn't cleanup as nicely, it doesn't have a pre-migrated database or pre-installed dependencies so it takes longer to run, and isn't easily exposed to developers via run_tests.sh. A more pragmatic Jenkins job based on this work should be runnable for every PR - the current variant simply takes too long and requires too many resources.
- Target dev on Github instead of stable on bitbucket for base dependencies and migrations.
- Update to Ubuntu 16.04 ahead of trying to merge in Selenium support (should be a bit slimmer without the TS requirements layer also).
- Use fancy new Node compatible with yarn.
- Fix if testing as user with GID 109 (fixes#3425).
- Fix if testing as a user with any UID or GID that already exists in the container.
- More logging to indicate the "problems" being printed to standard output in these cases are not problems.
- Fix sqlite being readonly in the container for the test user.
I don't know how this ever worked to be honest - but these changes make a lot of sense. I think there was another bug somewhere that prevented this bug from exhibiting itself.
- Remove broken CasperJS from testing Dockerfile.
- Remove multi-process mode.
Multi-process mode was difficult to maintain and the last time I did testing at scale I found docker-galaxy-stable to be much more useful and easy to use. The test framework now supports GALAXY_TEST_EXTERNAL again so it should be easy enough to rig something up with docker-compose that actually uses a best practice container for scaling tests such as those in ``test/manual``.