diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 74bd05b2fbd3e5bf5918b7ed441e0a145cfba169..0f42010d425352c72f18b5af529a816be9e1dc22 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,7 +24,6 @@ test: deploy-sites: cache: {} stage: deploy - needs: ["test"] script: - pip install -r requirements.txt - python frontend/createStatic.py -u "https://datacatalog.fz-juelich.de/" @@ -36,13 +35,35 @@ deploy-sites: paths: - public -deploy-production: + +light-deploy-testing: + stage: deploy + # only run when master is updated, unless the pipeline was triggered via the web UI + only: + - master + except: + - tags + - web + environment: Testing + variables: + OS_AUTH_TYPE: v3applicationcredential + OS_AUTH_URL: https://hdf-cloud.fz-juelich.de:5000 + OS_IDENTITY_API_VERSION: 3 + OS_REGION_NAME: "HDFCloud" + OS_INTERFACE: public + TESTING_URL: https://zam10036.zam.kfa-juelich.de/ + TESTING_DOMAIN: zam10036.zam.kfa-juelich.de + script: + # TODO insert private key in gitlab + - ssh apiserver@$TESTING_DOMAIN 'export API_URL=https://zam10036.zam.kfa-juelich.de/ && export SERVER_DOMAIN=zam10036.zam.kfa-juelich.de && sudo /bin/bash /home/apiserver/datacatalog/deploy_scripts/deployment.sh /home/apiserver/datacatalog' + +full-deploy-production: stage: deploy - # only run when stable tag is assigned + # only run when stable tag is assigned and the pipeline is triggered in the web UI only: - tags + - web tags: [stable] - needs: ["tag_release"] environment: Production variables: OS_AUTH_TYPE: v3applicationcredential @@ -52,28 +73,30 @@ deploy-production: OS_INTERFACE: public PRODUCTION_URL: https://datacatalog.fz-juelich.de/ PRODUCTION_DOMAIN: datacatalog.fz-juelich.de + VOLUME_ID: 07a93071-5be7-4cc0-8ff3-cb34e7ed2b80 + FLOATING_IP: 134.94.199.59 script: - - echo "Doing nothing for now. This will become a production deployment." - - sed -i 's_/app/mnt/data_/app/mnt && mount /dev/vdb1 /app/mnt_g' deploy_scripts/cloudinit.yml + - echo "Starting the full production deployment." + - sed -i 's_datacatalog.fz_zam10036.zam.kfa_g' deploy_scripts/cloudinit.yml - pip install python-openstackclient - - openstack image list - # - openstack server create --flavor s1 --image 149a65b5-aeb8-499f-aaa6-ec966bd28dd6 pipeline-inst - # - reassign floating ip - # - login on the new instance pipeline-inst - # - sudo docker network create net #net is the docker internal network.. put it in a Variable? - # - sudo docker-compose up -d - # - docker build --no-cache=true --pull -f ./apiserver/Dockerfile -t api-test . #pull from $CI_REGISTRY - # - sudo docker run --name api-test-cloud --network net -e VIRTUAL_HOST="zam10028.zam.kfa-juelich.de" -e LETSENCRYPT_HOST="zam10028.zam.kfa-juelich.de" -d api-test - # - openstack server destroy pipeline-inst #old + - OLD_ID=`openstack server show testing-deployment -f value -c id` + # TODO create snapshot copy of old instance + - openstack server remove floating ip $OLD_ID $FLOATING_IP + - openstack server remove volume $OLD_ID $VOLUME_ID + - INSTANCE_ID=`openstack server create -f value -c id --prefix IMAGE_ --flavor s2 --image 149a65b5-aeb8-499f-aaa6-ec966bd28dd6 --user-data deploy_scripts/cloudinit.yml --security-group ssh --security-group www --security-group https testing-deployment` + - while [ "`openstack server show $INSTANCE_ID -c addresses -f value`" = "{}" ]; do sleep 5; done # wait until an address is available to attach the floating ip + - openstack server add floating ip $INSTANCE_ID $FLOATING_IP + - openstack server add volume $INSTANCE_ID $VOLUME_ID + - openstack server delete $OLD_ID -deploy-testing: +full-deploy-testing: stage: deploy - # only run when master is updated + # only run when master is updated and the pipeline is triggered in the web UI only: - master + - web except: - tags - needs: ["transfer_image"] environment: Testing variables: OS_AUTH_TYPE: v3applicationcredential @@ -83,20 +106,16 @@ deploy-testing: OS_INTERFACE: public TESTING_URL: https://zam10036.zam.kfa-juelich.de/ TESTING_DOMAIN: zam10036.zam.kfa-juelich.de - VOLUME_ID: 07a93071-5be7-4cc0-8ff3-cb34e7ed2b80 FLOATING_IP: 134.94.199.36 script: - - echo "Starting the testing deployment." + - echo "Starting the full testing deployment." - sed -i 's_datacatalog.fz_zam10036.zam.kfa_g' deploy_scripts/cloudinit.yml - pip install python-openstackclient - OLD_ID=`openstack server show testing-deployment -f value -c id` - # TODO create snapshot copy of old instance - openstack server remove floating ip $OLD_ID $FLOATING_IP - # NO VOLUME IN TESTING DEPLOYMENT - openstack server remove volume $OLD_ID $VOLUME_ID - INSTANCE_ID=`openstack server create -f value -c id --prefix IMAGE_ --flavor s2 --image 149a65b5-aeb8-499f-aaa6-ec966bd28dd6 --user-data deploy_scripts/cloudinit.yml --security-group ssh --security-group www --security-group https testing-deployment` - while [ "`openstack server show $INSTANCE_ID -c addresses -f value`" = "{}" ]; do sleep 5; done # wait until an address is available to attach the floating ip - openstack server add floating ip $INSTANCE_ID $FLOATING_IP - # NO VOLUME IN TESTING DEPLOYMENT - openstack server add volume $INSTANCE_ID $VOLUME_ID - openstack server delete $OLD_ID @@ -107,7 +126,6 @@ test-testing: - master except: - tags - needs: ["deploy-testing"] variables: TESTING_URL: https://zam10036.zam.kfa-juelich.de/ script: @@ -122,7 +140,6 @@ test-production: only: - tags tags: [stable] - needs: ["deploy-production"] environment: Production variables: PRODUCTION_URL: https://datacatalog.fz-juelich.de/ @@ -135,7 +152,6 @@ test-production: publishgit-do: image: python:3-slim stage: publish - needs: ["test"] only: - tags tags: [stable] @@ -152,7 +168,6 @@ publishgit-do: # This is an automatic push of the docker image into gitLab container repository transfer_image: stage: build - needs: ["test"] image: docker:latest services: - docker:dind @@ -168,7 +183,6 @@ transfer_image: tag_release: stage: publish - needs: ["transfer_image"] image: docker:latest services: - docker:dind