From d2315040fdfdbd07bedd0a41d54705fb281e3383 Mon Sep 17 00:00:00 2001
From: Gregory Zaugg <gregory.zaugg@stud.unibas.ch>
Date: Wed, 10 Nov 2021 10:49:37 +0000
Subject: [PATCH] ci: implement ci pipeline

---
 .gitlab-ci.yml       | 31 +++++++++++++++++++++++++++++++
 requirements.txt     |  0
 requirements_dev.txt |  5 +++++
 setup.cfg            |  3 +++
 setup.py             | 16 ++++++++++++++++
 src/__init__.py      |  3 +++
 tests/__init__.py    |  1 +
 tests/test_dummy.py  | 10 ++++++++++
 8 files changed, 69 insertions(+)
 create mode 100644 .gitlab-ci.yml
 create mode 100644 requirements.txt
 create mode 100644 requirements_dev.txt
 create mode 100644 setup.cfg
 create mode 100644 setup.py
 create mode 100644 src/__init__.py
 create mode 100644 tests/__init__.py
 create mode 100644 tests/test_dummy.py

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..24e6cbf
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,31 @@
+image: python:3.9-slim-buster
+
+stages:
+  - qc
+  - test
+
+qc_1:
+  stage: qc
+
+  before_script:
+    - pip install -r requirements.txt
+    - pip install -r requirements_dev.txt
+    - pip install -e .
+
+  script:
+    - flake8 src/ setup.py
+    - coverage run --source src/ -m pytest
+    - coverage report --fail-under=100
+    - mypy src/
+
+test_1:
+  stage: test
+
+  before_script:
+    - pip install -r requirements.txt
+    - pip install -r requirements_dev.txt
+    - pip install -e .
+
+  script:
+    - python -m pytest
+
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..e69de29
diff --git a/requirements_dev.txt b/requirements_dev.txt
new file mode 100644
index 0000000..a382a35
--- /dev/null
+++ b/requirements_dev.txt
@@ -0,0 +1,5 @@
+flake8
+flake8-docstrings
+pytest
+mypy
+coverage
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..1d48b94
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,3 @@
+[flake8]
+max-line-length = 120
+docstring-convention = google
\ No newline at end of file
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..85e5c86
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,16 @@
+"""Setup the package."""
+
+from setuptools import setup, find_packages
+import src
+
+
+setup(
+    name='src',
+    author='Zavolan Lab, Biozentrum, University of Basel',
+    url='https://git.scicore.unibas.ch/zavolan_group/pipelines/scrna-seq-simulation',
+    license='MIT',
+    version=src.__version__,
+    install_requires=[],
+    entrypoints={},
+    packages=find_packages()
+)
diff --git a/src/__init__.py b/src/__init__.py
new file mode 100644
index 0000000..46fb593
--- /dev/null
+++ b/src/__init__.py
@@ -0,0 +1,3 @@
+"""Placeholder package."""
+
+__version__ = '0.0.0'
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..024d7a5
--- /dev/null
+++ b/tests/__init__.py
@@ -0,0 +1 @@
+"""Tests for the package src."""
diff --git a/tests/test_dummy.py b/tests/test_dummy.py
new file mode 100644
index 0000000..73a5117
--- /dev/null
+++ b/tests/test_dummy.py
@@ -0,0 +1,10 @@
+"""Placeholder test for pipeline."""
+
+import src
+import re
+
+
+def test_version():
+    """Assert that version matches semantic versioning format."""
+
+    assert re.match(r'\d\.\d\.\d', src.__version__)
-- 
GitLab