#
# This guy is awesome: https://dev.to/bzinoun/gitlab-ci-to-build-and-push-containers-to-registry-538a
#

image: morlay/buildx:607a2ce
variables:
  # DinD's vfs driver is pretty intensive; this is less so
  DOCKER_DRIVER: overlay2
  CI_HUB_USERNAME: rehashedsalt
stages:
  - build
#  - test
  - push
services:
  - docker:dind
before_script:
  - echo -n "$CI_LOGIN_PASSWORD" | docker login -u "$CI_LOGIN_USERNAME" --password-stdin
  - docker version
  - docker info
after_script:
  - docker logout hub.docker.com

# BUILD
Build:
  stage: build
  script:
    - docker pull $CI_HUB_USERNAME/$CI_PROJECT_NAME:latest || true
    - docker buildx create --use
    - >
      docker buildx build
      --pull
      --platform linux/amd64,linux/arm64
      --cache-from $CI_HUB_USERNAME/$CI_PROJECT_NAME:latest
      --tag $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
      --push
      .
    - docker images

# TEST
# TODO: Fix this
#Test_HTTP_200:
#  stage: test
#  script:
#    - apk add curl
#    - docker run -d -p 8889:80 $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
#    - sleep 10
#    - docker ps
#    - netstat -tulpn
#    - curl localhost:8889 | grep -ie '200 OK'
#    - docker kill $(docker ps -q)

# PUSH
Push_When_Tag:
  stage: push
  only:
    - tags
  script:
    - docker pull $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
    - >
      docker tag
      $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
      $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME
    - >
      docker tag
      $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
      $CI_HUB_USERNAME/$CI_PROJECT_NAME:latest
    - docker images
    - docker push $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_REF_NAME
    - docker push $CI_HUB_USERNAME/$CI_PROJECT_NAME:latest
Push_Bleeding:
  stage: push
  script:
    - docker pull $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
    - >
      docker tag
      $CI_HUB_USERNAME/$CI_PROJECT_NAME:$CI_COMMIT_SHORT_SHA
      $CI_HUB_USERNAME/$CI_PROJECT_NAME:bleeding
    - docker images
    - docker push $CI_HUB_USERNAME/$CI_PROJECT_NAME:bleeding
