diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 348f88cae4e22d702828c9d6de9f34a61442b5fe..16560e5eaed01a0772345edcfeb40fc130b60d9d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -12,10 +12,10 @@ workflow: when: never - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH variables: - DOCKER_IMAGE_TAG: ":latest" + DOCKER_IMAGE_TAG: "latest" - if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH variables: - DOCKER_IMAGE_TAG: ":$CI_COMMIT_REF_SLUG" + DOCKER_IMAGE_TAG: "$CI_COMMIT_REF_SLUG" test-code: image: python:3.10 @@ -32,34 +32,7 @@ test-code: - python manage.py migrate --settings ldvspec.settings.ci - python manage.py test --settings ldvspec.settings.ci -docker-test-build: - variables: - if: main - # Official docker image. - image: docker:20-cli - before_script: - - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY - stage: build - services: - - docker:dind - script: - - HASH=$(sha256sum ldvspec/Dockerfile.base | awk '{ print $1 }') - - > - if docker manifest inspect $CI_REGISTRY_IMAGE/base:$HASH > /dev/null; then - echo "Base image exists" - else - docker build -t "$CI_REGISTRY_IMAGE/base:$HASH" -f ldvspec/Dockerfile.base ldvspec - docker push "$CI_REGISTRY_IMAGE/base:$HASH" - fi - - echo "Build using $CI_REGISTRY_IMAGE/base:$HASH" - # Try pulling the existing image - - docker pull $CI_REGISTRY_IMAGE$DOCKER_IMAGE_TAG || true - - docker build --build-arg BASE_IMAGE="$CI_REGISTRY_IMAGE/base:$HASH" --cache-from $CI_REGISTRY_IMAGE$DOCKER_IMAGE_TAG -t "$CI_REGISTRY_IMAGE$DOCKER_IMAGE_TAG" ldvspec - - docker push $CI_REGISTRY_IMAGE$DOCKER_IMAGE_TAG - - -docker-build-master: - # Official docker image. +docker-build: image: docker:20-cli stage: build services: @@ -76,11 +49,10 @@ docker-build-master: docker push "$CI_REGISTRY_IMAGE/base:$HASH" fi - echo "Build using $CI_REGISTRY_IMAGE/base:$HASH" - - docker build --cache-from $CI_REGISTRY_IMAGE --build-arg BASE_IMAGE="$CI_REGISTRY_IMAGE/base:$HASH" --pull -t "$CI_REGISTRY_IMAGE" ldvspec - - docker push "$CI_REGISTRY_IMAGE" - only: - - main - + # Try pulling the existing image for layer reuse; || true to ignore if it does not exist + - docker pull $CI_REGISTRY_IMAGE:$DOCKER_IMAGE_TAG || true + - docker build --cache-from $CI_REGISTRY_IMAGE:$DOCKER_IMAGE_TAG --build-arg BASE_IMAGE="$CI_REGISTRY_IMAGE/base:$HASH" --pull -t "$CI_REGISTRY_IMAGE:$DOCKER_IMAGE_TAG" ldvspec + - docker push "$CI_REGISTRY_IMAGE:$DOCKER_IMAGE_TAG" integration-test: image: docker:20-cli @@ -99,9 +71,6 @@ integration-test: rules: - when: never - - - # deploy test/dev version on 'sdc-dev.astron.nl' docker-deploy-main-test: stage: deploy_to_test @@ -139,8 +108,8 @@ docker-deploy-main-test: ## deploy the docker-compose file and use it to spin up the containers - scp -O -o StrictHostKeyChecking=no ldvspec/docker/docker-compose-dev-cd.yml sdc@dop814.astron.nl:/docker_compose/ldvspec/docker-compose-dev-cd.yml - ssh -o StrictHostKeyChecking=no sdc@dop814.astron.nl "echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY" - - ssh -o StrictHostKeyChecking=no sdc@dop814.astron.nl "docker pull "$CI_REGISTRY_IMAGE"" - - ssh -o StrictHostKeyChecking=no sdc@dop814.astron.nl "docker-compose -p ldvspec -f /docker_compose/ldvspec/docker-compose-dev-cd.yml up -d" + - ssh -o StrictHostKeyChecking=no sdc@dop814.astron.nl "docker pull "$CI_REGISTRY_IMAGE:$DOCKER_IMAGE_TAG"" + - ssh -o StrictHostKeyChecking=no sdc@dop814.astron.nl "docker-compose -p ldvspec -f /docker_compose/ldvspec/docker-compose-dev-cd.yml up -d --force-recreate" - echo "Application deployed" when: manual only: @@ -183,8 +152,8 @@ docker-deploy-main-production: ## deploy the docker-compose file and use it to spin up the containers - scp -O -o StrictHostKeyChecking=no ldvspec/docker/docker-compose-production-cd.yml sdco@dop821.astron.nl:/opt/dockercompose/ldvspec/docker-compose-production-cd.yml - ssh -o StrictHostKeyChecking=no sdco@dop821.astron.nl "echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY" - - ssh -o StrictHostKeyChecking=no sdco@dop821.astron.nl "docker pull "$CI_REGISTRY_IMAGE"" - - ssh -o StrictHostKeyChecking=no sdco@dop821.astron.nl "docker-compose -p ldvspec -f /opt/dockercompose/ldvspec/docker-compose-production-cd.yml up -d" + - ssh -o StrictHostKeyChecking=no sdco@dop821.astron.nl "docker pull "$CI_REGISTRY_IMAGE:$DOCKER_IMAGE_TAG"" + - ssh -o StrictHostKeyChecking=no sdco@dop821.astron.nl "docker-compose -p ldvspec -f /opt/dockercompose/ldvspec/docker-compose-production-cd.yml up -d --force-recreate" - echo "Application deployed" when: manual only: