variables:
  DOCKER_HOST: "tcp://docker-dind.gitlab-suma:2375"
  DOCKER_BUILD_IMAGE: docker:20.10.15
  DOCKER_IMAGE_NAME: suggestible
  DOCKER_TAG_NAME: $CI_COMMIT_SHA
  HELM_RELEASE_NAME: $CI_COMMIT_BRANCH
  KUBERNETES_NAMESPACE: suggestible
  KUBERNETES_DEPLOY_IMAGE: alpine/k8s:1.24.4

stages:
  - build
  - deploy

build:
  stage: build
  image: ${DOCKER_BUILD_IMAGE}
  before_script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  script:
    - docker build --network=host -t ${CI_REGISTRY_IMAGE}/${DOCKER_IMAGE_NAME}:${DOCKER_TAG_NAME} -f ./Dockerfile .
    - docker push ${CI_REGISTRY_IMAGE}/${DOCKER_IMAGE_NAME}:${DOCKER_TAG_NAME}
  after_script:
    - docker logout $CI_REGISTRY
  only:
    - main


deploy:
  stage: deploy
  image: ${KUBERNETES_DEPLOY_IMAGE}
  before_script:
    - kubectl config use-context open-source/suggestible:gitlab-agent
  script: |
    helm -n ${KUBERNETES_NAMESPACE} upgrade --install ${HELM_RELEASE_NAME} chart/ \
      --set image.repository=${CI_REGISTRY_IMAGE}/${DOCKER_IMAGE_NAME} \
      --set image.tag=${DOCKER_TAG_NAME} \
      --set namespace=${KUBERNETES_NAMESPACE}
  only:
    - main