diff --git a/docker-compose/README.md b/docker-compose/README.md index 310a56a6813ee0ad2cf00165beada0383c204cf7..250a435efb526ed7dd9a9bee723f5444caeced3b 100644 --- a/docker-compose/README.md +++ b/docker-compose/README.md @@ -12,7 +12,11 @@ iteration speed. In order to achieve this the project requires properly tagged images and mechanisms for change detection. For change detection the system relies on git. Git is used to determine the -directories that have changes between the current and previous commit. +directories and files that have changes between the current and previous commit. +All image related change detection mechanisms are based on this difference. + +Using docker cache within the dind service is impractical see: +https://gitlab.com/gitlab-org/gitlab-foss/-/issues/17861 ### Types of containers and specific strategies. @@ -28,10 +32,26 @@ pulled from a local registry. Simulators, Since the source code for simulators is maintained by other teams we can not accurately determine from our repository if the simulator has changed. Instead, the images should be build by the teams their respective CI -pipelines. We would simply pull these images. +pipelines. We would simply pull these images as base images. Base images, these are detected by changes to the .env file in the -docker-compose directory. +docker-compose directory. When changed they will be downloaded from the remote +registry and uploaded to our own using matching tags. Services, these are detected by changes to the .yml file or directory of the respective service inside the docker-compose directory. + +### Setup and maintenance + +All behavioral logic to orchestrate change detection and image pushing can be +found in the sbin/tag_and_push_docker_images.sh script as well as the +.gitlab-ci.yml. The shell script relies on the fact that each .yml file in the +docker-compose directory corresponds to one image. + +### Gitlab CI phases + +The building and pushing of docker images is performed in two separate phases. +This is because certain stages will depend on the presence of the base images. +The base images will run as first + +`git diff --name-only HEAD~1..HEAD ./` \ No newline at end of file