.limit_base_image_publishing:
    - if: $CI_PIPELINE_SOURCE == "schedule" && $CI_COMMIT_BRANCH == 'main' 
      when: always

base image:
  image: docker
  stage: setup
  tags: 
    - gitlab-org-docker
  inherit:
    default:
      - interruptible
  services:
    - docker:dind
  script:
    - >
      docker login -u "${CI_REGISTRY_USER}" -p "${CI_JOB_TOKEN}" "${CI_REGISTRY}" && 
      docker build
      -t "${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:$(grep -o '"version": "[^"]*' "${DEPLOY_DIR}/package.json" | cut -d'"' -f4)"
      -t "${CI_REGISTRY_IMAGE}/${IMAGE_NAME}:latest" "${CI_PROJECT_DIR}/${DEPLOY_DIR}" && 
      docker push "${CI_REGISTRY_IMAGE}/${IMAGE_NAME}"
  cache: {} # disable irrelevant cache for this job
  before_script: [] # do not run irrelevant before script for this job
  rules: !reference [.limit_base_image_publishing]
  parallel:
    matrix:
      - IMAGE_NAME: node-base
        DEPLOY_DIR: images/node-base
      - IMAGE_NAME: node-builder
        DEPLOY_DIR: images/node-builder
      - IMAGE_NAME: app-builder
        DEPLOY_DIR: images/app-builder

