diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..1c9d381f04f64acc52a22b8d0e2d949e101e6e36
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,41 @@
+default:         # Set default
+  tags:
+    - docker
+  image: python:3.10-slim-buster
+
+stages:          # List of stages for jobs, and their order of execution
+  - build
+  - test
+  - deploy
+
+build-job:       # This job runs in the build stage, which runs first.
+  stage: build
+  script:
+    - pip install -r requirements.txt
+    - pip install -r requirements-dev.txt
+    - pip install -e .
+
+unit-test-job:   # This job runs in the test stage.
+  stage: test    # It only starts when the job in the build stage completes successfully.
+  script:
+    - pip install -r requirements.txt
+    - pip install -r requirements-dev.txt
+    - pip install -e .
+    - coverage run --source readsequencer -m pytest
+    - coverage report -m
+
+lint-test-job:   # This job also runs in the test stage.
+  stage: test    # It can run at the same time as unit-test-job (in parallel).
+  script:
+    - pip install -r requirements.txt
+    - pip install -r requirements-dev.txt
+    - pip install -e .
+    #- flake8 --docstring-convention google readsequencer/ tests/
+    #- pylint readsequencer/ tests/
+
+deploy-job:      # This job runs in the deploy stage.
+  stage: deploy  # It only runs when *both* jobs in the test stage complete successfully.
+  environment: production
+  script:
+    - echo "Deploying application..."
+    - echo "Application successfully deployed."
diff --git a/requirements.txt b/requirements.txt
index d2abc8c3e9daa5c6edf8da94b96b1135d3259e78..bb3fee8e048b956725918f8fd8df3a557cffa3e7 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,2 @@
-argparse
-logging
-random
-collections.abc
 Bio
-Bio.Seq
-Bio.SeqRecord
\ No newline at end of file
+argparse
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 39b68b402d8f77d09a6446ace93303ab86598825..8a94d0d97f65a2f1a6dd9f9ce80635f5454f7fca 100644
--- a/setup.py
+++ b/setup.py
@@ -1,4 +1,8 @@
 from setuptools import setup, find_packages
+from pathlib import Path
+project_root_dir = Path(__file__).parent.resolve()
+with open(project_root_dir / "requirements.txt", "r", encoding="utf-8") as _file:
+    INSTALL_REQUIRES = _file.read().splitlines()
 
 setup(
     name='readsequencer',
@@ -9,6 +13,6 @@ setup(
     author_email='christoph.harmel@unibas.ch',
     description='Simulates sequencing with a specified read length from sequences specified by a FASTA file.',
     packages=find_packages(),
-    install_requires=['Bio','argparse'],
+    install_requires=INSTALL_REQUIRES,
     entry_points={'console_scripts': ['readsequencer=readsequencer.cli:main']}
 )