Blog Post

Django Workflow cu Github Travis Coverall

Dec. 11, 2015, 3:16 p.m. travis django coveralls github


Workflow Integrat pentru Django cu Github Travis CI si Coveralls

$ git remote add origin [email protected]:UserGithub/myWebsite.git
$ git push -u origin master
  • Mergem pe site-ul Travis CI pentru a activa proiectul. Dacă suntem logați cu user-ul de Github vom vedea o listă cu repo-urile existente.

  • Mergem pe site-ul Coveralls IO ne logăm și activăm link-ul github către repo-urile dorite

  • în proiectul Django folosim pip ca să instalăm modulele necesare acestei operațiuni:

pip install django-jenkins coveralls
  • va trebui să adpgam pachetele și în settings.py:
INSTALLED_APPS += ('django_jenkins',)

JENKINS_TASKS = (
    'django_jenkins.tasks.run_pylint',
    'django_jenkins.tasks.with_coverage',
    )

PROJECT_APPS = ['blogengine']
  • Adăugăm în proiectul nostru un fișier .travis.yml (cam pe acolo pe unde am salvat și .gitignore):
language: python

python:
    - "2.7"

services:
    - postgresql

env:
  global:
    - SECRET_KEY_RAZ="test§$$§%"
    - DJANGO_SETTINGS_MODULE="ionescu77Project.settings.staging"

# command to install dependencies
install:
    - pip install -r requirements/test.txt

before_script:
    - psql -c "CREATE DATABASE travisci;" -U postgres
    - cd src; python manage.py makemigrations; python manage.py migrate

# command to run tests
script:
    - coverage run --include="blogengine/*" --omit="blogengine/migrations/*" manage.py test blogengine

after_success:
    coveralls

Atenție wsgi.py trebuie sa aiba setările corecte pt ca travis/ci să își facă treaba, altfel "ie de rău". Eu uitasem în wsgi.py o variabilă setată incorect și asta dădea totul peste cap.

"27 commits later" După 27 de incercări se pare că travis-ci funcționează. A fost horror. În primul rând că local testele rulau local folosind SQLite, iar pe travis (și în test/staging) am vrut să ruleze pe PostgreSQL. Am vrut să fac un workflow de genul:

  • fac modificare local
  • testez local
  • git commit local
  • fac push pe Github
  • Travis rulează testele în configurație staging/prod pe Github repo
  • dacă e ok, fac push pe staging
  • dacă testele de acceptanță cu clientul pe staging sunt ok
  • rulează scriptul de promovare în producție

Psss, o adevărată aventură. Sunt curios cum arată rapoartele de test coverage, văd că testele acoperă 100%, se pare că sunt însă probleme la afișarea codului sursă pe coveralls (rapoartele locale sunt însă okay).

E totul varză, o să rescriu articolul acesta, dacă ai însă răbdare aruncă o privire aici: Blog Django CI sau direct in A Django Blog - Github. Update: de asemenea o destinație recomandată nu numai pentru Continuous Integration dar pentru Python în general este Fullstack Python.