SwanseaUniversityMedical / concept-library

Concept Library
https://conceptlibrary.saildatabank.com
GNU General Public License v3.0
8 stars 2 forks source link

feat: refactor containerisation #1744

Closed JackScanlon closed 1 month ago

JackScanlon commented 1 month ago

1. Overview

This PR simplifies our containerisation workflow, reducing our docker-compose artefacts from 4 files to 2 files; and implements several other changes to improve development workflow & deployment pipeline

1.1. Profiles

[!NOTE]
See documentation for profiles here

This is utilised to reduce the number of required compose files. Each of the available profile options specifies which containers need to be selectively activated.

1.1.1. Available Profiles

Profile name Replaces Summary
dev docker-compose.dev.yaml Base development env
live docker-compose.test.yaml Includes apache, mail, compression etc
test docker-compose.selenium-testing.yaml Testing development env

1.1.2. Profile Usage

Previously, you were required to pass the different compose filepaths as a parameter to the docker-compose command; this implementation, however, instead requires you to pass the profile as an option, e.g. --profile live.

See the following for an example of how to build and stop the dev profile:

1.2. Fragments

[!NOTE]
See documentation for fragments here

Fragments are utilised to template the web-* service in an attempt to share common configuration across the dev, live and test profiles

See the x-app, x-args and x-commands the following for implementation details:

https://github.com/SwanseaUniversityMedical/concept-library/blob/46f7fde09c6512b051b84d33e6095554975d20f0/docker/docker-compose.dev.yaml#L4-L52

2. Tasks

2.1. Refactor Workflow

2.2. Healthchecks

2.3. Compressor

2.4. Integrate supervisord

github-actions[bot] commented 1 month ago

File Coverage
All files 46% :white_check_mark:
manage.py 0% :x:
clinicalcode/admin.py 67% :white_check_mark:
clinicalcode/clinicalcode.py 0% :x:
clinicalcode/tasks.py 39% :white_check_mark:
clinicalcode/test_permissions.py 85% :white_check_mark:
clinicalcode/api/serializers.py 0% :x:
clinicalcode/api/urls.py 80% :white_check_mark:
clinicalcode/api/views/Collection.py 56% :white_check_mark:
clinicalcode/api/views/Concept.py 22% :x:
clinicalcode/api/views/DataSource.py 41% :white_check_mark:
clinicalcode/api/views/GenericEntity.py 24% :x:
clinicalcode/api/views/Ontology.py 25% :white_check_mark:
clinicalcode/api/views/Tag.py 56% :white_check_mark:
clinicalcode/api/views/Template.py 76% :white_check_mark:
clinicalcode/api/views/View.py 24% :x:
clinicalcode/context_processors/app.py 0% :x:
clinicalcode/entity_utils/api_utils.py 39% :white_check_mark:
clinicalcode/entity_utils/concept_utils.py 12% :x:
clinicalcode/entity_utils/constants.py 96% :white_check_mark:
clinicalcode/entity_utils/create_utils.py 24% :x:
clinicalcode/entity_utils/data_utils.py 0% :x:
clinicalcode/entity_utils/email_utils.py 36% :white_check_mark:
clinicalcode/entity_utils/entity_db_utils.py 14% :x:
clinicalcode/entity_utils/filter_utils.py 36% :white_check_mark:
clinicalcode/entity_utils/gen_utils.py 31% :white_check_mark:
clinicalcode/entity_utils/model_utils.py 36% :white_check_mark:
clinicalcode/entity_utils/permission_utils.py 42% :white_check_mark:
clinicalcode/entity_utils/publish_utils.py 60% :white_check_mark:
clinicalcode/entity_utils/sanitise_utils.py 47% :white_check_mark:
clinicalcode/entity_utils/search_utils.py 24% :x:
clinicalcode/entity_utils/stats_utils.py 10% :x:
clinicalcode/entity_utils/template_utils.py 46% :white_check_mark:
clinicalcode/forms/ArchiveForm.py 42% :white_check_mark:
clinicalcode/forms/ContactUsForm.py 62% :white_check_mark:
clinicalcode/forms/EntityClassForm.py 62% :white_check_mark:
clinicalcode/forms/TemplateForm.py 47% :white_check_mark:
clinicalcode/generators/graphs/constants.py 0% :x:
clinicalcode/generators/graphs/generator.py 0% :x:
clinicalcode/generators/graphs/utils.py 0% :x:
clinicalcode/management/commands/clear_sessions.py 0% :x:
clinicalcode/management/commands/constants.py 0% :x:
clinicalcode/management/commands/dag_tasks.py 0% :x:
clinicalcode/management/commands/dftm_migrate.py 0% :x:
clinicalcode/management/commands/pheno_labels.py 0% :x:
clinicalcode/middleware/brands.py 59% :white_check_mark:
clinicalcode/middleware/compression.py 81% :white_check_mark:
clinicalcode/middleware/sessions.py 87% :white_check_mark:
clinicalcode/models/Brand.py 96% :white_check_mark:
clinicalcode/models/Code.py 87% :white_check_mark:
clinicalcode/models/CodeList.py 90% :white_check_mark:
clinicalcode/models/CodingSystem.py 87% :white_check_mark:
clinicalcode/models/CodingSystemFilter.py 95% :white_check_mark:
clinicalcode/models/Component.py 97% :white_check_mark:
clinicalcode/models/Concept.py 88% :white_check_mark:
clinicalcode/models/ConceptCodeAttribute.py 94% :white_check_mark:
clinicalcode/models/ConceptReviewStatus.py 94% :white_check_mark:
clinicalcode/models/DataSource.py 93% :white_check_mark:
clinicalcode/models/EntityClass.py 94% :white_check_mark:
clinicalcode/models/GenericEntity.py 82% :white_check_mark:
clinicalcode/models/OntologyTag.py 32% :white_check_mark:
clinicalcode/models/Operator.py 80% :white_check_mark:
clinicalcode/models/Phenotype.py 80% :white_check_mark:
clinicalcode/models/PhenotypeWorkingset.py 72% :white_check_mark:
clinicalcode/models/Statistics.py 93% :white_check_mark:
clinicalcode/models/Tag.py 96% :white_check_mark:
clinicalcode/models/Template.py 83% :white_check_mark:
clinicalcode/models/WorkingSet.py 81% :white_check_mark:
clinicalcode/storage/files_manifest.py 0% :x:
clinicalcode/templatetags/breadcrumbs.py 18% :x:
clinicalcode/templatetags/cards_dropdown_render.py 38% :white_check_mark:
clinicalcode/templatetags/cl_extras.py 60% :white_check_mark:
clinicalcode/templatetags/detail_pg_renderer.py 68% :white_check_mark:
clinicalcode/templatetags/entity_publish_renderer.py 39% :white_check_mark:
clinicalcode/templatetags/entity_renderer.py 46% :white_check_mark:
clinicalcode/templatetags/svg.py 50% :white_check_mark:
clinicalcode/tests/conftest.py 98% :white_check_mark:
clinicalcode/tests/functional_tests/test_collection_components.py 84% :white_check_mark:
clinicalcode/tests/functional_tests/test_detail_components.py 83% :white_check_mark:
clinicalcode/tests/functional_tests/test_moderation_components.py 91% :white_check_mark:
clinicalcode/tests/functional_tests/test_search_filters.py 95% :white_check_mark:
clinicalcode/tests/functional_tests/test_template_versions.py 69% :white_check_mark:
clinicalcode/tests/unit_tests/test_publishing.py 93% :white_check_mark:
clinicalcode/views/Admin.py 25% :white_check_mark:
clinicalcode/views/Decline.py 43% :white_check_mark:
clinicalcode/views/DocumentationViewer.py 50% :white_check_mark:
clinicalcode/views/GenericEntity.py 39% :white_check_mark:
clinicalcode/views/Moderation.py 93% :white_check_mark:
clinicalcode/views/Profile.py 49% :white_check_mark:
clinicalcode/views/Publish.py 43% :white_check_mark:
clinicalcode/views/View.py 28% :white_check_mark:
clinicalcode/views/adminTemp.py 13% :x:
clinicalcode/views/site.py 27% :white_check_mark:
clinicalcode/views/tests/test_views.py 0% :x:
cll/celery.py 92% :white_check_mark:
cll/read_only_test_settings.py 0% :x:
cll/settings.py 87% :white_check_mark:
cll/tasks.py 0% :x:
cll/test_settings.py 95% :white_check_mark:
cll/urls.py 96% :white_check_mark:
cll/urls_brand.py 0% :x:
cll/wsgi.py 0% :x:

Minimum allowed coverage is 25%

Generated by :monkey: cobertura-action against 11bcf351f63ac89529dcbe671f5b2dff586ae254