stages:
  - linting
  - testing
  - build
  - staging
  - production

default:
  image: python:3.12-alpine

pre_commit:
  stage: linting
  script:
    - apk add git
    - pip install --root-user-action ignore pre-commit
    - pre-commit run -a

build_image:
  stage: build
  image: docker
  services:
    - docker
  variables:
    CONTAINER_NAME: ${CI_REGISTRY_IMAGE}/facturio
  before_script:
    - docker login ${CI_REGISTRY} -u gitlab-ci-token -p ${CI_JOB_TOKEN}
  script:
    - docker build -t ${CONTAINER_NAME}:${CI_COMMIT_REF_NAME} .
    - docker push ${CONTAINER_NAME}:${CI_COMMIT_REF_NAME}
    - |
      if [[ -n "${CI_COMMIT_TAG}" ]]; then
        docker tag ${CONTAINER_NAME}:${CI_COMMIT_REF_NAME} ${CONTAINER_NAME}:${CI_COMMIT_TAG}
        docker push ${CONTAINER_NAME}:${CI_COMMIT_TAG}
      fi