
рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдореИрдВрдиреЗ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рдмрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ: рдкрд░реАрдХреНрд╖рдг, рд░рд┐рдкреЛрд░реНрдЯ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рддреИрдирд╛рддреАред рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдЯреНрд░реИрд╡рд┐рд╕-рд╕реА (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдбреНрд░реЛрди редio) 1 рдФрд░ 3 рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдХреЛрдИ рджреГрд╢реНрдп рдирд╣реАрдВ рд╣реИред
рдФрд░ рддреБрд░рдВрдд рдПрдХ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдпрд╛:
- рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рд╕реАрдЖрдИ рдХреА рддрд░рдл рд╕реЗ рдЪрд▓рд╛рдПрдВ;
- рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдкрд╛рд╕ рднреЗрдЬреЗрдВ;
- рдкрд░рд┐рдгрд╛рдо рдФрд░ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдкрд╛рд░реНрд╕ред
рдФрд░ рдпрд╣ рд╕рдм рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЖрд╡реЗрджрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣реБрдЖ -
coviolations.io (
рд╕рд░реНрд╡рд░ рдФрд░
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реНрд░реЛрдд), рдЕрдм рдпрд╣
- рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА рдЬреАрдереВрдм рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ;
- рдЯреНрд░реИрд╡рд┐рд╕-рд╕реАрдЖрдИ, рдбреНрд░реЛрди.рдЖрдИрдУ рдФрд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдЬреЗрдирдХрд┐рдВрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ;
- Pep8, sloccount, python unittest, pip-review рдФрд░ testem рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ;
- рд╕реНрдерд┐рддрд┐ рдкрд╛рд╕рд╛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
; - рдЯреНрд░реИрд╡рд┐рд╕-рд╕реАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреВрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ;
- рд╕рдВрдЧрдарди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХреИрд╕реЗ рдЬреБрдбрд╝реЗ?
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
.covio.yml
рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
violations: pep8: pep8 . --exclude='*migrations*' sloccount: sloccount . pip_review: pip-review py_unittest: cat python_tests.txt testem: cat testem.out
рдЬрд╣рд╛рдВ рдмрд╛рдИрдВ рдУрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдирд╛рдо рд╣реИ, рдФрд░ рджрд╛рдИрдВ рдУрд░ рдЗрд╕рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЖрджреЗрд╢ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдмрдВрдзрди рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ рдФрд░ рдПрдХ
covio
рдХреЙрд▓ рдЬреЛрдбрд╝реЗрдВред
.travis.yml
рдпрд╣ рд╣реЛрдЧрд╛:
after_script: - pip install coviolations_app - covio
рдФрд░ droner.io рдФрд░ рдЬреЗрдирдХрд┐рдиреНрд╕ рдХреЗ рд▓рд┐рдП:
pip install coviolations_app COVIO_TOKEN="token" covio
token
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреГрд╖реНрда рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдХреЛрдИ рдкрд╛рд░реНрд╕рд░ рдирд╣реАрдВ рд╣реИ?
рдЕрдЧрд░ рдХрд┐рд╕реА рдкрд╛рд░реНрд╕рд░ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдкрд╛рд░реНрд╕рд░ рд╣реА рдЕрдЬрдЧрд░ рдореЗрдВ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рд╣реИ:
from tasks.const import STATUS_SUCCESS, STATUS_FAILED from .base import library @library.register(' ') def parse_violation(data):
рдЙрдкрд▓рдмреНрдз рдкрд╛рд░реНрд╕рд░
рдЙрд▓реНрд▓рдВрдШрди рдореЗрдВ рдЭреВрда рдмреЛрд▓рддреЗ рд╣реИрдВред
рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ?

рд╕рд░реНрд╡рд░ рдкрд╛рд░реНрдЯ рдХреЛ
django рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдкреА рдХреЛ
tastypie рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛
рдЖрд░рдПрд╕реА рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рдЧрдП рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рдвреЗрд░ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рд╕рднреА рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рд╕рдВрдЪрд╛рд░
рд░реЗрдбрд┐рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдХреЛ
рдореЛрдВрдЧреЛрдбрдм рдФрд░
рдкреЛрд╕реНрдЯрдЧреНрд░реИрд╕реНрдХрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ
рдмреИрдХрдмреЛрди.рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде
рдХреЙрдлрд╝реАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдЪрд╛рд░реНрдЯ.рдЬреЗрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЪрд╛рд░реНрдЯ рддреИрдпрд╛рд░ рдХрд┐рдП
рдЬрд╛рддреЗ рд╣реИрдВ ред рдХреНрд▓рд╛рдЗрдВрдЯ рдмрд╛рдХреА рдПрдкреАрдЖрдИ рдФрд░
sockjs рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░
рдХрд░рддрд╛ рд╣реИ ред
рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдП?
рд╕реНрдерд╛рдиреАрдп рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдХреНрд▓реЛрди рдХрд░реЗрдВ, рдХрдкрдбрд╝реЗ рдФрд░ рдмреЛрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
git clone https://github.com/nvbn/coviolations_web.git pip install fabric npm install bower
рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЛ
coviolations_web/settings/dist.py
рд╕реЗ
coviolations_web/settings/local.py
рдФрд░ рднрд░реЗрдВред
Local_nvbn.py рдореЗрдВ рдореЗрд░реА рд╕реНрдерд╛рдиреАрдп рд╕реЗрдЯрд┐рдВрдЧ рд╣реИрдВ, рдореЗрдВ
local_production.py рдЙрддреНрдкрд╛рджрди рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧ рд╣реИрдВред
рдФрд░ рд╕рдм рдХреБрдЫ рдХреЗ рд╕рд╛рде рддреИрдирд╛рдд:
fab install
рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
./manage.py test violations projects tasks services app push
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдПрдХ рдЕрд▓рдЧ рдХрдВрд╕реЛрд▓ рдореЗрдВ):
./manage.py runserver ./manage.py runpush ./manage.py rqworker
рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рддреИрдирд╛рдд рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
covio
рд╕реЗ рдкрд░рд┐рдгрд╛рдо рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП
.covio.yml
рдЬреЛрдбрд╝реЗрдВ:
endpoint: http://localhost:8000/api/v1/tasks/
рдпреЛрдЬрдирд╛рдУрдВ
рдЕрдм рд╕рдВрдЧрдарди рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдЙрди рдкрд░ рдФрд░ рдХрдИ, рдХрдИ рдкрд╛рд░реНрд╕рд░реНрд╕ рдкрд░ рд╕реНрд╡рдд: рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдореИрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдХреЛрдб рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛рд╣реАрди рд╣реИред
рд╕рдВрджрд░реНрдн