From 313f5674529a63a0d00b991ed0ddae95b66a1a42 Mon Sep 17 00:00:00 2001 From: James Kirk <james.kirk@noc.ac.uk> Date: Mon, 13 Feb 2023 16:46:25 +0000 Subject: [PATCH] refactor: closing files that have been opened feat: dockerised and composed everything up, introduced run-compose and gitlab-ci --- .gitlab-ci.yml | 8 ++++++++ docker/Dev.Dockerfile | 7 +++++++ docker/Dockerfile | 7 +++++++ docker/docker-compose-test.yaml | 15 +++++++++++++++ docker/docker-compose.yaml | 15 +++++++++++++++ generate_schema_config.py | 7 ++++++- run-compose.sh | 30 ++++++++++++++++++++++++++++++ tests/test_schemas.py | 8 ++++++++ 8 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 .gitlab-ci.yml create mode 100644 docker/Dev.Dockerfile create mode 100644 docker/Dockerfile create mode 100644 docker/docker-compose-test.yaml create mode 100644 docker/docker-compose.yaml create mode 100755 run-compose.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..1eb05f7 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,8 @@ +include: + - project: oceanids/c2/infrastructure/ci-scripts + ref: master + file: python-microservice/all.yml + +variables: + DOCKER_IMAGE_NAME: backbone-message-format + TEST_DOCKER_COMPOSE: 1 \ No newline at end of file diff --git a/docker/Dev.Dockerfile b/docker/Dev.Dockerfile new file mode 100644 index 0000000..eab5243 --- /dev/null +++ b/docker/Dev.Dockerfile @@ -0,0 +1,7 @@ +FROM python:3.9.16-alpine + +WORKDIR /app + +COPY requirements-dev.txt requirements-dev.txt + +RUN pip install -r requirements-dev.txt \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..a14c3e1 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,7 @@ +FROM python:3.9.16-alpine + +WORKDIR /app + +COPY . . + +RUN pip install -r requirements.txt \ No newline at end of file diff --git a/docker/docker-compose-test.yaml b/docker/docker-compose-test.yaml new file mode 100644 index 0000000..2461af3 --- /dev/null +++ b/docker/docker-compose-test.yaml @@ -0,0 +1,15 @@ +version: '3.8' +services: + soar_flasgger_test: + build: + context: .. + dockerfile: docker/Dev.Dockerfile + restart: unless-stopped + ports: + - "5000:5000" + container_name: soar_flasgger_test + environment: + - PYTHONDONTWRITEBYTECODE=1 + volumes: + - ../:/app + command: "python3 -m unittest tests/test_schemas.py" \ No newline at end of file diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml new file mode 100644 index 0000000..23c80c7 --- /dev/null +++ b/docker/docker-compose.yaml @@ -0,0 +1,15 @@ +version: '3.8' +services: + soar_flasgger: + build: + context: .. + dockerfile: docker/Dockerfile + restart: unless-stopped + ports: + - "5000:5000" + container_name: soar_flasgger + environment: + - FLASK_HOST=0.0.0.0 + volumes: + - ../:/app + command: "python generate_schema_config.py" \ No newline at end of file diff --git a/generate_schema_config.py b/generate_schema_config.py index 2c1c838..29b7f4d 100644 --- a/generate_schema_config.py +++ b/generate_schema_config.py @@ -8,6 +8,8 @@ from formats.acknowledgement import acknowledgement_schema from flasgger import Swagger from flask import Flask +import os + app = Flask(__name__) @@ -74,6 +76,9 @@ swagger_config = { swag = Swagger(app, config=swagger_config, merge=True) +flask_host = os.getenv( + "FLASK_HOST", "localhost" +) # Sets to whatever MQ_HOST is, or defaults to localhost if __name__ == "__main__": - app.run(debug=True) + app.run(debug=False, host=flask_host) diff --git a/run-compose.sh b/run-compose.sh new file mode 100755 index 0000000..4df4f2a --- /dev/null +++ b/run-compose.sh @@ -0,0 +1,30 @@ +#! /usr/bin/env bash + +usage() { + echo "usage: ./run-compose.sh [<rebuild>]" + echo " rebuild - will force docker-compose to rebuild the images before spinning them up." + echo " tests - run the test suite rather than the application." +} + +if [[ -z "${DATA_DIR}" ]]; then + DATA_DIR=$(pwd) +fi + +while [ -n "$1" ]; do + case $1 in + rebuild) + EXTRA_ARGS="--build" + ;; + tests) + docker-compose -f docker/docker-compose-test.yaml up --build + exit 0 + ;; + *) + usage + exit 0 + ;; + esac + shift +done + +docker-compose -f docker/docker-compose.yaml up $EXTRA_ARGS \ No newline at end of file diff --git a/tests/test_schemas.py b/tests/test_schemas.py index bf8478d..e763f47 100644 --- a/tests/test_schemas.py +++ b/tests/test_schemas.py @@ -66,6 +66,8 @@ class TestSchema(unittest.TestCase): ) ) + f.close() + def test_sample_gui_messages(self): """ Test schema - GUI Messages @@ -92,6 +94,8 @@ class TestSchema(unittest.TestCase): ) ) + f.close() + def test_sample_ecosub_messages(self): """ Test schema - Ecosub Messages @@ -146,6 +150,8 @@ class TestSchema(unittest.TestCase): format_checker=FormatChecker(), ) ) + + f.close() def test_sample_autonomy_engine_messages(self): """ @@ -237,6 +243,8 @@ class TestSchema(unittest.TestCase): ) ) + f.close() + if __name__ == "__main__": unittest.main() -- GitLab