From 13d79c630393e44132debe826d4e1381084af249 Mon Sep 17 00:00:00 2001 From: Pavel Kirilin <win10@list.ru> Date: Sun, 28 Jun 2020 01:43:44 +0400 Subject: [PATCH] Added CI testing. Description: - Fixed logging. - Added testing before deploy. - Fixed requirements. - Added pre-commit hooks. - Fixed Dockerfiles. Signed-off-by: Pavel Kirilin <win10@list.ru> --- .gitlab-ci.yml | 9 ++++++++ .pre-commit-config.yaml | 5 ++++ Dockerfile => Dockerfiles/Dockerfile | 6 ++--- Dockerfiles/test.Dockerfile | 23 +++++++++++++++++++ Makefile | 9 +++++++- docker-compose.test.yml | 9 ++++++++ docker-compose.yml | 4 +++- .../requirements.base.txt | 10 +++----- requirements/requirements.test.txt | 6 +++++ src/initializator.py | 1 - 10 files changed, 69 insertions(+), 13 deletions(-) rename Dockerfile => Dockerfiles/Dockerfile (63%) create mode 100644 Dockerfiles/test.Dockerfile create mode 100644 docker-compose.test.yml rename requirements.txt => requirements/requirements.base.txt (57%) create mode 100644 requirements/requirements.test.txt diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4067891..7a876b0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,5 +1,6 @@ stages: - test + - cleanup_tests - deploy test: @@ -9,6 +10,14 @@ test: script: - make test +cleanup_tests: + stage: cleanup_tests + tags: + - bots-deployer + when: always + script: + - make clean_test + deploy: stage: deploy only: ['master'] diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0ef602a..5672361 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,6 +14,11 @@ repos: hooks: - id: black language_version: python3.8 + - repo: https://github.com/IamTheFij/docker-pre-commit + rev: master + hooks: + - id: docker-compose-check + - id: hadolint - repo: https://github.com/pre-commit/pre-commit-hooks rev: v3.1.0 hooks: diff --git a/Dockerfile b/Dockerfiles/Dockerfile similarity index 63% rename from Dockerfile rename to Dockerfiles/Dockerfile index bfda752..e3ab490 100644 --- a/Dockerfile +++ b/Dockerfiles/Dockerfile @@ -1,8 +1,8 @@ -FROM python:3.7 +FROM python:3.8 # Installing requirements -COPY requirements.txt /tmp/ -RUN pip install -r /tmp/requirements.txt +COPY requirements/requirements.base.txt /tmp/ +RUN pip install -r /tmp/requirements.base.txt # Copying actuall application COPY src/ /app/src diff --git a/Dockerfiles/test.Dockerfile b/Dockerfiles/test.Dockerfile new file mode 100644 index 0000000..0374574 --- /dev/null +++ b/Dockerfiles/test.Dockerfile @@ -0,0 +1,23 @@ +FROM hadolint/hadolint:v1.18.0 as docker_linter + +FROM python:3.8 + +RUN apt-get update -y \ + && apt-get install -y --no-install-recommends \ + make=4.2.1-1.2 \ + sed=4.7-1 \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=docker_linter /bin/hadolint /bin/ +RUN hadolint -v +# Installing requirements +COPY requirements/ /reqs +RUN pip install -r /reqs/requirements.test.txt + +# Copying actuall application +COPY . /app + +WORKDIR /app + +RUN sed -i 's/hadolint/hadolint-system/g' .pre-commit-config.yaml diff --git a/Makefile b/Makefile index 6162510..80b8baa 100644 --- a/Makefile +++ b/Makefile @@ -5,4 +5,11 @@ clean_prod: docker-compose -f docker-compose.yml down test: - echo "Coming soon!" + docker-compose -f docker-compose.test.yml up --build + +clean_test: + docker-compose -f docker-compose.test.yml down -v + +_test: + pre-commit run -a + echo "Python tests coming soon..." diff --git a/docker-compose.test.yml b/docker-compose.test.yml new file mode 100644 index 0000000..68bd8b5 --- /dev/null +++ b/docker-compose.test.yml @@ -0,0 +1,9 @@ +version: '3.7' + +services: + test_bot_service: + container_name: 'bot_s3rius_san_test' + build: + dockerfile: Dockerfiles/test.Dockerfile + context: . + command: make _test diff --git a/docker-compose.yml b/docker-compose.yml index 09ab0b0..07ce292 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,7 +8,9 @@ networks: services: bot_service: container_name: 'bot_s3rius_san' - build: . + build: + dockerfile: Dockerfiles/Dockerfile + context: . env_file: - .env environment: diff --git a/requirements.txt b/requirements/requirements.base.txt similarity index 57% rename from requirements.txt rename to requirements/requirements.base.txt index c78eb40..db43cd7 100644 --- a/requirements.txt +++ b/requirements/requirements.base.txt @@ -1,9 +1,5 @@ +Flask==1.1.2 pydantic==1.5.1 -Telethon==1.14.0 -requests-async==0.6.2 pytz==2020.1 -Flask==1.1.2 -pre-commit==2.5.1 -black==19.10b0 -isort==4.3.21 -flake8==3.8.3 +requests-async==0.6.2 +Telethon==1.14.0 diff --git a/requirements/requirements.test.txt b/requirements/requirements.test.txt new file mode 100644 index 0000000..2973bde --- /dev/null +++ b/requirements/requirements.test.txt @@ -0,0 +1,6 @@ +-r requirements.base.txt +black==19.10b0 +docker-compose==1.26.0 +flake8==3.8.3 +isort==4.3.21 +pre-commit==2.5.1 diff --git a/src/initializator.py b/src/initializator.py index 85d71c7..82dc5ad 100644 --- a/src/initializator.py +++ b/src/initializator.py @@ -20,7 +20,6 @@ def setup_logging(): def get_code_from_web(token): async def waiter(): while token.value is None: - logger.debug("Waiting for token") await asyncio.sleep(1) logger.info("Token received!") return token.value -- GitLab