diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 000000000..7ad85ccae --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,80 @@ +name: Django-app workflow + +on: [push] + +jobs: + tests: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.7 + + - name: Install dependencies + run: | + # обновление pip + python -m pip install --upgrade pip + # установка flake8 и его плагинов + pip install flake8 pep8-naming flake8-broken-line flake8-return flake8-isort + # установка зависимостей + pip install -r requirements.txt + + - name: Test with flake8 and django tests + run: | + # запуск проверки проекта по flake8 + python -m flake8 + # перейти в папку, содержащую manage.py — + #<корневая_папка_infra_actions>/<папка_проекта>/manage.py + cd infra_project/ + # запустить написанные разработчиком тесты + python manage.py test + +# .github/workflows/main.yml + +# Тут ваши задачи тестирования и сборки образа +# ... +# Сразу после них добавьте новую задачу: деплой приложения + build_and_push_to_docker_hub: + name: Push Docker image to Docker Hub + runs-on: ubuntu-latest + needs: tests + steps: + - name: Check out the repo + # Проверка доступности репозитория Docker Hub для workflow + uses: actions/checkout@v2 + - name: Set up Docker Buildx + # Вызов сборщика контейнеров docker + uses: docker/setup-buildx-action@v1 + - name: Login to Docker + # Запуск скрипта авторизации на Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: Push to Docker Hub + # Пуш образа в Docker Hub + uses: docker/build-push-action@v2 + with: + push: true + tags: sarymov/my_images:latest + + deploy: + runs-on: ubuntu-latest + needs: build_and_push_to_docker_hub + steps: + - name: executing remote ssh commands to deploy + uses: appleboy/ssh-action@master + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.USER }} + key: ${{ secrets.SSH_KEY }} + passphrase: ${{ secrets.PASSPHRASE }} + script: | + # Выполняет pull образа с DockerHub + sudo docker pull sarymov/my_images:latest + #остановка всех контейнеров + sudo docker stop $(sudo docker ps -a -q) + sudo docker run --rm -d -p 5000:5000 sarymov/my_images:latest diff --git a/infra_project/infra_app/tests.py b/infra_project/infra_app/tests.py index 77c89862c..4aab66f11 100644 --- a/infra_project/infra_app/tests.py +++ b/infra_project/infra_app/tests.py @@ -1,4 +1,5 @@ from http import HTTPStatus + from django.test import Client, TestCase @@ -12,7 +13,7 @@ def test_about_url_exists_at_desired_location(self): self.assertEqual(response.status_code, HTTPStatus.OK) response = self.guest_client.get('/second_page/') - self.assertEqual(response.status_code, HTTPStatus.OK) + self.assertEqual(response.status_code, HTTPStatus.NOT_FOUND) def test_page_shows_correct_content(self): """Проверка контента страниц.""" @@ -20,4 +21,4 @@ def test_page_shows_correct_content(self): self.assertContains(response, 'У меня получилось!') response = self.guest_client.get('/second_page/') - self.assertContains(response, 'А это вторая страница!') + self.assertEqual(response.status_code, HTTPStatus.NOT_FOUND) diff --git a/infra_project/infra_project/urls.py b/infra_project/infra_project/urls.py index 10c002bae..1e9393d95 100644 --- a/infra_project/infra_project/urls.py +++ b/infra_project/infra_project/urls.py @@ -1,20 +1,5 @@ -"""infra_project URL Configuration - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/2.2/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" from django.contrib import admin -from django.urls import path, include +from django.urls import include, path urlpatterns = [ path('', include('infra_app.urls', namespace='infra_app')), diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 000000000..9e61d1f17 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,12 @@ +[flake8] +ignore = + W503, + F811 +exclude = + tests/, + */migrations/, + venv/, + env/ +per-file-ignores = + */settings.py:E501 +max-complexity = 10