apiVersion: skaffold/v4beta1
kind: Config
metadata:
  name: rules_engine

# Requires the common image for shared data models or utils.
requires:
- configs:
  - common
  path: ../common

build:
  artifacts:
  - image: rules-engine
    sync:
      infer:
      - '**/*.py'
      - '**/*.json'
    docker:
      cacheFrom:
      - rules-engine
      - rules-engine:latest

    requires:
    - image: common
      alias: COMMON_IMAGE
  googleCloudBuild: {}

# Portforwarding when running `skaffold dev` locally.
portForward:
- resourceType: service
  resourceName: rules-engine
  port: 80
  localPort: 9002 # Change this when adding other microservice.

profiles:
# Profile for building images locally.
- name: local_build
  build:
    artifacts:
    - image: rules-engine
      requires:
      - image: common
        alias: COMMON_IMAGE
      sync:
        infer:
        - '**/*.py'
        - '**/*.json'
    tagPolicy:
      gitCommit: {}
    local:
      concurrency: 0

# Profile for GKE deployment, building images via CloudBuild
- &gke-profile # YAML anchor used by "default" profile.
  name: gke
  manifests:
    # Loading kustomize base file for deployment.
    kustomize:
      paths:
      - ./kustomize/base
    # Substitute system's environment vars to properties.rendered.env
    hooks:
      before:
      - host:
          dir: ./kustomize/base
          command: ["sh", "-c",
            "envsubst < properties.env > properties.rendered.env"]
      after:
      - host:
          dir: ./kustomize/base
          command: ["sh", "-c", "rm *.rendered.env"]
  # Simple deployment using kubectl.
  deploy:
    kubectl: {}

# Profile for GKE Horizontal Pod Autoscaler.
# This profile only works with `gke` profile together.
# E.g. skaffold run -p gke,hpa
- name: gke-hpa
  manifests:
    kustomize:
      paths:
      - ./kustomize/hpa
  # Simple deployment using kubectl.
  deploy:
    kubectl: {}





# The default-deploy profile refer to gke profile above.
- <<: *gke-profile
  name: default-deploy
