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
- Adaugam un repo remote catre Github:
$ 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.