diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9c9fca69ad0b1fd0e71eb99bb57b5d50b92975ba..4066607a5b8db213bdca1a4d06cdbb3eee04bf77 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,9 +2,9 @@ stages: - test - build - - beta - - staging - - production + - deploy-beta + - deploy-staging + - deploy-production image: urgi/docker-browsers:latest @@ -91,20 +91,20 @@ build: # DEPLOY -.deploy-to-vm: &deploy_to_vm +.deploy-to-vm-proxmox: &deploy_to_vm_proxmox # Hidden job which serves as template for executed jobs below. # See https://docs.gitlab.com/ee/ci/yaml/#anchors retry: 2 - ## SSH initialization - before_script: + script: + ## SSH initialization - eval $(ssh-agent -s) - ssh-add <(echo "${SSH_PRIVATE_KEY}") - - ssh -o StrictHostKeyChecking=no root@${SERVER_IP} 'echo "Successfully connected on $(hostname)"' - script: + - ssh -o StrictHostKeyChecking=no ${SERVER_USER}@${SERVER_IP} 'echo "Successfully connected on $(hostname)"' # Copy jar - - scp ./$JAR_PATH root@${SERVER_IP}:/opt/bootapp/${APP_NAME}-${ENV}.jar + - scp ./backend/build/libs/${APP_NAME}.jar ${SERVER_USER}@${SERVER_IP}:/tmp/${APP_NAME}-${ENV}.jar + - ssh ${SERVER_USER}@${SERVER_IP} "sudo mv /tmp/${APP_NAME}-${ENV}.jar /opt/bootapp/${APP_NAME}-${ENV}.jar ; sudo chown -R bootapp:bootapp /opt/bootapp/" # Restarting service with the updated jar and the according Spring profiles enabled - - ssh root@${SERVER_IP} "systemctl restart bootapp@${APP_NAME}-${ENV}" + - ssh ${SERVER_USER}@${SERVER_IP} "sudo systemctl restart bootapp@${APP_NAME}-${ENV}" - eval $(ssh-agent -k) - echo "Deploy done. Application should be available at http://${SERVER_IP}:${APP_PORT}/${CONTEXT_PATH}" only: @@ -114,74 +114,95 @@ build: - frontend/**/* -deploy-to-staging: - stage: staging - variables: - ENV: staging - APP_PORT: ${STAGING_GPDS_PORT} - CONTEXT_PATH: ${STAGING_GPDS_CONTEXT_PATH} - <<: *deploy_to_vm +.deploy-to-vm-openstack: &deploy_to_vm_openstack + # Hidden job which serves as template for executed jobs below. + # See https://docs.gitlab.com/ee/ci/yaml/#anchors + retry: 2 + tags: + - openstack + script: + ## SSH initialization + - eval $(ssh-agent -s) + - ssh-add <(echo "${SSH_PRIVATE_KEY}") + - ssh -o StrictHostKeyChecking=no ${SERVER_USER_OPENSTACK}@${SERVER_IP_OPENSTACK} 'echo "Successfully connected on $(hostname)"' + # Copy jar + - scp ./backend/build/libs/${APP_NAME}.jar ${SERVER_USER_OPENSTACK}@${SERVER_IP_OPENSTACK}:/tmp/${APP_NAME}-${ENV}.jar + - ssh ${SERVER_USER_OPENSTACK}@${SERVER_IP_OPENSTACK} "sudo mv /tmp/${APP_NAME}-${ENV}.jar /opt/bootapp/${APP_NAME}-${ENV}.jar ; sudo chown -R bootapp:bootapp /opt/bootapp/" + # Restarting service with the updated jar and the according Spring profiles enabled + - ssh ${SERVER_USER_OPENSTACK}@${SERVER_IP_OPENSTACK} "sudo systemctl restart bootapp@${APP_NAME}-${ENV}" + - eval $(ssh-agent -k) + - echo "Deploy done. Application should be available at http://${SERVER_IP_OPENSTACK}:${APP_PORT}/${CONTEXT_PATH}" only: - refs: - - branches - except: - refs: - - master + changes: + - .gitlab-ci.yml + - backend/src/**/* + - frontend/**/* when: manual allow_failure: false deploy-to-beta: - stage: beta + stage: deploy-beta + extends: .deploy-to-vm-openstack variables: + APP_PORT: ${BETA_FAIDARE_PORT} ENV: beta - APP_PORT: ${BETA_GPDS_PORT} - CONTEXT_PATH: ${BETA_GPDS_CONTEXT_PATH} - <<: *deploy_to_vm + CONTEXT_PATH: faidare-beta except: refs: - master only: refs: - branches - allow_failure: false + when: always + +deploy-to-staging: + stage: deploy-staging + extends: .deploy-to-vm-openstack + variables: + APP_PORT: ${STAGING_FAIDARE_PORT} + ENV: staging + CONTEXT_PATH: faidare-staging + only: + refs: + - branches + except: + refs: + - master + when: manual deploy-to-int: - stage: production + stage: deploy-production + extends: .deploy-to-vm-proxmox variables: + APP_PORT: ${INT_FAIDARE_PORT} ENV: int - APP_PORT: ${INT_GPDS_PORT} - CONTEXT_PATH: ${INT_GPDS_CONTEXT_PATH} - <<: *deploy_to_vm + CONTEXT_PATH: faidare-int only: refs: - master when: manual - allow_failure: false - deploy-to-prod-public: - stage: production + stage: deploy-production + extends: .deploy-to-vm-proxmox variables: + APP_PORT: ${PROD_PUBLIC_FAIDARE_PORT} ENV: prod-public - APP_PORT: ${PROD_PUBLIC_GPDS_PORT} - CONTEXT_PATH: ${PROD_PUBLIC_GPDS_CONTEXT_PATH} - <<: *deploy_to_vm + CONTEXT_PATH: faidare only: refs: - master when: manual - allow_failure: false - deploy-to-prod-private: - stage: production + stage: deploy-production + extends: .deploy-to-vm-proxmox variables: + APP_PORT: ${PROD_PRIVATE_FAIDARE_PORT} ENV: prod-private - APP_PORT: ${PROD_PRIVATE_GPDS_PORT} - CONTEXT_PATH: ${PROD_PRIVATE_GPDS_CONTEXT_PATH} - <<: *deploy_to_vm + CONTEXT_PATH: faidare-private only: refs: - master when: manual - allow_failure: false + diff --git a/backend/src/main/resources/bootstrap.yml b/backend/src/main/resources/bootstrap.yml index c2bfdecd7d438b2c41be0663e17d758f487eaa0a..3be3a00c606b53b0df359c502f7a0c5d1929f417 100644 --- a/backend/src/main/resources/bootstrap.yml +++ b/backend/src/main/resources/bootstrap.yml @@ -3,3 +3,4 @@ spring: cloud: config: uri: ${SPRING_CONFIG_URI:http://localhost:8888} + # label: feat(_)configure_openstack_ci