csv2json 0.3.1

Converts CSVs into JSON documents
#########
# Reuse #
#########
variables:
  RUNNER_IMAGE: $CI_REGISTRY_IMAGE/builder:$CI_PIPELINE_ID
  ARTIFACT_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG

.buildable: &buildable
  only:
    - tags
  except:
    - branches

##########
# Stages #
##########
stages:
  - Prepare # ToDo: Make our own rust builder
  - Quality
  - Build

###########
# Prepare #
###########
Build Runner:
  stage: Prepare
  image: docker:stable
  services:
    - docker:dind
  variables:
    DOCKER_HOST: tcp://docker:2375
    DOCKER_DRIVER: overlay2
  before_script:
    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
  script:
    - docker build . -t $RUNNER_IMAGE -f .gitlab-ci/runner/Dockerfile
    - docker push $RUNNER_IMAGE

###########
# Quality #
###########
.quality: &quality
  stage: Quality
  image:  $RUNNER_IMAGE

Unit test:
  <<: *quality
  script:
    - cargo test

Lint:
  <<: *quality
  allow_failure: true
  script:
    - cargo clippy

Audit:
  <<: *quality
  allow_failure: true
  script:
    - cargo audit

Dependencies:
  <<: *quality
  allow_failure: true
  script:
    - cargo outdated

# # ToDo: Add back in once cargo is supported
#License check:
#  image:
#    name: "registry.gitlab.com/gitlab-org/security-products/license-management:$CI_SERVER_VERSION_MAJOR-$CI_SERVER_VERSION_MINOR-stable"
#    entrypoint: [""]
#  stage: Quality
#  allow_failure: true
#  script:
#    - /run.sh analyze .
#  artifacts:
#    reports:
#      license_management: gl-license-management-report.json

#########
# Build #
#########
Docker Image:
  <<: *buildable
  stage: Build
  image: docker:stable
  services:
    - docker:dind
  variables:
    DOCKER_HOST: tcp://docker:2375
    DOCKER_DRIVER: overlay2
  before_script:
    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
  script:
    - docker build . -t $ARTIFACT_IMAGE
    - docker push $ARTIFACT_IMAGE

Publish:
  <<: *buildable
  stage: Build
  image: $RUNNER_IMAGE
  variables:
    DOCKER_HOST: tcp://docker:2375
    DOCKER_DRIVER: overlay2
  before_script:
    - cargo login $CARGO_TOKEN
  script:
    - cargo publish