---
include:
  - remote: https://jobs.just-ci.dev/HEAD/container/image.yml

variables:
  DOCKER_EXTRA_ARGS: ""

.docker:
  stage: build
  extends: [".image:rules", ".image:name"]
  image:
    name: docker.io/docker:git
    entrypoint: [""]
  variables:
    DOCKER_HOST: tcp://docker:2375/
  services:
    - name: docker.io/docker:dind
      alias: docker
      command: ["dockerd", "-H", "tcp://0.0.0.0:2375", "--tls=false"]
  script:
    - !reference [".image:name", script]
    - |
      if [ "${IMAGE_ARCHITECTURES}" != "" ]; then
        DOCKER_EXTRA_ARGS="${DOCKER_EXTRA_ARGS} --platform ${IMAGE_ARCHITECTURES}"
        docker run --rm --pull always --quiet --privileged multiarch/qemu-user-static --reset -p yes
      fi

    - docker buildx inspect --bootstrap
    - echo "${CI_REGISTRY_PASSWORD}" | docker login ${CI_REGISTRY} -u
      ${CI_REGISTRY_USER} --password-stdin
    - docker buildx create --use
    - |
      if [ "${DOCKER_EXTRA_ARGS}" != "" ]; then
        echo "[*] Applying the extra arguments '${DOCKER_EXTRA_ARGS}'."
      fi
    - |
      if [ "${IMAGE_CACHE}" = "true" ]; then
        DOCKER_EXTRA_ARGS="${DOCKER_EXTRA_ARGS} --cache-to type=registry,ref=${IMAGE_NAME}:build-cache,mode=max"
        DOCKER_EXTRA_ARGS="${DOCKER_EXTRA_ARGS} --cache-from type=registry,ref=${IMAGE_NAME}:build-cache"
      fi
    # prettier-ignore
    - >
      docker buildx build --push
      --tag ${IMAGE_NAME}:${IMAGE_TAG}
      --tag ${IMAGE_NAME}:${IMAGE_DEV_TAG}
      -f ${IMAGE_CONTAINERFILE} ${DOCKER_EXTRA_ARGS} ${IMAGE_CONTEXT}
