stages:
  - build
  - test_deploy

image: docker:20.10.8

variables:
  DOCKER_TLS_CERTDIR: "/certs"
  IMAGE_TAG_APP: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
  IMAGE_TAG_NGINX: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG-nginx

services:
  - docker:20.10.8-dind

before_script:
  - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY

build_app:
  stage: build
  script:
    - docker pull $CI_REGISTRY_IMAGE:test || true
    - docker build --cache-from $CI_REGISTRY_IMAGE:test -t $IMAGE_TAG_APP .
    - docker push $IMAGE_TAG_APP

build_nginx:
  stage: build
  when: manual
  script:
    - docker pull $CI_REGISTRY_IMAGE:test-nginx || true
    - docker build --cache-from $CI_REGISTRY_IMAGE:test-nginx -t $IMAGE_TAG_NGINX . -f Dockerfile.nginx
    - docker push $IMAGE_TAG_NGINX

deploy:
  stage: test_deploy
  when: manual
  before_script:
    - apk add --update curl && rm -rf /var/cache/apk/*
  script:
    - curl -k -X POST $DEPLOY_HOOK