Codeship Deployment Pipelines en ParallelCI voor snellere resultaten

Dit is het tweede deel van een gesponsorde serie Codeship, de veilige, cloud-gebaseerde continue integratie- en bezorgservice. Als je deel één hebt gemist, kun je teruggaan en lees het hier.


 

Wat is Codeship?

Codeship is een gehoste continue bezorgservice die zich richt op snelheid, betrouwbaarheid en eenvoud. In deze zelfstudie zal ik de basisprincipes van Codeship bespreken vanaf deel een en vervolgens doorlopen om uw code te implementeren. 

Ten eerste zal ik laten zien hoe je Codeship kunt gebruiken om te implementeren naar AWS CodeDeploy. Daarna zullen we het nieuwe van Codeship verkennen ParallelCI, waarmee uw tests en build worden versneld door taken parallel aan verschillende virtuele machines te delegeren. Ik zal ook de Codeship API introduceren, handig als u meer geautomatiseerde controle wilt hebben over de services van Codeship.

Laten we beginnen met een beoordeling van wat Codeship doet.

Achtergrond

Met Codeship configureert u de service om uw toepassing te bouwen, testen en implementeren van uw broncodemanager naar de staging- en productieplatformen van uw keuze. De service biedt een verscheidenheid aan krachtige instellingsopties. Momenteel is Codeship geïntegreerd met populaire broncodemanagers GitHub en Bitbucket. Het ondersteunt een verscheidenheid aan programmeertalen (Ruby on Rails, Node.js, PHP, Java, Go, Dart, enz.) En implementatieplatformen (Amazon Web Services, Heroku, Google App Engine, etc.)

De praktijk van continue integratie omvat herhaaldelijk geautomatiseerd testen en coderen met meldingen om ontwikkelaars in realtime op de hoogte te stellen van problemen in hun code. Codeship combineert dit met de praktijk van continue levering, die voorziet in regelmatige code-implementatie zodra wijzigingen zijn geslaagd voor geautomatiseerde tests.

Als u uw code naar GitHub pusht, herbouwt Codeship uw applicatie op zijn beveiligde servers en voert het uw geautomatiseerde tests uit. Als de tests mislukken, stelt dit uw ontwikkelteam op de hoogte via e-mail of integratie met populaire services zoals Slack, HipChat, enzovoort. Als uw tests worden doorgegeven, volgt Codeship uw gedefinieerde pijplijn om code te verplaatsen naar staging of productieservers zoals opgegeven.

Werken met een service als Codeship kan de gevolgen van fouten beperken, hun detectie versnellen en uw team comfortabeler en bekwamer maken door regelmatige incrementele verbeteringen aan uw platform aan te brengen - hopelijk verbetert u uw reactievermogen op uw klanten en uw markt.

Met Codeship kan uw team hun code met meer zelfvertrouwen schrijven en implementeren.

Onlangs heeft Codeship een opwindende nieuwe functie aangekondigd om uw tests te versnellen. Het heet ParallelCI.

Wat is ParallelCI?

Met ParallelCI kunt u uw testopdrachten op meerdere virtuele buildmachines (VM's) splitsen om uw bouwtijd te versnellen. Door uw tests parallel uit te voeren, verhoogt Codeship de productiviteit van uw team met snellere builds. U kunt ParallelCI gebruiken om uw project te configureren met maximaal tien parallelle pijplijnen om maar liefst 10x snelheidsverhoging voor uw testsuite te behalen. 

U kunt casestudy's van Codeship-klanten Bannerman en LendingCrowd lezen, die de testtijden met respectievelijk 30% en 50% hebben verkort.

Ter herinnering: ik neem deel aan de onderstaande discussies. Als je een vraag of een suggestie voor een onderwerp hebt, plaats dan een commentaar hieronder. Je kunt me ook bereiken via Twitter @reifman of mij rechtstreeks een e-mail sturen.

Uw implementatie configureren

Laten we beginnen met het verkennen van de implementatiefuncties van Codeship in meer detail. 

U kiest wat Codeship doet met uw code nadat uw tests geslaagd zijn. U kunt bijvoorbeeld uw staging-server bijwerken voor verdere tests, of misschien rolt u alles uit naar uw productieservers. Met Codeship kunt u geavanceerde pijplijnen definiëren voor testen en inzetten.

Overigens biedt Codeship ook dit gratis en zeer informatieve eBook: Efficiency in ontwikkelingswerkstromen. Je kunt het samen met de Codeship-blog bekijken, zodat je op de hoogte blijft van nieuwe ontwikkelingen en best practices.

Het projectopbouwlogboek

Ik neem aan dat je onze eerste tutorial hebt gevolgd en je hebt aangemeld en bent begonnen met het gebruik van Codeship.

Als u het buildlog van uw project bezoekt, ziet u een lijst met recente resultaten. Klik op de groene knop Succes knop.

Dit zal de details van het build-resultaat en de Bouw opties zijbalk menu.

Hier is het menu Build-opties. Klik op Testinstellingen bekijken:

Hier ziet u de Project instellingen sidebar-menu aan de linkerkant, waar we de implementatie-opties zullen vinden die we nodig hebben.

Hier is een gedetailleerd overzicht van het menu Projectinstellingen. Klik op Deployment:

Configureer uw implementaties

Codeship biedt kant-en-klare implementatie-integratie met vele populaire hosting-oplossingen, waaronder Google AppEngine, Amazon Web Services CodeDeploy, Heroku, Engine Yard, Nodejitsu en meer. Codeship is een officiële partner van AWS en CodeDeploy. 

Codeship biedt een handvol zelfstudies voor verschillende platforms en een breed scala aan documentatie voor opties voor continue implementatie.

Ik zal je twee voorbeelden laten doornemen. Ten eerste zal ik mijn eerdere op PHP gebaseerde Yii2 Framework-build implementeren naar AWS met CodeDeploy. Vervolgens bouw ik het Ruby Discourse Project met ParallelCI om mijn bouwtijden te versnellen.

Met behulp van Amazon CodeDeploy met Codeship

In deel een heb ik met Codeship geautomatiseerde tests uitgevoerd op een vork van het op PHP gebaseerde Yii2 Framework. Laten we nu Codeship configureren om mijn project te implementeren op een AWS-server met behulp van AWS CodeDeploy.

Laten we eerst een wandeling maken door Amazon AWS CodeDeploy:

Ik zal een eenvoudige doorloop van AWS CodeDeploy aanbieden, maar mijn doel is hier niet in detail te beschrijven. In plaats daarvan concentreer ik me om u te helpen bij het configureren van de Codeship-verbinding met AWS CodeDeploy.

Ga eerst naar de AWS CodeDeploy Ermee beginnen pagina en kies een Aangepaste implementatie:

Dan, Maak een Nieuwe Applicatie. Ik heb al een EC2-instantie gemaakt en deze getagd CodeDeployDemo.

Kies een Implementatieconfiguratie. Ik heb ook al een servicerol opgezet:

Nu uw AWS CodeDeploy-toepassing is ingesteld, moet u uw Deploy-groep configureren voor uw instantie.

Dit is afhankelijk van uw toepassing en S3-bucketlocatie:

Laten we dan teruggaan naar Codeship. Voer je project in en klik Project instellingen in de rechterbovenhoek. Dan klikken Deployment

Klik vervolgens op de CodeDeploy knop:

Voer de eigenschappen van de AWS-code-implementatie in met uw toegangssleutels voor Amazon, de geheime sleutel en de App-naam en Deployment-groep van CodeDeploy. Geef ook uw S3 Bucket op:

Misschien wilt u nu de Codeship-documentatie bekijken voor het gebruik van AWS CodeDeploy en de bijbehorende blogpost.


 

De volgende keer dat u een commit pusht, zal Codeship uw app bouwen, testen en een AWS CodeDeploy-bewerking starten.

Codeship biedt ook een aantal videogidsen op hun Vimeo-kanaal die u mogelijk interesseren. Bijvoorbeeld:

  • Ruby on Rails inzetten voor Heroku
  • Een Node.js-toepassing implementeren op Nodejitsu
  • Een Django-applicatie implementeren in Google App Engine

Hier zijn ze in orde. Daarna duiken we in het gebruik van ParallelCI om onze tests te versnellen.

Ruby on Rails inzetten voor Heroku

Hier is een korte handleiding om een ​​Ruby on Rails-app van GitHub naar Heroku te implementeren, en de video is hieronder:

 

Een Node.js-toepassing implementeren op Nodejitsu

Hier is een korte handleiding over het implementeren van een Node.js-app van GitHub naar Nodejitsu en de video is hieronder:


 

Een Django-applicatie implementeren in Google App Engine

Hier is een korte handleiding over het instellen van Continuous Integration en Continuous Deployment voor een Django-applicatie van GitHub naar App Engine, en de video is hieronder:


 

ParallelCI gebruiken met Codeship

Ik ga een vork maken van het populaire discussieforum Discussie voor Ruby on Rails. Vervolgens voeg ik een project toe aan Codeship voor mijn gevorkte versie van Discourse.

Klik op Milieu en configureer de omgevingsvariabelen voor ons Rails-project:

Vervolgens gebruiken we de volgende setup-opdrachten om de buildinstructies in te stellen:

bundel installeren - zonder ontwikkeling - implementatie --retry = 3 --jobs = 3 bundel exec rake db: migreren

Vervolgens zal ik een voorbeeldverandering in het Leesmij-bestand doorvoeren om een ​​Codeship-build te starten.

Dit zijn de resultaten van een succesvolle build:

Testen met een enkele pijplijn

Laten we nu de volgende tests toevoegen aan een enkele pijplijn.

bundel exec rake qunit: test bundel exec rake plugin: spec bundel exec rspec - profiel 

De volgende keer dat we ons verbinden, bouwt Codeship de code en voert de test uit. Met één pijplijn duurt dit bijna tien minuten.

Laten we nu overgaan naar ParallelCI. 

Testen met meerdere pijpleidingen

Met ParallelCI heeft elk project meerdere testpijplijnen die parallel worden uitgevoerd. Elk van die pijplijnen draait onafhankelijk van de andere in een virtuele machine. Codeship voert eerst je setup-opdrachten uit en vervolgens willekeurig testopdrachten u hebt gedefinieerd voor deze specifieke pijplijn via de interface. Om het onderscheiden van verschillende pijplijnen te vergemakkelijken, kunt u een vriendelijke naam voor elke pijplijn opgeven.

Hier is een video-walkthrough met een andere codebase over hoe we ParallelCI instellen om deze tests te versnellen:

Voor mijn eerste testpijplijn voer ik de volgende tests uit:

bundel exec rake qunit: test bundel exec rake plugin: spec bundel exec rspec spec / controllers spec / models - profiel

Voor mijn tweede testpijplijn voer ik het volgende uit:

rm -fr spec / controllers spec / models bundel exec rspec - profiel

Dan zal ik een nieuwe commit pushen, en je kunt het zien ParallelCI hieronder lopen met het individuele statuslog van elke pijplijn:

Na slechts 7 minuten en 26 seconden is de tweepijplijn-build voltooid:

Het is een sample tijdbesparing van bijna 30%. Het is een goed voorbeeld van hoe Codeship's ParallelCI uw teamtijd kan besparen bij het uitvoeren van meer geavanceerde build- en testsequenties. Houd er ook rekening mee dat Codeship maximaal 20 parallelle testpijplijnen mogelijk maakt - de snelheidsversterking kan hier exponentieel zijn.

Houd er rekening mee dat als u een implementatie hebt geconfigureerd voor een specifieke vestiging en elke testpijplijn een succesvolle run rapporteert, uw implementatiepijplijn wordt uitgevoerd. U hoeft niets te wijzigen als u een van de geïntegreerde Codeship-implementaties gebruikt, bijvoorbeeld Heroku, AWS CodeDeploy, Google App Engine, enz.

Houd er ook rekening mee dat tijdens het implementeren van de build- en deployment-opdrachten op meerdere virtuele machines artefacten die tijdens de teststappen zijn gemaakt, niet beschikbaar zijn. Als u artefacten uit de vorige stappen nodig hebt, moet u ze tijdens de implementatie opnieuw genereren met een scriptimplementatie die vóór de daadwerkelijke implementatie is toegevoegd.

Er is nog iets om op te noemen, de Codeship API.

De Codeship-API

Als u nog meer controle wilt over Codeship om uw doorlopende bezorgingsservices volledig te scripten en te automatiseren, biedt Codeship een API:

U kunt de builds op uw project configureren en ze indien nodig opnieuw opstarten.

In Closing

Ik zou graag willen samenvatten wat we hebben geleerd over Codeship:

  • Codeship is een gehoste Continuous Delivery-service die zich richt op snelheid, betrouwbaarheid en eenvoud.
  • Het test en implementeert uw applicaties automatisch.
  • Het is geïntegreerd met alle relevante broncodebeheersystemen, bijvoorbeeld GitHub en Bitbucket
  • Het ondersteunt een verscheidenheid aan programmeertalen, b.v. Ruby on Rails, Node.js, PHP, Python, Go, Dart, enz.
  • Het is goed geïntegreerd in een verscheidenheid aan populaire implementatieoplossingen, bijvoorbeeld Heroku, AWS CodeDeploy, Google App Engine, enz.
  • Het biedt meldingen via e-mail en chatdiensten zoals Slack, HipChat, enz.
  • Jij krijgt 100 builds / maand en 5 privéprojecten om gratis aan de slag te gaan en zonder risico. Open source-projecten kunnen Codeship gratis gebruiken. Educatieve projecten krijgen 50% korting.
  • De nieuwste functie van Codeship ParallelCI kunt u builds parallel uitvoeren, waardoor de runtime van de testsuite enorm wordt versneld.
  • Als u Codeship wilt automatiseren, kunt u de API gebruiken.

Codeship is in staat om waarde te bieden aan kleine teams met hun gratis of basisplan, evenals aan zeer grote bedrijven, die tot 20 parallelle testpijplijnen nodig hebben, met hun Enterprise-plan. Zie de Codeship-prijslijst voor meer informatie. Er is zelfs een gratis proefperiode van 14 dagen voor iedereen om zijn 20 parallelle pijplijn testconfiguratie uit te proberen.

Ik hoop dat je Codeship een kans geeft. Deel uw ervaring in de reacties. Zoals altijd, aarzel niet om ook uw vragen te plaatsen. Je kunt me ook bereiken via Twitter @reifman of mij rechtstreeks een e-mail sturen. Ga naar mijn Tuts + -instructorpagina om andere zelfstudies te bekijken die ik heb geschreven. 

Gerelateerde Links

  • Codeship Website
  • De Codeship-blog
  • Codeship-documentatie
  • Codeship Videogidsen
  • Efficiëntie in ontwikkelingswerkstromen (eBook)
SaveSaveSaveSave