OpenCIAg/py-robot

View on GitHub
.gitlab-ci.yml

Summary

Maintainability
Test Coverage
stages:
  - prepare
  - test
  - dist
  - report

image: python:3.7
variables:
  PYTHONPATH: src/main/python/
  PIPENV_VENV_IN_PROJECT: "true"

cache: &python_cache
  key: venv
  paths:
    - .venv/
  policy: pull

before_script:
  - "[[ -d .venv ]] && source .venv/bin/activate"

prepare-env:
  stage: prepare
  cache:
    <<: *python_cache
    policy: pull-push
  before_script: [ ]
  script:
    - python -m pip install -U pip pipenv
    - pipenv install --dev
    - pipenv lock -r > requirements.txt
    - pipenv lock -dr > requirements-dev.txt
  artifacts:
    paths:
      - requirements.txt
      - requirements-dev.txt

verify-readme:
  stage: test
  image: node:lts-alpine
  cache:
    key: node
    paths:
      - node_modules
  before_script:
    - npm i
  script:
    - npm run test

test:
  stage: test
  script:
    - coverage run --source src/main/python -m unittest discover -s "src/test/python"
    - coverage xml
    - coverage report
  artifacts:
    paths:
      - .coverage
      - coverage.xml

dev-release:
  stage: dist
  only:
    - master
  script:
    - sed -i s'/SNAPSHOT/'"$(date +%s)"'/' setup.py
    - python setup.py sdist
    - twine upload dist/*
  artifacts:
    paths:
      - dist/

release:
  stage: dist
  only:
    - tags
  script:
    - sed -i s'/^__version__ = .*/__version__ = '\'${CI_COMMIT_REF_NAME}\''/' setup.py
    - python setup.py sdist
    - twine upload dist/*
  artifacts:
    paths:
      - dist/

code-climate-coverage:
  stage: report
  only:
    - master
  cache:
    key: code-climate
  script:
    - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
    - chmod +x ./cc-test-reporter
    - ./cc-test-reporter after-build --exit-code 0