Continue integratie Hudson-installatie

In deze tutorialserie zullen we een zelden besproken (maar zeer waardevol) proces van het ontwikkelen van software onderzoeken dat teleurstellend afwezig is in de iOS- en mobiele wereld: continue integratie.


Ook verkrijgbaar in deze serie:

  1. Continue integratie: serie-introductie
  2. Continue integratie: Tomcat-installatie
  3. Continue integratie: Hudson-installatie
  4. Continuous Integration: Scripting Xcode Builds
  5. Continuous Integration: Script Enhancements

Waar we gebleven zijn

In deel 1 bespraken we het concept van continue integratie en hoe dit ons kan helpen om software sneller te ontwikkelen. In deel 2 demonstreerden we hoe "Apache Tomcat", de webserver waarop onze CI-software wordt gehost, kan worden geïnstalleerd.


Introductie van Hudson

Hudson is een open-source Continuous Integration-server geschreven in Java. Het is een van de meer populaire CI-servers die naast Jenkins en Atlassian's Bamboo worden gebruikt. We gebruiken Hudson omdat:

  • Het is eenvoudig te installeren en configureren.
  • Het is gemakkelijk te gebruiken.
  • Robuuste plugin-ondersteuning is beschikbaar.
  • Het is gratis!

Hudson wordt momenteel onderhouden door Oracle, die heeft verklaard dat ze Hudson en de gemeenschap willen blijven ondersteunen en ontwikkelen.


Wat doet Hudson?

Hudson speelt een belangrijk onderdeel van het CI-proces. Het controleert de coderepository en controleert voortdurend op updates. Zodra het bepaalt dat er een update is, zal het een update / pull doen en de build starten. Het is belangrijk op te merken dat Hudson niet verantwoordelijk is voor de bouwactie zelf. Het kan alleen een script (dat we zullen schrijven) dat het bouwen en archiveren zal doen noemen. Zodra het script is gestart, zal Hudson het script volgen. Als het mislukt, zal het een gebroken build rapporteren.


Stap 1: Download en installeer Hudson

Het opzetten van Hudson is heel eenvoudig. Ga eerst naar de website van Hudson op http://hudson-ci.org/, en klik vervolgens op de downloadlink voor de nieuwste productieversie (2.1.2 op het moment van schrijven) om een ​​* .war-bestand te downloaden.

Nadat de download is voltooid, hernoemt u het bestand naar "hudson.war" en plaatst u het bestand in de map "webapps" van Tomcat:

 mv hudson.war / usr / local / tomcat / webapps /

Als de server momenteel wordt uitgevoerd, start u deze opnieuw op door het afsluitingsscript uit te voeren, wacht u enkele seconden en voert u het opstartscript opnieuw uit. Wanneer dat is gebeurd, opent u een browser en navigeert u naar:

http: // localhost: 8080 / Hudson

Hudson zal je vertellen dat het aan het opzetten is. Als het klaar is, zie je het hoofdscherm van Hudson.



Stap 2: Maak uw project

Nu Hudson operationeel is, moeten we een project of "baan" opzetten. Deze taak heeft betrekking op een project dat we aan onze CI willen toevoegen.

Deze 'taak' zal verantwoordelijk zijn voor het monitoren van onze repository, up-to-date blijven en het bouwen van het project. Klik op een nieuwe taak en voer uw project- / app-naam in als de taaknaam. Selecteer "Build a free-style software project" als het type taak. Dit geeft ons de flexibiliteit om de klus aan te passen aan onze behoeften. Klik op "ok" als je klaar bent.


Vervolgens moeten we de projectinstellingen instellen. De belangrijke secties op deze pagina zijn "Bron
Code Management "," Build Triggers ", and" Build ".


Stap 3: Stel broncodebeheer in

In "Broncodebeheer" kiezen we welk type repository we gebruiken en zien we de URL. In dit voorbeeld gebruik ik GIT, maar Subversion volgt hetzelfde proces.


Houd er rekening mee dat de manier waarop u verbinding maakt met uw repository, bepaalt hoe deze sectie wordt ingesteld:

HTTPS

U kunt een probleem tegenkomen als u HTTPS (gebruikersnaam en wachtwoord) gebruikt om verbinding te maken met een GIT-repository. Op dit moment ondersteunt Hudson niet eenvoudig wachtwoordverificatie voor GIT.

Voor degenen die SVN gebruiken, voert u simpelweg uw repository-URL in en deze moet u om een ​​gebruikersnaam en wachtwoord vragen. Probeer voor GIT-gebruikers details als deze in te voeren:

 https: // gebruikersnaam: password@serverurl/username/reponame.git

Dit zou voor u moeten werken tenzij u een '@'-symbool in uw wachtwoord heeft, in welk geval u geen HTTPS voor uw authenticatie kunt gebruiken, u zult SSH moeten gebruiken.

SSH

Als u SSH gebruikt (met private / publieke sleutels), moet u ervoor zorgen dat u een SSH-sleutel voor uw build-server genereert en deze aan uw repository-manager toevoegt.

U moet er ook voor zorgen dat de RSA-vingerafdruk van de repositoryservers wordt toegevoegd aan de lijst met bekende hosts voordat u uw builds start. De eenvoudigste manier om dit te doen is om via SSH verbinding te maken met de server:

 ssh -T [email protected]

Je zou zoiets als dit moeten zien:


Maakt u zich geen zorgen als u een fout zoals hierboven ziet nadat u de RSA-vingerafdruk hebt toegevoegd aan uw lijst met bekende hosts. Dit betekent meestal dat de server geen shell-toegang toestaat. Het belangrijkste is dat we verbinding kunnen maken en we weten de identiteit van de server.


Stap 4: Stel de bouwtrigger in

We moeten Hudson vertellen wanneer we willen dat de build begint. We gaan de repo elke minuut pollen om te zien of er een verandering is opgetreden.

Vink het vakje "Poll SCM" aan en voer het in (zoals in de onderstaande afbeelding):

* * * * *


U hoeft het niet elke minuut te pollen. Als u dit wilt wijzigen om het alleen dagelijks of per uur te doen, kunt u dat ook instellen. Houd er echter rekening mee dat hoe vaker we de opdracht pollen, des te ononderbroken ons proces zal zijn.


Stap 5: voeg de opdracht Bouwen toe

Ten slotte moeten we het project compileren en indien nodig exporteren. Om dit te doen, moeten we een buildstap toevoegen in de buildsectie.

Klik op de knop 'buildstap toevoegen' en selecteer 'Shell uitvoeren'. Vervolgens voegen we een opdracht toe die het build-script uitvoert vanuit de projectdirectory (we hebben dit nog niet toegevoegd, we gaan dit later doen).


De tekenreeks '$ Workspace' in de bovenstaande afbeelding verwijst naar de werkmap van het project zoals deze bestaat in Hudson. Dit is het hoogste niveau van uw repository.

Als u klaar bent, klikt u op "opslaan". U wordt naar het hoofdscherm van de build geleid en na een seconde of twee ziet u hoe uw project de eerste keer wordt gebouwd!


Stap 6: Bekijk de build mislukt

Nadat u uw projectinstellingen hebt opgeslagen, keert u terug naar het takendashboard. Na een paar seconden ziet u een build-start-up. Klik op het pictogram van de kleine terminal om de uitvoer van de build te bekijken.


We kunnen zien wat Hudson aan het doen is. Het detecteerde een wijziging in de SCM (in dit geval is dit de eerste verbinding) en gaat door met het controleren van de repositorycode in de werkruimte. Het doet dit allemaal met succes, maar het mislukt als het probeert ons build-script uit te voeren.

We kunnen aan de output zien dat het faalde omdat het build-scriptbestand nog niet bestaat. Laten we dat toevoegen aan ons project en het toewijzen aan de repository.



Stap 7: werk de repository bij

Voeg een map met de naam 'Scripts' toe aan het bovenste niveau van uw repository. Maak een teksteditor en maak een bestand met de naam "build_script.sh" in de map "Scripts" met de volgende tekst:

 #! / bin / sh echo "We zullen later bouwen :)"

Al dit script doet een string naar de opdrachtregel afdrukken. We zullen bespreken hoe je de volgende tutorial van je project kunt bouwen, maar voorlopig hoeven we alleen maar het script aan de repository toe te voegen.

Nadat het bestand is gemaakt, voegt u het toe aan uw repository. Na ongeveer een minuut zou je Hudson moeten zien beginnen met een nieuwe build. Klik op het terminalpictogram om de uitvoer te bekijken.

Alles gaat goed, je zou zoiets als het volgende moeten zien:


Nu het bestand bestaat, faalt de build niet. Als je goed kijkt, kun je ook de uitvoer van ons script zien op de derde laatste regel.


Stap 8: Ontdek Hudson

Voordat we klaar zijn, is het belangrijk om enkele functies van Hudson te verkennen.

Waar Hudson de bestanden bewaart

Als je ooit de Hudson-map wilt zien, kijk dan onder de verborgen map ".hudson" in je gebruikersmap. U kunt het openen door go-> ga naar map '(in finder) te selecteren en in te voeren:

/ Users //.hudson

Dit is waar de magie gebeurt. Al uw code wordt bewaard in een werkruimtemap onder de relevante taak. Voor mijn project (AwesomeApp) zou de code worden bewaard in:

/Users/abury/.hudson/jobs/AwesomeApp/Workspace

Het is belangrijk om te weten waar de bestanden zich in de map van Hudson bevinden. Mogelijk hebt u een genegeerd bestand dat u handmatig moet toevoegen of een SVN-probleem dat u moet repareren.

Project Dashboard

In het projectdashboard kunt u allerlei informatie bekijken die nuttig is voor het bewaken van de gezondheid van de build. U kunt een logboek bekijken van de recente wijzigingen (inclusief een wijziging die onlangs de build heeft verbroken).


U kunt ook de werkruimte verkennen vanuit de browser en de bestanden bekijken die zich momenteel in de werkruimte bevinden.

Extra functies

Hudson kan u op een aantal manieren op de hoogte brengen van het resultaat van een recente build. Het onderhoudt een RSS-feed die je op een monitor kunt richten, die je e-mails kan sturen, er is zelfs een plug-in om hem aan het praten te krijgen! Als u enige tijd heeft om Hudson te configureren om deze functies te gebruiken.

De volgende keer

In het volgende artikel zullen we het build-script gaan schrijven dat uw code zal compileren en ondertekenen in een .ipa-bestand dat klaar is om op een iPhone of iPad te worden geïnstalleerd. We behandelen bash basics, de gebruikte commando's en hoe je veelvoorkomende valkuilen kunt overwinnen. Vang je de volgende keer!