Newer
Older
# don't create a pipeline if its a commit pipeline, on a branch and that branch has open merge requests.
- if: $CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
when: never
- if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH
variables:
- if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
variables:
test-code:
image: python:3.10
stage: test
services:
- postgres:13.8
variables:
POSTGRES_DB: ldv-spec-db
POSTGRES_USER: postgres
POSTGRES_PASSWORD: "atdb123"
script:
- cd ldvspec
- pip install -r requirements/dev.txt
- python manage.py migrate --settings ldvspec.settings.ci
- python manage.py test --settings ldvspec.settings.ci
stage: build
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
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 for layer reuse; || true to ignore if it does not exist
#- 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 build --pull -t "$CI_REGISTRY_IMAGE:$DOCKER_IMAGE_TAG" ldvspec
- docker push "$CI_REGISTRY_IMAGE:$DOCKER_IMAGE_TAG"
integration-test:
image: docker:20-cli
services:
- docker:20-dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
stage: integration

Fanna Lautenbach
committed
tags:
- "sdc-dev"
script:
- cd integration
# TODO: cache the integration image
- docker compose build
- docker compose up -d atdb-backend ldv-specification-backend
artifacts:
paths:
- /workdir/output.xml
- /workdir/log.html
- /workdir/report.html
expire_in: 1 week

Fanna Lautenbach
committed
allow_failure: false

Fanna Lautenbach
committed
- when: on_success
environment:
name: test
url: https://sdc-dev.astron.nl/ldvspec/
##
## Install ssh-agent if not already installed, it is required by Docker.
## (change apt-get to yum if you use an RPM-based image)
##
- 'command -v ssh-agent >/dev/null || ( apt-get update && apt-get install openssh-client rsync )'
##
## Run ssh-agent (inside the build environment)
##
##
## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
## We're using tr to fix line endings which makes ed25519 keys work
## without extra base64 encoding.
## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
##
##
## Create the SSH directory and give it the right permissions
##
- echo "$SSH_PRIVATE_KEY_USER_SDC" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan dop814.astron.nl >> ~/.ssh/known_hosts
- ssh-keyscan sdc-dev.astron.nl >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
script:
## 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
- scp -O -o StrictHostKeyChecking=no ldvspec/docker/resources/prometheus-dev.yml sdc@dop814.astron.nl:/docker_compose/ldvspec/prometheus-dev.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:$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"
- ssh -o StrictHostKeyChecking=no sdc@dop814.astron.nl "docker exec ldv-specification python manage.py prefill_cache"
environment:
name: production
url: https://sdc.astron.nl/ldvspec/
##
## Install ssh-agent if not already installed, it is required by Docker.
## (change apt-get to yum if you use an RPM-based image)
##
- 'command -v ssh-agent >/dev/null || ( apt-get update && apt-get install openssh-client rsync )'
##
## Run ssh-agent (inside the build environment)
##
##
## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
## We're using tr to fix line endings which makes ed25519 keys work
## without extra base64 encoding.
## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
##
##
## Create the SSH directory and give it the right permissions
##
- echo "$SSH_PRIVATE_KEY_USER_SDC" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan dop821.astron.nl >> ~/.ssh/known_hosts
- ssh-keyscan sdc.astron.nl >> ~/.ssh/known_hosts
## 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
- scp -O -o StrictHostKeyChecking=no ldvspec/docker/resources/prometheus-prod.yml sdc@dop814.astron.nl:/docker_compose/ldvspec/prometheus-prod.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:$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"
- ssh -o StrictHostKeyChecking=no sdco@dop821.astron.nl "docker exec ldv-specification python manage.py prefill_cache"