diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8fa11737a4612be3ec73784469191880a28b7292..1c9d381f04f64acc52a22b8d0e2d949e101e6e36 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,25 +1,7 @@ -# This file is a template, and might need editing before it works on your project. -# This is a sample GitLab CI/CD configuration file that should run without any modifications. -# It demonstrates a basic 3 stage CI/CD pipeline. Instead of real tests or scripts, -# it uses echo commands to simulate the pipeline execution. -# -# A pipeline is composed of independent jobs that run scripts, grouped into stages. -# Stages run in sequential order, but jobs within stages run in parallel. -# -# For more information, see: https://docs.gitlab.com/ee/ci/yaml/index.html#stages -# -# You can copy and paste this template into a new `.gitlab-ci.yml` file. -# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword. -# -# To contribute improvements to CI/CD templates, please follow the Development guide at: -# https://docs.gitlab.com/ee/development/cicd/templates.html -# This specific template is located at: -# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Getting-Started.gitlab-ci.yml - -#default: -# tags: -# - docker -# image: python:3.10-slim-buster +default: # Set default + tags: + - docker + image: python:3.10-slim-buster stages: # List of stages for jobs, and their order of execution - build @@ -29,22 +11,27 @@ stages: # List of stages for jobs, and their order of execution build-job: # This job runs in the build stage, which runs first. stage: build script: - - echo "Compiling the code..." - - echo "Compile complete." + - 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: - - echo "Running unit tests... This will take about 60 seconds." - - sleep 60 - - echo "Code coverage is 90%" + - 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: - - echo "Linting code... This will take about 10 seconds." - - sleep 10 - - echo "No lint issues found." + - 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. diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..bb3fee8e048b956725918f8fd8df3a557cffa3e7 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +Bio +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']} )