# This file is included as part of the main repository .gitlab-ci.yml file

test gcp connection:
  environment:
    name: gcp
  stage: test
  tags:
    - docker
    - kubernetes
  image: google/cloud-sdk:latest
  # don't need any artifacts for this to run
  dependencies: []
  before_script:
    - gcloud auth activate-service-account "${GEOSPHERE_DEPLOY_GCP_SA_EMAIL}" --key-file="${GEOSPHERE_DEPLOY_GCP_SA_KEY}"
    # If this produces a warning about not having permission make sure the SA
    # has the project "Viewer" role. If it still produces a warning then try
    # enabling this Cloud Resource Manager API. See admin/GCP_README.md
    # for more information.
    - gcloud config set project "${GEOSPHERE_DEPLOY_GCP_PROJECT_NAME}"
  script:
    - gcloud compute instances list
    - if [ "${GEOSPHERE_DEPLOY_GCP_CLUSTER_NAME}" != "" ]; then
        gcloud container clusters get-credentials "${GEOSPHERE_DEPLOY_GCP_CLUSTER_NAME}" --zone "${GEOSPHERE_DEPLOY_GCP_ZONE_NAME}";
        kubectl get all;
      fi

gstest deploy client:
  environment:
    name: gcp
  extends: test gcp connection
  stage: deploy Client
  before_script:
    - source ./helpers/shell_aliases.sh
    - gcloud auth activate-service-account "${GEOSPHERE_DEPLOY_GCP_SA_EMAIL}" --key-file="${GEOSPHERE_DEPLOY_GCP_SA_KEY}"
    # If this produces a warning about not having permission make sure the SA
    # has the project "Viewer" role. If it still produces a warning then try
    # enabling this Cloud Resource Manager API. See admin/GCP_README.md
    # for more information.
    - gcloud config set project "${GEOSPHERE_DEPLOY_GCP_PROJECT_NAME}"
    - gcloud container clusters get-credentials "${GEOSPHERE_DEPLOY_GCP_CLUSTER_NAME}" --zone "${GEOSPHERE_DEPLOY_GCP_ZONE_NAME}";
    - helm registry login -u ${CI_REGISTRY_USER} -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
    - helm repo add stable https://kubernetes-charts.storage.googleapis.com
    - helm repo update
  script:
    - ns="default"
    - cd geosphere-client/chart
    - source geosphere-client/cibuild.env
    # copy secret kubeconfig to the mounted (pwd) directory
    - cp $kubekorner_k3s_config .
    - kubeconfig=$(basename $kubekorner_k3s_config)
    - echo "Deploying version $docker_tag to cluster namespace $ns"
    # copy extra values files to the local directory (where helm has access via docker mount)
    - cp ../../ci_gcp/values-client.yaml .
    # namespace names are the same as domain names
    - helm upgrade -v 2 --install --kubeconfig $kubeconfig --namespace $ns -f values-client.yaml geosphere-client geosphere-client/
  dependencies:
    - get_chart_client_test
  rules:
    - if: '$CI_COMMIT_BRANCH != "gcp"'
      when: never
    - when: on_success

