diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4067891801ebc0d6f266087829e0ac992af568b0..7a876b04b374ddbfef4e0eff2875549b9645049a 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 0ef602a73624f84decdea57dcf69b24f7895e5e4..567236172b5bf286f4f526d3d2eb93424284b91f 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 bfda752ac369d6ff3d7a661192d8ac83d015696b..e3ab4905c3200c75bc95a471356dae86ca6060f5 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 0000000000000000000000000000000000000000..0374574f87ec2a85ddc24b8d1fe7477f711bcc92 --- /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 61625107adc4c1cad52b44a4d15013a51f6a4712..80b8baaaccc53d73f7e22514835e2ae4d59204af 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 0000000000000000000000000000000000000000..68bd8b5e75f6ed40eb189cbd55547ef79daf3b41 --- /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 09ab0b0909523a94d33618b3d95999af37e3ac4b..07ce292244d5e55f674c3fe2fdc74ab92687ecff 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 c78eb40ea8b83db8ac699007ed81eb2c8ecf56a0..db43cd77c8ba482f91589e784d122d9cb2e113c0 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 0000000000000000000000000000000000000000..2973bde044ef966fbb469fadd30c2cefed81b5aa --- /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 85d71c7a9f22ea2dcab21b30f30e8d2df335f2a4..82dc5adbc8a85061b1b236a62eb764cc088f7fb2 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