Cum de a organiza cererile de declanșare

  • PHP
  • git
  • implementare
  • dezvoltare Web


Ieri am dat seama că eu sunt _dela_ lor un mod absolut barbar. Utilizarea Git și BitBucket nu este o surpriză.








Datorită funcționării continue a transportorului, care produce biciclete de la aspectul meu este necesar pentru a facilita unele faze de lucru.


Chiar acum există PC-ul meu, care este proiectat pentru site-ul _ocherednoy_ și două calculatoare care pot fi numite servere. La dracu cu ea, două servere incredibil de plin - dezvoltare și serverul de producție. (Și ce domeniu de aplicare?)


Am folosit sincer de Google, într-o țară în care nu există nici un registru site-uri ilegale, și știa că mica mea problemă este rezolvată:

  • Serviciul BitBucket partea POST;
  • Unele script pentru a trage pe git dezvoltarea partea de server.


Dar aici competența mea este slabă - am decis să stăpânească testul. Mărturisesc, pentru a lăsa satul știa, dar nu a luat nici un fel de testare, de la sine. Este timpul pentru a obține mult mai bine!


Cu testele ei înșiși într-un fel voi avea grijă de, dar în cazul în care acestea ar fi _pravilno_? I? Deja pe dezvoltarea imobiliara server-side?


Și să presupunem că producția mea de biciclete a venit la lumină sub forma unui site gata pe serverul virgini. Conform modului de modă veche, prin ftp pe producție?


Este posibil să aibă rundă actualizări trage numai fișiere dintr-un depozit de la distanță care există acum?

Ie există o dorință de a face astfel de operațiuni în urma cărora fecioarelor cu serverul pot fuziona tot ce am găsit pe site-ul, ci doar o parte din ele.


Vă rugăm să rețineți că întrebările mele poate fi întrebat deloc greșit sau nu este adevărat. Nu fi supărat. - (

Am văzut cele două părți în întrebarea dumneavoastră.

Cum de a organiza deploy (de stabilire a codului deschis de lucru la server)?


În cel mai simplu caz, va aborda o gramada ssh + Git trage pe server. În acest caz, patch-uri vor fi livrate la încredințarile server care se află în magazia, dar nu au apărut încă pe server, și anume, „Numai actualiza fișierele care există acum.“ Această metodă este discutată în detaliu în răspunsurile la o altă întrebare.

Dacă doriți să automatizeze procesul, ceea ce este lăudabil, am vedea trei instrumente disponibile pentru aceasta: Capistrano. Mina (favorita mea personală) și Vlad Deployer. Toate cele trei proiecte sunt similare în natură. Principiul de funcționare este după cum urmează:
  1. Pentru a vă conecta la serverul destinație.
  2. Se toarnă actualizarea codul din depozit.
  3. Rulați instrucțiuni prescrise vă (daemon de repornire a reseta indicele, actualizați structura bazei de date, etc.).
  4. .
  5. PROFIT!

Instrumente de tranziție ușoară pentru ei - este o zi liberă, și poate fi plină de dificultăți doar din cauza noutate.

Cum de a organiza procesul de testare?


Dacă încă nu ați decis cu privire la metodologia de testare (Test Driven Development, condus Comportament de dezvoltare, dezvoltare Lenea-Driven), atunci ar trebui să înceapă să facă doar asta.







Cel mai probabil, testele vor fi efectuate pe mașina locală, atâta timp cât vă scrie codul. Utilizarea RSpec. Sunt păstrarea garda deschisă. Garda urmărește modificări în codul și declanșează un set de teste unitare, care acoperă codul modificat. Întregul proces durează nu mai mult de un minut sau două, și mai ales nu tulpina. De îndată ce am vedea testul nu a reușit, am schimbat codul de atâta timp cât acesta este verde. În timp ce câteva teste (acest lucru nu este cel mai bun semn, de altfel), lucrezi singur, alerga la nivel local înainte de a deploem nu poate fi suficient - de exemplu, pentru a verifica eliberarea cu privire la disponibilitatea de funcționalitate critică: înregistrarea, achiziționarea, crearea de posturi, etc.

La un moment dat, se poate merge pe continious integrare. Aceasta este o oportunitate de a avea o construcție stabilă la un moment dat, precum și de a decide cu privire la validitatea fiecare comite. Aceasta implică teste de integrare-server și a rula cod deploem pe ea. Cel mai probabil, nu te interesează, decât dacă lucrați într-o echipă. Dar, pentru a completa imaginea, puteți viziona se bazează pe proiecte Open Source Travis CI-cunoscute: Symfony 2 și Ruby on Rails.

astfel


Nu ați specificat ce instrumente de dezvoltare specifice pe care îl utilizați. În cazul în care un deploem mult mai ușor, selectarea instrumentelor de testare, vă recomandăm să vă concentrați asupra celor care sunt nativi cadrul dumneavoastră de bază și limba (PHP, dacă am înțeles corect) și sunt obișnuiți cu utilizatorii lor. Acest lucru vă permite să aplice rapid practica bine stabilită pentru proiectul dumneavoastră și de a înțelege totul, de fapt.

Tidy depozit cu codul, pentru utilizarea deploya și rula teste Mina de pe masina desktop local. Odată ce vă simțiți că acest lucru nu este de ajuns - vei, probabil, deja știu unde să meargă mai departe.

Nu este mai bine să utilizați un fel de tehnologie de scripting bash pentru deploya în loc de toate acestea kapistranov? avantaje:

1) bash-script este simplu și scurt. Sale rapid și ușor de a scrie. În orice kapistranah trebuie să studieze mai întâi instrumentul jumătate de zi, atunci cred cum carja poate să-l să facă ceea ce trebuie.
2) bash-script pentru a verifica cu ușurință pentru erori și lipsa nu este necesar să amiază de depanare
3) bash-script face exact ceea ce este scris în ea. Ce va face un sistem complex, scris de către o altă persoană de calificare necunoscut - nimeni nu știe
4) O soluție simplă la un complex mai bun

În plus, așa cum se vede din descrierea Mina, este extrem de dificil și instrument complex: adăugați câteva linii în fișier, este logic pentru a încărca fișierul de server schimbat o jumătate de secundă să se calmeze, dar va face un depozit pentru a stoarce ceva pentru a colecta, încărcare ... Mi-e teamă nu este propice pentru dezvoltarea rapidă.

Din nou, vă sfătuim să utilizați teste unitare. Și te sfătuiesc să utilizați teste funkitsonalnye. De ce? deoarece testele funcționale verifica dacă aplicația funcționează corect. Dacă totul este corect - acesta poate fi turnat pe Productions. O unitate de teste care trec nu garantează funcționarea corectă a aplicației. Și timpul petrecut pe ele. Întrebarea este, de ce sunt ele necesare în acest sens.

Instrumente de dezvoltare? PHP, MySQL, bicicletele lor (nr Yii).
Metode de testare? TDD. )

Foarte misto! Cu aceste întrebări peste! Mulțumesc.
Deci, în producția mai ușor în vechiul mod, nu?
Cu toate acestea, dacă anumite foldere git dezumfla dintr-o anumită ramură cu magazia la distanță specificată?

shebanoff. de fapt, bicicletele mele de diferite modele vin cu o rată destul de constantă.
Uneori, aceste evoluții se strecoare bug-uri și au nevoie de la diferite site-uri pentru a face aceleași modificări la fișierele _yadra_ bicicleta.

Din păcate, pentru a corecta un transportor produs am venit cu o alta - lansare linie paralelă. Fă-l, astfel încât, în commit de master modificările de ramură au fost făcute la fișierele kernel pe diferite site-uri clienti donatoare.

Fără a abstractizare se pare ceva de genul: este meu de micro-cadru care implementează funcționalitatea de bază a unui site simplu - am numit kernel-ul. Și toate modulele la ea, cum ar fi galerie cu imagini cu mai multe încărcări. La un site, este nevoie de un astfel de modul - celălalt nu este. Dar miezul toate la fel.

Întrebarea este astfel: cum să se actualizeze componentele principale ale site-ului (kernel-ul) și nu se urca pe fiecare site prin FTP?

Dezvolt unul, dar trebuie să mențină mai multe site-uri de fabricație mea. Lucrurile critice Trebuie să remediați. M-am gândit că acest truc cu gitom rezolva problema mea.

Există o soluție? Puteți apela la camarazii mai experimentați skaypoobschenie?