Aceasta este a doua parte a seriei sponsorizate Codeship, integrarea continuă și serviciul de livrare securizat, bazat pe nor. Dacă ai pierdut prima parte, poți să te întorci și citiți-o aici.
Codeship este un serviciu de livrare continuă găzduit, care se concentrează pe viteză, fiabilitate și simplitate. În acest tutorial, voi revedea elementele de bază ale codului de la partea întâi și apoi voi trece prin implementarea codului.
Mai întâi, vă voi arăta cum să folosiți Codeship pentru a vă deplasa la AWS CodeDeploy. Apoi, vom explora noul Codeship ParallelCI, care accelerează testele și se construiește delegând sarcini în paralel cu diferite mașini virtuale. Voi introduce, de asemenea, API-ul Codeship, util dacă doriți mai mult control automat asupra serviciilor Codeship.
Să începem cu o analiză a ceea ce face Codeshipul.
Cu Codeship, configurați serviciul pentru a construi, testa și a implementa aplicația de la managerul de cod sursă pe platformele de staționare și de producție alese de dvs. Serviciul oferă o varietate de opțiuni de configurare puternice. În prezent, Codeship este integrat cu managerii de cod sursă GitHub și Bitbucket. Suportă o varietate de limbi de programare (Ruby on Rails, Node.js, PHP, Java, Go, Dart etc.) și platforme de implementare (Amazon Web Services, Heroku, Google App Engine etc.)
Practica integrării continue implică testarea automată repetată și fuzionarea codurilor cu notificările pentru a avertiza dezvoltatorii la probleme în codul lor în timp real. Codurile combină acest lucru cu practica livrării continue, care prevede implementarea regulată a codului odată ce schimbările au trecut teste automate.
În esență, atunci când vă împingeți codul la GitHub, Codeship reconstruiește aplicația dvs. pe serverele securizate și rulează testele automate. Dacă testele nu reușesc, vă informează echipa de dezvoltare prin e-mail sau integrarea cu servicii populare, cum ar fi Slack, HipChat etc. Dacă testele dvs. trec, Codeship urmează linia dvs. definită pentru a muta codul pe servere de staționare sau de producție, după cum se specifică.
Lucrul cu un serviciu cum ar fi Codeship poate reduce la minimum impactul cauzat de bug-uri, accelerează detectarea acestora și face echipa mai confortabilă și mai competentă în a-ți aduce îmbunătățiri regulate incrementale pe platforma dvs. - sperăm că vă veți îmbunătăți reacția clienților și a pieței dvs..
Codurile vă ajută echipa să scrie și să implementeze codul cu încredere sporită.
Recent, Codeship a anunțat o nouă caracteristică interesantă pentru a-ți grăbi testele. Se numește ParallelCI.
ParallelCI vă permite să vă împărțiți comenzile de test pe mai multe mașini virtuale (VM) pentru a vă grăbi timpul de construire. Prin difuzarea testelor în paralel, Codeship mărește productivitatea echipei dvs. cu ajutorul unor construcții mai rapide. Puteți utiliza ParallelCI pentru a vă configura proiectul cu până la zece conducte paralele pentru a obține o creștere a vitezei de 10 ori pentru suita de testare.
Puteți citi studii de caz de la clienții Codeship Bannerman și LendingCrowd, care au redus timpii de testare cu 30% și respectiv 50%.
Doar ca un memento, eu particip la discuțiile de mai jos. Dacă aveți o sugestie de întrebare sau subiect, vă rugăm să postați un comentariu de mai jos. Puteți să mă contactați și pe Twitter @reifman sau să mă trimiteți direct prin e-mail.
Acum, să începem să explorăm mai detaliat caracteristicile de implementare ale programului Codeship.
Alegeți ce face Codeship cu codul dvs. după ce testele dvs. trec. De exemplu, este posibil să actualizați serverul de așteptare pentru teste suplimentare sau, probabil, să răsfoiți totul pe serverele dvs. de producție. Codurile vă permit să definiți conducte sofisticate pentru testare și implementare.
Apropo, Codeship oferă de asemenea această carte electronică gratuită și foarte informativă: Eficiența în fluxurile de lucru pentru dezvoltare. Puteți să o verificați împreună cu blogul Codeship, care vă ține la curent cu noile evoluții și cele mai bune practici.
Presupun că ați urmat primul nostru tutorial și ne-am înscris și am început să folosim Codeship.
Dacă vizitați jurnalul de construire al proiectului, veți vedea o listă cu rezultatele recente. Faceți clic pe verde Succes buton.
Aceasta va aduce detaliile rezultatelor construirii și Construiți opțiunile bara laterală.
Iată meniul de configurare a opțiunilor. Click pe Examinați setările de testare:
Iată ce veți vedea Setările proiectului bara laterală din stânga, unde găsim opțiunile de implementare de care avem nevoie.
Iată o vizualizare detaliată a meniului Setări proiect. Click pe Implementare:
Codeship oferă integrare gata de implementare cu multe soluții populare de găzduire, inclusiv Google AppEngine, Amazon Web Services CodeDeploy, Heroku, Motor Yard, Nodejitsu și multe altele. Codeship este partenerul oficial al AWS și CodeDeploy.
Codeship oferă o serie de tutoriale pentru diferite platforme și o gamă largă de documente pentru opțiunile de implementare continuă.
Voi trece prin două exemple. Mai intai, voi implementa vechiul meu PHP bazat pe Yii2 Framework construit in AWS cu CodeDeploy. Apoi, voi construi proiectul Ruby Discourse folosind ParallelCI pentru a-mi grăbi timpul de construire.
În prima parte, am folosit Codeship pentru a rula teste automate pe o furcă a Yii2 Framework bazate pe PHP. Acum, să configurați Codeship pentru a implementa proiectul meu pe un server AWS utilizând AWS CodeDeploy.
În primul rând, hai să facem o plimbare prin Amazon AWS CodeDeploy:
Voi oferi o descriere de bază a AWS CodeDeploy, dar scopul meu nu este să-l detaliem aici. În schimb, atenția mea este să vă ajute să configurați conexiunea Codeship la AWS CodeDeploy.
Mai întâi, vizitați AWS CodeDeploy Noțiuni de bază pagina și alegeți a Implementare personalizată:
Atunci, creați o nouă aplicație. Am creat deja o instanță EC2 și am etichetat-o CodeDeployDemo.
Alege un Configurarea implementării. Am creat deja un rol de serviciu:
Acum, când aplicația dvs. AWS CodeDeploy este configurată, trebuie să configurați grupul Deploy pentru instanța dvs..
Acest lucru va diferi în funcție de aplicația dvs. și de locația S3:
Apoi, să ne întoarcem la Codeship. Introduceți proiectul și dați clic pe Setările proiectului în partea dreaptă sus. Apoi apasa Implementare:
Apoi faceți clic pe CodeDeploy buton:
Completați setările de proprietăți pentru implementarea codului AWS cu tastele de acces Amazon, cheia secretă și cu aplicația CodeDeploy Name and Deployment Group. Specificați și Buchet dvs. S3:
Acum, poate doriți să revizuiți documentația Codeship pentru utilizarea AWS CodeDeploy și postul de blog însoțitor.
Data viitoare când împingeți un comitet, Codeship vă va construi aplicația, o va testa și va iniția o operațiune AWS CodeDeploy.
Codeship oferă de asemenea un număr de ghiduri video pe canalul Vimeo care vă pot interesa. De exemplu:
Aici sunt în ordine. Apoi ne vom arunca cu capul în ParallelCI pentru a accelera testele noastre.
Iată un scurt ghid pentru a implementa o aplicație Ruby on Rails de la GitHub la Heroku, iar videoclipul este de mai jos:
Iată un scurt ghid despre Cum să implementați o aplicație Node.js de la GitHub la Nodejitsu și videoclipul este de mai jos:
Iată un scurt ghid despre Cum se configurează integrarea continuă și implementarea continuă pentru o aplicație Django de la GitHub la App Engine, iar videoclipul este de mai jos:
Am de gând să creez o furculiță a discursului popular Discuție platformă comunitară de discuții pentru Ruby on Rails. Apoi, voi adăuga un proiect la Codeship pentru copia mea de Discurs.
Click pe Mediu inconjurator și configurați variabilele de mediu pentru proiectul Rails:
Apoi vom folosi următoarele comenzi de configurare pentru a configura instrucțiunile de construire:
instalare bundle - fără dezvoltare --dezvoltare - retur = 3 - jobs = 3 bundle exec rake db: migrează
Apoi voi face o schimbare de exemplu în fișierul ReadMe pentru a iniția o construcție Codeship.
Iată rezultatele dintr-o construcție de succes:
Acum, să adăugăm următoarele teste la o singură conductă.
bundle exec rake qunit: pachet de test exec rake plugin: spec bundle exec rspec --profile
Data viitoare când ne angajăm, Codeship construiește codul și execută testul. Cu o conductă, durează aproape zece minute.
Acum, să trecem la ParallelCI.
Cu ParallelCI, fiecare proiect are mai multe conducte de testare care se execută în paralel. Fiecare dintre aceste conducte rulează într-o mașină virtuală independentă de cealaltă. Codeship va rula mai întâi comenzile de configurare și apoi orice arbitrar comenzi de test ați definit pentru această conductă specifică prin interfață. Pentru a ușura diferențierea diferitelor conducte, puteți oferi un nume prietenos pentru fiecare.
Iată o prezentare video cu o altă bază de coduri despre modul în care vom configura ParallelCI pentru a accelera aceste teste:
Pentru prima mea conductă de încercare, voi conduce următoarele teste:
bundle exec rake qunit: pachet de test exec rake plugin: spec bundle exec rspec spec / controlere spec / models --profile
Pentru cea de-a doua conductă de testare, voi rula următoarele:
rm -fr spec / controllers spec / modele bundle exec rspec --profile
Atunci voi impinge o nouă comisie și veți vedea ParallelCI care rulează mai jos cu jurnalul de stare individual al fiecărei conducte:
După doar 7 minute și 26 de secunde, construcția a două conducte este finalizată:
Este o probă de economisire a timpului de aproape 30%. Acesta este un bun exemplu pentru modul în care ParallelCI de la Codeship vă poate salva timpul echipei când rulează secvențe de construire și testare mai sofisticate. De asemenea, rețineți că Codeship permite până la 20 de conducte paralele de testare - câștigul de viteză aici poate fi exponențial.
Rețineți că, dacă aveți o configurație implementată pentru o anumită ramură și fiecare rapoarte de testare raportează o rulare de succes, va fi rulată conducta de implementare. Nu aveți nevoie să schimbați nimic dacă utilizați una dintre implementările integrate Codeship, de ex. Heroku, AWS CodeDeploy, Google App Engine, etc.
De asemenea, rețineți că, deoarece comenzile dvs. de construire și implementare sunt executate pe mai multe mașini virtuale, artefactele create în timpul pașilor de testare nu vor fi disponibile în timpul desfășurării. Dacă aveți nevoie de artefacte din pașii anteriori, asigurați-vă că ați reușit să le regenerați în timpul desfășurării utilizând o implementare de script adăugată înainte de implementarea reală.
Mai este ceva de spus, API Codeship.
Dacă doriți un control mai mare asupra Codeship pentru a script-ul complet și pentru a vă automatiza serviciile de livrare continuă, Codeship oferă un API:
Aveți posibilitatea să configurați construirile pe proiectul dvs. și să le reporniți după cum este necesar.
Aș dori să rezumă ceea ce am învățat despre Codeship:
Codeshipul este capabil să ofere valoare echipelor mici cu planul lor gratuit sau de bază, precum și companiile foarte mari, care au nevoie de până la 20 de conducte de testare paralele, cu planul lor Enterprise. Consultați pagina de preț Codeship pentru mai multe informații. Există chiar și o încercare gratuită de 14 zile pentru oricine să-și încerce configurația de 20 de paralele de testare a conductelor.
Sper că dai Codeship o încercare. Distribuiți experiența dvs. în comentarii. Ca întotdeauna, vă rugăm să nu vă postați și întrebările. Puteți să mă contactați și pe Twitter @reifman sau să mă trimiteți direct prin e-mail. Vizitați pagina mea Tuts + instructor pentru a vedea alte tutoriale pe care le-am scris.