stages:
- test
- build

variables:
  DOCKER_REGISTRY: harbor.uio.no

# Run tests on all branches
test:
  stage: test
  image: python:3.9
  script:
    - pip install gitlint
    - gitlint --commits `git rev-list --max-parents=0 HEAD`..HEAD
    - pip install poetry
    - poetry install --no-interaction --no-ansi
    - poetry run coverage run --branch --source='.' -m unittest
    - poetry run coverage xml
    - poetry run coverage report
  artifacts:
    reports:
      cobertura: coverage.xml

# When new changes are pushed, this step will login to harbor, and run the
# update-harbor-image.sh script to build, tag and push a new docker image.
build:
  stage: build
  image: harbor.uio.no/library/docker.io-docker:dind
  services:
    - docker:dind
  script:
    - apk add --no-cache git
    - git --version
    - printf '%s' "$CI_HARBOR_TOKEN" | docker login -u "$CI_HARBOR_USERNAME" --password-stdin "$DOCKER_REGISTRY"
    - sh ./update-harbor-image.sh
    - docker logout
