---
# https://github.com/containers/buildah
include:
  - remote: https://jobs.just-ci.dev/v5.5.0-beta.1/container/image.yml

variables:
  BUILDAH_EXTRA_ARGS: "" # https://github.com/containers/buildah/blob/main/docs/buildah-build.1.md

.buildah:
  stage: build
  extends: .container:rules
  image: quay.io/buildah/stable:latest
  script:
    - echo "[*] Building and pushing '${IMAGE_CONTAINERFILE}' in context
      '${IMAGE_CONTEXT}' to '${IMAGE_NAME}:${IMAGE_DEV_TAG}' and
      '${IMAGE_NAME}:${IMAGE_TAG}'."
    - if [ "${BUILDAH_EXTRA_ARGS}" != "" ]; then echo "[*] Applying the extra
      arguments '${BUILDAH_EXTRA_ARGS}'."; fi
    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(echo -n
      ${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} | base64)\"}}}" >
      /tmp/auth.json
    - buildah build --authfile /tmp/auth.json -f ${IMAGE_CONTAINERFILE}
      --tag=${IMAGE_NAME}:${IMAGE_DEV_TAG} --tag=${IMAGE_NAME}:${IMAGE_TAG}
      --layers=${IMAGE_CACHE} ${BUILDAH_EXTRA_ARGS}
    - |
      for IMAGE in "${IMAGE_NAME}:${IMAGE_TAG}" "${IMAGE_NAME}:${IMAGE_DEV_TAG}"; do
        buildah push --authfile /tmp/auth.json ${IMAGE}
      done

# default for polyrepos
buildah:
  extends: .buildah

# monorepos: user should extend this hidden job (one job for each container)
.buildah:monorepo:
  extends: .buildah
  variables:
    CONTEXT_PATH: changeme
    IMAGE_NAME: ${CI_REGISTRY_IMAGE}/${CONTEXT_PATH}
    IMAGE_CONTEXT: ${CI_PROJECT_DIR}/${CONTEXT_PATH}
    IMAGE_CONTAINERFILE: ${CI_PROJECT_DIR}/${CONTEXT_PATH}/Dockerfile
