Skip to content
This repository was archived by the owner on Jun 27, 2023. It is now read-only.

HenriqueCCdA/quizDevPro-v2

Repository files navigation

🐍 QuizDevPro-v2 🐍

Updates codecov Python application

Nesse repositorio temos o projeto desenvolvido no BootCamp Dev Pro da PythonPro. O objetivo desse projeto é desenvolver um redutor de url. O link para o deploy da aplicação no Heroku pode ser encontrada no link abaixo:

🔥🔥🔥https://quizdevprov2.herokuapp.com/🔥🔥🔥

Principais tecnologias utilizadas:

Necessidade Tecnologias
Framework backEnd Django
CI Github Actions
CD Heroku
Banco de dados PostgresSQL
Gestão de dependecias pip-tools
Testes Pytest
Relatorio de Erros Sentry
Servidor de arquivo estaticos Whitenose
WSGI Gunicorn

Passos desensolvidos durante o projeto

1) Configuração do projeto 🛠

  • Criando o arquivo .gitignore

  • criar o ambiente virtual:

    python -m venv .venv
  • instalando o gerenciador de dependecias

    python -m pip install pip-tools
  • Instalando as dependencias do projeto:

    django
    dj-database-url
    python-decouple
    ipython
    django-extensions 
    psycopg2-binary # opcional
    sentry-sdk
    gunicorn
    whitenoise
  • Instalando as dependencias de desenvolvimento:

    model-bakery
    flake8
    pytest-django
    pytest-cov
    codecov
    django-debug-toolbar
  • gerando e instalando as dependecias de desenvolmineto

    pip-compile requirements.in
    pip install -r requirements.txt
    pip-compile requirements-dev.in
    pip install -r requirements-dev.txt
    
  • Configurando o flake8 através do arquivo .flake8

    [flake8]
    max-line-length = 120
    exclude=.venv
  • Inicializando o projeto Django

    pipenv shell
    django-admin.exe startproject quiz .

    Para testar pode-se rodar o servidor através de:

    python manage.py runserver
  • Criando o arquivo local .env e arquivo contrib/env-sample

    DEBUG=FALSE
    SECRET_KEY=Defina sua chave secreta aqui
    ALLOWED_HOSTS=
    INTERNAL_IPS=
    SENTRY_DSN=
    DATABASE_URL=postgres://postgres:postgres@localhost/testedb
  • Configurando o PyUp pelo arquivo .pyup.yml

    schedule: ''
    update: false
  • Configura o codecov pelo arquivo .codecov.yml

    coverage:
      status:
        project:
          default:
            # basic
            target: 0%
        patch:
          default:
            # basic
            target: 0%
  • Configurando o pytest-django

    criar o arquivo pytest.in

    [pytest]
    DJANGO_SETTINGS_MODULE = devpro.settings

    Rodando os testes.

    python -m pytest
  • Configurando o CI.

    Link para o GitHub Actions file

  • Criando o usuario costumizado:

    O código base foi retirado da classe AbstracticUser e UserManager encontrado no módulo django.contib.auth.models.py. Criar a varialvel no settings.py

    AUTH_USER_MODEL='quiz.encutador'

    Para testa posse usar o makemigrations

    python manage.py makemigrations
  • Instalando o ipython e django-extensions

    INSTALLED_APPS = [
    ... 
    'django_extensions'    
    ]
  • Instalando django debug toolbar

    Precisa da tabela de usuarios. Por isso tem que se feita depois do migrate

    Adicionar o código abaixo no arquivo settings.py

    INTERNAL_IPS = config('INTERNAL_IPS', cast=Csv(), default=None)
    
    if DEBUG:
        INSTALLED_APPS.append('debug_toolbar')
        MIDDLEWARE.insert(0, 'debug_toolbar.middleware.DebugToolbarMiddleware')

    Adicionar o codigo abaixo no arquivo url.py do projeto

    if settings.DEBUG:
    import debug_toolbar
    urlpatterns.append(path('__debug__/', include(debug_toolbar.urls)))
  • Configurando a coleta dos arquivos estáticos:

    STATIC_ROOT = BASE_DIR / 'staticfiles/'
  • Servindo os arquivos estaticos com o whitenose:

    pipenv install whitenose
    MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
    # ...
     ]
  • Instalando o sentry:

    Configurando o SENTRY_DSN no heroku:

    heroku config:set SENTRY_DSN="https://asdasdasdsad"
  • Criar a aplicação base

    cd devpro
    python ..\manage.py startapp base

2) Deploy no heroku 🛠

  • Criando o aquivo Procfile:

    release: python manage.py migrate --noinput
    web: gunicorn devpro.wsgi --log-file -
  • Criando apps pelo heroku-cli:

    heroku apps:create nomeapp

    Configuração para testar o deploy inicial sem coleta de arquivos estáticos

    heroku config:set DISABLE_COLLECTSTATIC=1
  • Testando do deploy no heroku:

    git push heroku branch_local:master
  • Configuração para o Deploy automatico é feita no site.

  • Chave gerando a chave secreta para heroku:

    >>>from django.core.management.utils import get_random_secret_key
    >>>get_random_secret_key()
  • Configurando as variaveis no heroku:

    heroku config:set DEBUG=False
    heroku config:set SECRET_KEY="chave secreta de verdade"

3) Modelo de Dados Final 🛠

Modelo

About

🐉 Projeto desenvolvido no BootCamp Dev Pro do python pro www.python.pro.br.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors