include:
  - remote: https://open.greenhost.net/stackspin/stackspin/-/raw/main/.gitlab/ci_templates/helm_package.yml
  - template: 'Workflows/MergeRequest-Pipelines.gitlab-ci.yml'

stages:
  - build-project
  - build-container
  - lint-helm-chart
  - package-helm-chart
  - release-helm-chart

image: node:18-alpine

variables:
  CHART_NAME: stackspin-dashboard
  CHART_DIR: deployment/helmchart/

build-project:
  stage: build-project
  before_script: []
  script:
    - echo "Building app"
    - yarn install
    - echo "REACT_APP_API_URL=/api/v1" > .env
    - echo "EXTEND_ESLINT=true" >> .env
    - yarn build
    - mv build web-build
    - echo "Build successful"
  artifacts:
    expire_in: 1 hour
    name: web-build
    paths:
      - web-build

.kaniko-build:
  script:
    - cd ${DIRECTORY}
    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
    - export CONTAINER_TAG=${CI_COMMIT_TAG:-${CI_COMMIT_REF_SLUG}}
    - /kaniko/executor --cache=true --context ${CI_PROJECT_DIR}/${DIRECTORY} --destination ${CI_REGISTRY_IMAGE}/${KANIKO_BUILD_IMAGENAME}:${CONTAINER_TAG}

build-fontend-container:
  stage: build-container
  image:
    # We need a shell to provide the registry credentials, so we need to use the
    # kaniko debug image (https://github.com/GoogleContainerTools/kaniko#debug-image)
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  variables:
    KANIKO_BUILD_IMAGENAME: dashboard
    DIRECTORY: web-build
  before_script:
    - cp deployment/Dockerfile $DIRECTORY
    - cp deployment/nginx.conf $DIRECTORY
  extends:
    .kaniko-build

build-backend-container:
  stage: build-container
  variables:
    KANIKO_BUILD_IMAGENAME: dashboard-backend
    DIRECTORY: backend
  image:
    # We need a shell to provide the registry credentials, so we need to use the
    # kaniko debug image (https://github.com/GoogleContainerTools/kaniko#debug-image)
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  extends:
    .kaniko-build
