Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
.gitlab-ci.yml 3.10 KiB
---
include:
  - 'https://gitlab.esss.lu.se/ics-infrastructure/gitlab-ci-yml/raw/master/PreCommit.gitlab-ci.yml'

.runner_tags: &runner_tags
  tags:
    - docker

variables:
  CONTAINER_TEST_IMAGE: "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME"
  CONTAINER_RELEASE_IMAGE: "$CI_REGISTRY_IMAGE:latest"
  CONTAINER_CACHE_IMAGE: "$CI_REGISTRY_IMAGE:master"
  POSTGRES_USER: ics
  POSTGRES_PASSWORD: icspwd
  POSTGRES_DB: csentry_db_test

stages:
  - check
  - build
  - test
  - analyse
  - release
  - deploy

before_script:
  - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY

build:
  <<: *runner_tags
  stage: build
  image: docker:latest
  script:
    - docker pull "$CONTAINER_CACHE_IMAGE" || true
    - docker build --pull --cache-from "$CONTAINER_CACHE_IMAGE" -t "$CONTAINER_TEST_IMAGE" .
    - docker push "$CONTAINER_TEST_IMAGE"

test:
  <<: *runner_tags
  stage: test
  image: "$CONTAINER_TEST_IMAGE"
  services:
    - postgres:10
    - redis:4.0
    - name: docker.elastic.co/elasticsearch/elasticsearch:7.3.2
      alias: elasticsearch
      command: ["bin/elasticsearch", "-Ediscovery.type=single-node"]
  before_script:
    - pip install -r requirements-dev.txt
  script:
    - pytest --junitxml=junit.xml --cov-report xml:coverage.xml --cov=app -v
  artifacts:
    paths:
      - junit.xml
      - coverage.xml
    reports:
      junit: junit.xml
    expire_in: 1 hour

analyse:
  <<: *runner_tags
  stage: analyse
  image: registry.esss.lu.se/ics-docker/sonar-scanner:3
  before_script: []
  script:
    - sonar-scanner -Dsonar.login=$SONARQUBE_TOKEN -Dsonar.projectVersion=$CI_COMMIT_REF_NAME

release-image:
  <<: *runner_tags
  stage: release
  image: docker:latest