version: '2'
services:
  build:
    build: .
    volumes:
    - ./:/app
    - ./assets/deployer:/usr/local/bin/deployer
    depends_on:
    - docker
    environment:
      DOCKER_HOST: tcp://docker:2375
    command: deployer build --output .tmp/image.tar.gz

  init:
    build: .
    volumes:
      - ./:/app
      - ./assets/deployer:/usr/local/bin/deployer
    depends_on:
      - docker
    environment:
      DOCKER_HOST: tcp://docker:2375
    command: deployer init --namespace test --cluster-url https://172.18.85.125:6443 --certificate-authority ${ca_cert} --token ${token} --service-account test --docker-config "${docker_config}"

  init-with-existing:
    build: .
    volumes:
      - ./:/app
      - ./assets/deployer:/usr/local/bin/deployer
      - ./.tmp/.kube:/home/deployer/.kube
      - ./.tmp/.docker:/home/deployer/.docker
      - ./.tmp/.helm:/home/deployer/.helm
    depends_on:
      - docker
    environment:
      DOCKER_HOST: tcp://docker:2375
    command: deployer init

  init-with-existing-and-reset:
    build: .
    volumes:
      - ./:/app
      - ./assets/deployer:/usr/local/bin/deployer
      - ./.tmp/.kube:/home/deployer/.kube
      - ./.tmp/.docker:/home/deployer/.docker
      - ./.tmp/.helm:/home/deployer/.helm
    depends_on:
      - docker
    environment:
      DOCKER_HOST: tcp://docker:2375
    command: deployer init --namespace test --cluster-url https://172.18.85.125:6443 --certificate-authority ${ca_cert} --token ${token} --service-account test --docker-config "${docker_config}" --reset

  build-no-save:
    build: .
    volumes:
      - ./:/app
      - ./assets/deployer:/usr/local/bin/deployer
    depends_on:
      - docker
    environment:
      DOCKER_HOST: tcp://docker:2375
    command: deployer build

  build-custom-context:
    build: .
    volumes:
      - ./:/app
      - ./assets/deployer:/usr/local/bin/deployer
    depends_on:
      - docker
    environment:
      DOCKER_HOST: tcp://docker:2375
    command: deployer build --build-context ./custom-context --output .tmp/image.tar.gz

  build-custom-dockerfile:
    build: .
    volumes:
      - ./:/app
      - ./assets/deployer:/usr/local/bin/deployer
    depends_on:
      - docker
    environment:
      DOCKER_HOST: tcp://docker:2375
    command: deployer build --docker-file ./custom-context/Dockerfile --output .tmp/image.tar.gz

  publish:
    build: .
    volumes:
      - ./:/app
      - ./assets/deployer:/usr/local/bin/deployer
    depends_on:
      - docker
    environment:
      DOCKER_HOST: tcp://docker:2375
    command: deployer publish --input .tmp/image.tar.gz --docker-config "${docker_config}" --name exampleimage --tag latest --tag "1.0"

  deploy:
    build: .
    volumes:
      - ./:/app
      - ./assets/deployer:/usr/local/bin/deployer
    depends_on:
      - docker
    environment:
      DOCKER_HOST: tcp://docker:2375
    command: deployer deploy --namespace test --cluster-url https://172.18.85.125:6443 --certificate-authority ${ca_cert} --token ${token} --service-account test --name testdeploy --charts ./examplechart --set image.tag=stable --timeout 120

  deploy-without-ca:
    build: .
    volumes:
      - ./:/app
      - ./assets/deployer:/usr/local/bin/deployer
    depends_on:
      - docker
    environment:
      DOCKER_HOST: tcp://docker:2375
    command: deployer deploy --namespace test --cluster-url https://172.18.85.125:6443 --token ${token} --service-account test --name testdeploy --charts ./examplechart --set image.tag=stable

  undeploy:
    build: .
    volumes:
      - ./:/app
      - ./assets/deployer:/usr/local/bin/deployer
    depends_on:
      - docker
    environment:
      DOCKER_HOST: tcp://docker:2375
    command: deployer undeploy --namespace test --cluster-url https://172.18.85.125:6443 --certificate-authority ${ca_cert} --token ${token} --service-account test --name testdeploy

  add-repo:
    build: .
    volumes:
      - ./:/app
      - ./assets/deployer:/usr/local/bin/deployer
    depends_on:
      - docker
    environment:
      DOCKER_HOST: tcp://docker:2375
    command: deployer add-repo --namespace test --cluster-url https://172.18.85.125:6443 --certificate-authority ${ca_cert} --token ${token} --service-account test --name test --repo-url https://kubernetes-charts.storage.googleapis.com

  docker:
    image: docker:dind
    privileged: true