зеркало из https://github.com/mozilla/bedrock.git
Amend all usage of docker-compose to be docker compose (#14954)
* Amend all usage of docker-compose to be docker compose This is because the ubuntu-latest GHA image no longer supports the V1 compose API, which was breaking our CI. https://github.com/actions/runner-images/issues/9692 This is a wholesale change, to ensure consistent use of the v2 syntax * Address subtle container-naming change brough in with docker compose v2 With v1 we had Selenium Grid name containers ..._selenium-hub_1, but with v2 that changed to ...-selenium-hub-1, causing the jq filter to miss when trying to extract the IP we needed. * Remove now-redundant docker-compose.yaml version key
This commit is contained in:
Родитель
6ec4adb306
Коммит
970e524098
4
Makefile
4
Makefile
|
@ -1,5 +1,5 @@
|
||||||
DC_CI = "bin/docker-compose.sh"
|
DC_CI = "bin/docker-compose.sh"
|
||||||
DC = $(shell which docker-compose)
|
DC = $(shell which docker) compose
|
||||||
DOCKER = $(shell which docker)
|
DOCKER = $(shell which docker)
|
||||||
TEST_DOMAIN = www.mozilla.org
|
TEST_DOMAIN = www.mozilla.org
|
||||||
POCKET_MODE = Pocket
|
POCKET_MODE = Pocket
|
||||||
|
@ -9,7 +9,7 @@ all: help
|
||||||
help:
|
help:
|
||||||
@echo "Please use \`make <target>' where <target> is one of"
|
@echo "Please use \`make <target>' where <target> is one of"
|
||||||
@echo " build - build docker images for dev"
|
@echo " build - build docker images for dev"
|
||||||
@echo " run - docker-compose up the entire system for dev"
|
@echo " run - 'docker compose up' the entire system for dev"
|
||||||
@echo " stop - stop all docker containers"
|
@echo " stop - stop all docker containers"
|
||||||
@echo " kill - kill all docker containers (more forceful than stop)"
|
@echo " kill - kill all docker containers (more forceful than stop)"
|
||||||
@echo " pull - pull the latest production images from Docker Hub"
|
@echo " pull - pull the latest production images from Docker Hub"
|
||||||
|
|
|
@ -6,4 +6,4 @@
|
||||||
|
|
||||||
source docker/bin/set_git_env_vars.sh
|
source docker/bin/set_git_env_vars.sh
|
||||||
|
|
||||||
docker-compose "$@"
|
docker compose "$@"
|
||||||
|
|
|
@ -18,7 +18,7 @@ docker cp "bedrock-${CI_JOB_ID}:/app/tests/results" "results-${CI_JOB_ID}"
|
||||||
docker rm "bedrock-${CI_JOB_ID}"
|
docker rm "bedrock-${CI_JOB_ID}"
|
||||||
|
|
||||||
if [ "${DRIVER}" = "Remote" ]; then
|
if [ "${DRIVER}" = "Remote" ]; then
|
||||||
docker-compose \
|
docker compose \
|
||||||
-f ./bin/integration_tests/docker_compose_for_integration_tests.yml \
|
-f ./bin/integration_tests/docker_compose_for_integration_tests.yml \
|
||||||
-p "selenium-hub-${CI_JOB_ID}" \
|
-p "selenium-hub-${CI_JOB_ID}" \
|
||||||
down --remove-orphans
|
down --remove-orphans
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
version: "3"
|
|
||||||
services:
|
services:
|
||||||
selenium-hub:
|
selenium-hub:
|
||||||
image: selenium/hub:3
|
image: selenium/hub:3
|
||||||
|
|
|
@ -18,23 +18,23 @@ then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${DRIVER}" = "Remote" ]; then
|
if [ "${DRIVER}" = "Remote" ]; then
|
||||||
docker-compose \
|
docker compose \
|
||||||
-f ./bin/integration_tests/docker_compose_for_integration_tests.yml \
|
-f ./bin/integration_tests/docker_compose_for_integration_tests.yml \
|
||||||
-p "selenium-hub-${CI_JOB_ID}" \
|
-p "selenium-hub-${CI_JOB_ID}" \
|
||||||
up -d selenium-hub
|
up -d selenium-hub
|
||||||
|
|
||||||
docker-compose \
|
docker compose \
|
||||||
-f ./bin/integration_tests/docker_compose_for_integration_tests.yml \
|
-f ./bin/integration_tests/docker_compose_for_integration_tests.yml \
|
||||||
-p "selenium-hub-${CI_JOB_ID}" \
|
-p "selenium-hub-${CI_JOB_ID}" \
|
||||||
up -d --scale ${BROWSER_NAME}=${NUM_BROWSER_NODES} ${BROWSER_NAME}
|
up -d --scale ${BROWSER_NAME}=${NUM_BROWSER_NODES} ${BROWSER_NAME}
|
||||||
|
|
||||||
SELENIUM_HOST="grid"
|
SELENIUM_HOST="grid"
|
||||||
SELENIUM_PORT=4444
|
SELENIUM_PORT=4444
|
||||||
DOCKER_LINKS=(--link selenium-hub-${CI_JOB_ID}_selenium-hub_1:grid --net selenium-hub-${CI_JOB_ID}_default)
|
DOCKER_LINKS=(--link selenium-hub-${CI_JOB_ID}-selenium-hub-1:grid --net selenium-hub-${CI_JOB_ID}_default)
|
||||||
|
|
||||||
|
|
||||||
echo -n "Waiting for Selenium Grid to get ready..."
|
echo -n "Waiting for Selenium Grid to get ready..."
|
||||||
IP=$(docker inspect selenium-hub-${CI_JOB_ID}_selenium-hub_1 | jq -r .[0].NetworkSettings.Networks[].IPAddress)
|
IP=$(docker inspect selenium-hub-${CI_JOB_ID}-selenium-hub-1 | jq -r .[0].NetworkSettings.Networks[].IPAddress)
|
||||||
set +e
|
set +e
|
||||||
SELENIUM_READY=$((curl -fs http://${IP}:4444/wd/hub/status | jq -es 'if . == [] then null else .[] | .value.ready end' > /dev/null) || echo "false")
|
SELENIUM_READY=$((curl -fs http://${IP}:4444/wd/hub/status | jq -es 'if . == [] then null else .[] | .value.ready end' > /dev/null) || echo "false")
|
||||||
while ! ${SELENIUM_READY}; do
|
while ! ${SELENIUM_READY}; do
|
||||||
|
|
|
@ -26,12 +26,12 @@ CONTAINER_NAME="bedrock-${GIT_COMMIT}"
|
||||||
rm -rf "${TMP_DIR}"
|
rm -rf "${TMP_DIR}"
|
||||||
rm -rf "${TMP_DIR_HASHED}"
|
rm -rf "${TMP_DIR_HASHED}"
|
||||||
|
|
||||||
# .env file must exist for docker-compose
|
# .env file must exist for docker compose
|
||||||
touch .env
|
touch .env
|
||||||
|
|
||||||
# have to rerun staticfiles without symlinks or we just copy broken symlinks
|
# have to rerun staticfiles without symlinks or we just copy broken symlinks
|
||||||
docker rm -f "$CONTAINER_NAME" || true
|
docker rm -f "$CONTAINER_NAME" || true
|
||||||
docker-compose run --name "$CONTAINER_NAME" release docker/bin/build_staticfiles.sh --nolink
|
docker compose run --name "$CONTAINER_NAME" release docker/bin/build_staticfiles.sh --nolink
|
||||||
docker cp "${CONTAINER_NAME}:/app/static" "${TMP_DIR}"
|
docker cp "${CONTAINER_NAME}:/app/static" "${TMP_DIR}"
|
||||||
docker rm -f "$CONTAINER_NAME"
|
docker rm -f "$CONTAINER_NAME"
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,6 @@
|
||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
# Docker-Compose does not remove the running database instace. We cannot use docker-compose
|
# Docker compose does not remove the running database instace. We cannot use docker compose
|
||||||
# rm here because we re-tagged the image while uploading to DockerHub.
|
# rm here because we re-tagged the image while uploading to DockerHub.
|
||||||
docker rm -f `echo jenkins${JOB_NAME}${BUILD_NUMBER}| sed s/_//g`_db_1
|
docker rm -f `echo jenkins${JOB_NAME}${BUILD_NUMBER}| sed s/_//g`_db_1
|
||||||
|
|
|
@ -10,4 +10,4 @@ set -exo pipefail
|
||||||
|
|
||||||
source docker/bin/set_git_env_vars.sh
|
source docker/bin/set_git_env_vars.sh
|
||||||
|
|
||||||
exec docker-compose run test-image
|
exec docker compose run test-image
|
||||||
|
|
|
@ -63,7 +63,7 @@ If you don't have or want to use Make you can call the docker and compose comman
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
$ docker-compose pull
|
$ docker compose pull
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ Then starting it all is simply
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
$ docker-compose up app assets
|
$ docker compose up app assets
|
||||||
|
|
||||||
All of this is handled by the ``Makefile`` script and called by Make if you follow the above directions.
|
All of this is handled by the ``Makefile`` script and called by Make if you follow the above directions.
|
||||||
You **DO NOT** need to do both.
|
You **DO NOT** need to do both.
|
||||||
|
@ -101,7 +101,7 @@ If you make a change to ``media/static-bundles.json``, you'll need to restart Do
|
||||||
|
|
||||||
Sometimes stopping Docker doesn't actually kill the images. To be safe, after stopping docker, run
|
Sometimes stopping Docker doesn't actually kill the images. To be safe, after stopping docker, run
|
||||||
``docker ps`` to ensure the containers were actually stopped. If they have not been stopped, you can force
|
``docker ps`` to ensure the containers were actually stopped. If they have not been stopped, you can force
|
||||||
them by running ``docker-compose kill`` to stop all containers, or ``docker kill <container_name>`` to stop
|
them by running ``docker compose kill`` to stop all containers, or ``docker kill <container_name>`` to stop
|
||||||
a single container, e.g. ``docker kill bedrock_app_1``.
|
a single container, e.g. ``docker kill bedrock_app_1``.
|
||||||
|
|
||||||
Local Installation
|
Local Installation
|
||||||
|
@ -252,23 +252,23 @@ you've broken something with a change.
|
||||||
Docker
|
Docker
|
||||||
------
|
------
|
||||||
|
|
||||||
We manage our local docker environment with docker-compose and Make. All you need to do here is run::
|
We manage our local docker environment with docker compose and Make. All you need to do here is run::
|
||||||
|
|
||||||
$ make test
|
$ make test
|
||||||
|
|
||||||
If you don't have Make you can simply run ``docker-compose run test``.
|
If you don't have Make you can simply run ``docker compose run test``.
|
||||||
|
|
||||||
If you'd like to run only a subset of the tests or only one of the test commands you can accomplish
|
If you'd like to run only a subset of the tests or only one of the test commands you can accomplish
|
||||||
that with a command like the following::
|
that with a command like the following::
|
||||||
|
|
||||||
$ docker-compose run test pytest bedrock/firefox
|
$ docker compose run test pytest bedrock/firefox
|
||||||
|
|
||||||
This example will run only the unit tests for the ``firefox`` app in bedrock. You can substitute
|
This example will run only the unit tests for the ``firefox`` app in bedrock. You can substitute
|
||||||
``pytest bedrock/firefox`` with most any shell command you'd like and it will run in the Docker
|
``pytest bedrock/firefox`` with most any shell command you'd like and it will run in the Docker
|
||||||
container and show you the output. You can also just run ``bash`` to get an interactive shell in
|
container and show you the output. You can also just run ``bash`` to get an interactive shell in
|
||||||
the container which you can then use to run any commands you'd like and inspect the file system::
|
the container which you can then use to run any commands you'd like and inspect the file system::
|
||||||
|
|
||||||
$ docker-compose run test bash
|
$ docker compose run test bash
|
||||||
|
|
||||||
Local
|
Local
|
||||||
-----
|
-----
|
||||||
|
@ -295,9 +295,9 @@ Make it run
|
||||||
Docker
|
Docker
|
||||||
------
|
------
|
||||||
|
|
||||||
You can simply run the ``make run`` script mentioned above, or use docker-compose directly::
|
You can simply run the ``make run`` script mentioned above, or use docker compose directly::
|
||||||
|
|
||||||
$ docker-compose up app assets
|
$ docker compose up app assets
|
||||||
|
|
||||||
Local
|
Local
|
||||||
-----
|
-----
|
||||||
|
|
Загрузка…
Ссылка в новой задаче