Travis-CI wat, waarom, hoe

Travis CI maakt het werken in een team voor een softwareproject eenvoudiger met geautomatiseerde builds. Deze builds worden automatisch geactiveerd wanneer elke ontwikkelaar zijn code in de repository incheckt. In dit artikel zullen we bespreken hoe we Travis CI gemakkelijk kunnen integreren met ons project, dat wordt gehost op Github. Met automatisering, kennisgeving en testen kunnen we ons concentreren op onze codering en creatie, terwijl Travis CI het harde werk doet van continue integratie!


Hallo Travis & CI!

Travis CI is een gehost, doorlopend integratieplatform dat gratis is voor alle open source-projecten die op Github worden gehost. Met slechts een bestand genaamd .travis.yml met wat informatie over ons project, kunnen we geautomatiseerde builds activeren met elke wijziging in onze codebasis in de master branch, andere branches of zelfs een pull-aanvraag.

Voordat we aan de slag gaan met hoe we Travis met ons project kunnen integreren, zijn de volgende vereisten nuttig:

  1. Git
  2. Github
  3. Basic NodeJS
  4. NPM
  5. GruntJS

In het hart van het gebruik van Travis, is het concept van continue integratie (CI). Laten we zeggen dat we aan één functie werken en nadat we klaar zijn met coderen, zullen we dat meestal doen bouwen het project om zowel de uitvoerbare als andere bestanden te maken die nodig zijn om de applicatie uit te voeren. Nadat de build is voltooid, omvatten goede werkwijzen het uitvoeren van alle tests om ervoor te zorgen dat ze allemaal worden uitgevoerd en dat alles werkt zoals verwacht.

De laatste stap is ervoor zorgen dat wat we ook coderen inderdaad werkt, zelfs nadat we het in de hoofdlijncode hebben geïntegreerd. Op dit punt bouwen en testen we opnieuw. Als de geïntegreerde build slaagt, kunnen we ervan uitgaan dat de functie volledig is geïmplementeerd. Travis CI automatiseert deze exacte stap van het activeren van een build en test bij elke integratie met de mastertak, andere branches of zelfs een pull-aanvraag, waardoor de tijd wordt verkort om een ​​mogelijke integratiebug op te sporen..

In de volgende secties zullen we een eenvoudig project nemen en een falende build activeren, corrigeren en het vervolgens doorgeven. We zullen ook zien hoe Travis CI eenvoudig werkt met Github pull-aanvragen.


Travis-interface

Wanneer we op de hoofdhomepage terechtkomen, zien we ook de "drukte" van veel open source-projecten die door geautomatiseerd bouwen gaan. Laten we de interface deconstrueren en de verschillende onderdelen begrijpen:


  1. sidebar: Hier ziet u de lijst met openbare open source-projecten op Github die momenteel worden gebruikt voor geautomatiseerde builds. Elk item heeft de hyperlinknaam van het project, de duur van de build tot nu toe en het volgnummer van de build.
  2. Bouw vooruitgang [geel]: een kleine geelgekleurde cirkel naast de projectnaam geeft aan dat de build bezig is.
  3. Build mislukt [rood]: een kleine roodgekleurde cirkel naast de projectnaam geeft aan dat de build is voltooid en dat deze is mislukt.
  4. Bouw door [groen]: een kleine groen gekleurde cirkel naast de projectnaam geeft aan dat de build is voltooid en is verstreken.
  5. Projectnaam en links: De titel heeft de indeling gebruikersnaam en / of repository en het is gekoppeld aan de Travis CI-buildpagina. Het kleine Octocat-symbool ernaast linkt naar de Github-pagina van de repository met de broncode.
  6. Soorten build: De geautomatiseerde builds kunnen worden geactiveerd door de code in de hoofdtak, in andere branches of zelfs in een pull-aanvraag in te voeren. Door het individuele tabblad te bezoeken, kunnen we meer informatie krijgen over de builds.
  7. Bouw activiteit: Dit gedeelte bevat informatie over elk van de taken die door de build worden uitgevoerd.

Stap 1: Hallo wereld!

Voordat we Travis CI integreren, zullen we een eenvoudig "Hello World" -project creëren en een aantal build-taken creëren. Travis ondersteunt verschillende programmeertalen, waaronder Python, Ruby, PHP en JavaScript met NodeJS. Voor het doel van onze demo zullen we NodeJS gebruiken. Laten we een heel eenvoudig bestand maken hello.js zoals gedefinieerd op de hoofdwebsite van NodeJS:

 var http = require ('http'); http.createServer (functie (req, res) res.writeHead (200, 'Content-type': 'text / plain'); res.end ('Hello World \ n') // ontbrekende puntkomma zal fail the build). listen (1337, '127.0.0.1'); console.log ('Server draait op http://127.0.0.1:1337/');

Merk op dat er een ontbrekende puntkomma is, zodat later op JSHint, een JavaScript-linter dit kan detecteren en een fout kan veroorzaken. We zullen het project bouwen met behulp van een taakrunner genaamd GruntJS die JSHint zal bevatten. Dit is natuurlijk een illustratie, maar in echte projecten kunnen we verschillende test-, publicatie-, lint- en hint-taken opnemen..

Om de verschillende pakketten aan te geven die vereist zijn voor GruntJS, JSHint en anderen, zullen we een tweede bestand aanmaken met de naam package.json. Dit bestand bevat eerst de naam en het versienummer van onze eenvoudige applicatie. Vervolgens zullen we de benodigde afhankelijkheden definiëren devDependencies waaronder GruntJS gerelateerde pakketten, waaronder JSHint. Met scripts, we zullen Travis CI vertellen om de testsuite en het commando te starten grunt --verbose. Laten we de volledige inhoud van het bestand bekijken: package.json:

 "name": "node-travis", "version": "0.1.0", "devDependencies": "grunt": "0.4.1", "grunt-cli": "0.1.9", "grunt -contrib-jshint ":" 0.6.0 "," scripts ": " test ":" grunt --verbose "

Laten we vervolgens het volgende voorbereiden Gruntfile.js dat omvat alle taken die nodig zijn om onze build uit te voeren. Voor de eenvoud kunnen we slechts één taak opnemen: JavaScript-pluisvorming met JSHint.

 module.exports = functie (grunt) grunt.initConfig (jshint: all: ['Gruntfile.js', 'hello.js']); grunt.loadNpmTasks ( 'grunt-contrib-jshint); grunt.registerTask ('standaard', 'jshint'); ;

Ten slotte zullen we de build uitvoeren die slechts één taak bevat nadat we alle gerelateerde pakketten hebben gedownload npm installeren:

 $ npm installeer $ grunt

Zoals verwacht, zal de build niet passeren omdat de JSHint een ontbrekende puntkomma zal detecteren. Maar als we de puntkomma terug in de hello.js bestand en voer de knorren commando nogmaals, we zullen zien dat de build zal passeren.


Nu we een eenvoudig project lokaal hebben gemaakt, zullen we dit project naar ons Github-account pushen en Travis CI integreren om de build automatisch te activeren.


Stap 2: Hello World met Travis CI

De allereerste stap bij het integreren van Travis CI is het maken van een bestand met de naam .travis.yml die de essentiële informatie over de omgeving en configuraties voor de build bevat die moet worden uitgevoerd. Voor de eenvoud zullen we alleen de programmeeromgeving en de versie opnemen. In ons eenvoudige project is het de NodeJS-versie 0.10. De laatste inhoud van het bestand .travis.yml zal als volgt zijn:

 taal: node_js node_js: - "0.10"

Nu zal ons project samen met de volgende bestanden bestaan README.md en .gitignore zoals gevraagd:

 $ boom. | - .travis.yml | - Gruntfile.js | - hello.js | - .gitignore | - README.md '- package.json

Laten we nu een git repository maken en pushen naar een nieuwe externe repository gehost op Github:

 git init git commit -m "eerste commit" git remote add origin [email protected]: [gebruikersnaam] / [repository] .git git push -u originemaster

Log vervolgens in op Travis CI en autoriseer Travis CI om toegang tot uw Github-account te krijgen. Bezoek daarna uw profielpagina om de Github-repository in te schakelen om geautomatiseerde builds met Travis CI te starten.


Als laatste stap om onze allereerste build te activeren, moeten we pushen naar Github. Laten we de puntkomma in het bestand verwijderen hello.js om een ​​mislukte build te maken en druk vervolgens op Github. Dit activeert de automatische build in Travis CI. Laten we de URL bezoeken: https://travis-ci.org/[username]/[repo] om de eerste build in progress te zien!

 git add hello.js git commit -m "verwijderd puntkomma" git push

Deze mislukte build in het bovenstaande voorbeeld is echt een eenvoudige illustratie. Maar deze situatie is een weerspiegeling van iets dat kan gebeuren in onze echte projecten - we proberen onze code te integreren en de geautomatiseerde build mislukt. Nadat elke build is voltooid, verzendt Travis CI standaard e-mails naar de auteur van de commit en de eigenaar van de repository. Op deze manier wordt de ontwikkelaar die de code heeft gepusht onmiddellijk gewaarschuwd en kunnen vervolgens de integratiefouten oplossen. In ons geval voegen we de ontbrekende puntkomma toe en pushen we nog een keer naar Github.

 git voeg toe hello.js git commit -m "toegevoegd puntkomma om de build door te geven" git push "

Hoera! De geautomatiseerde build is deze keer gepasseerd. Onze code is geïntegreerd en voldoet aan alle vereiste testen. Nu proberen we elke keer dat we onze wijzigingen integreren, of het nu gaat om de mastertak of zelfs andere vestigingen, Travis CI een automatische build activeren.


Pull-verzoeken

Zodra we Travis CI in ons project hebben geïntegreerd, zal een pull-aanvraag ook een geautomatiseerde build activeren. Dit is enorm handig voor de eigenaar van de opslagplaats of de ontwikkelaar die de codebasis samenvoegt. Laten we eens kijken hoe Travis CI zal adviseren of het pull-verzoek goed is om samen te voegen of niet.

Laten we eerst, met behulp van een ander Github-account, de oorspronkelijke repository doorzoeken en het verzoek trekken met de volgende stappen:

  1. Vork de originele repository
  2. Maak een nieuw filiaal in de gevorkte repository
  3. Breng de nieuwe wijzigingen aan en maak het vast
  4. Zorg ervoor dat de functietak is gekozen
  5. Vergelijk en trek verzoek

Samenvoegen met voorzichtigheid

Om een ​​mislukte build in het pull-verzoek te simuleren, zullen we opnieuw de puntkomma in het bestand verwijderen hello.js, commit en druk op de veranderingen en tenslotte trek verzoek.


Bij elk pull-verzoek activeert Travis CI automatisch de build. Deze keer kunnen we ook de "Pull-aanvragen" tab om de geschiedenis van huidige of eerdere builds te bekijken die is geactiveerd als gevolg van een pull-aanvraag.


Nadat Travis CI de build heeft voltooid en we de pull-aanvraagpagina vanuit de oorspronkelijke repository bezoeken, zullen we zien dat Travis CI enkele wijzigingen in de gebruikersinterface heeft toegevoegd om ons te waarschuwen dat de build is mislukt.


Goed om samen te voegen

Deze mislukte buildstatus wordt onmiddellijk meegedeeld aan de eigenaar van de repository, evenals de ontwikkelaar die het pull-verzoek heeft gedaan. En nu, afhankelijk van de reden voor de mislukte build, kan deze worden gecorrigeerd met een andere commit in dezelfde branch. Daarom voegen we nog een laatste keer het puntkomma en trekverzoek toe. Github zal ook de pull-aanvraagpagina automatisch bijwerken.


En tot slot, wanneer we teruggaan naar de pull-requestpagina van de oorspronkelijke repository, zien we deze keer een "groen" signaal om door te gaan en samen te voegen terwijl onze build voorbij is!



Bouw configuraties

Het bestand .travis.yml definieert de buildconfiguraties. Ons voorbeeld bevatte alleen het taaltype en de versie, maar we kunnen er nog meer handige toevoegen als volgt:

  1. Taalspecifiek. Dit is een voorbeeld voor Ruby
     taal: ruby ​​rvm: - 1.9.3
  2. Commando's of scripts om voor of na elke build uit te voeren. Dit is een voorbeeld van een opdracht voordat een script wordt uitgevoerd:
     before_script: - git config --global user.name [mijnnaam]
  3. Meldingen in termen van e-mails of chatwaarschuwingen worden verzonden zoals aangegeven door de buildconfiguraties. Dit is een voorbeeld van het uitschakelen van e-mails en het verzenden naar IRC:
     notificaties: email: false irc: "chat.freenode.net # travis"

Het valideren .travis.yml

Zoals je kunt zien, het bestand .travis.yml wordt erg belangrijk bij het activeren van geautomatiseerde builds. Als dit bestand niet geldig is, zal Travis CI de build bij elke push naar Github niet activeren. Daarom is het belangrijk om ervoor te zorgen dat we een geldig bestand hebben dat Travis CI correct zal interpreteren. Hiervoor zullen we een juweeltje genaamd travis-lint installeren en het bestand uitvoeren .travis.yml

 $ gem install travis-lint $ travis-lint .travis.yml


Maak statusafbeeldingen

Het is echt handig om een ​​kleine afbeelding op te nemen om de huidige status van de build aan te geven. De afbeelding zelf is toegankelijk via het URL-patroon http://travis-ci.org/[username]/[repository-name].png. Een andere manier om snel toegang te krijgen tot de afbeeldingen die in verschillende indelingen zijn ingesloten, vindt u op de Travis CI-projectpagina zelf. We kunnen bijvoorbeeld het Markdown-formaat kopiëren en insluiten in de projecten README.md het dossier.


Een andere coole manier om de buildstatussen van verschillende open source-projecten te volgen tijdens het surfen in Github is het installeren van een van de browserextensies. Hierdoor worden de afbeeldingen van de opbouwstatus prominent naast elk van de projectnamen geplaatst.


Bronnen op Travis CI

Hier zijn enkele bronnen over het concept van continue integratie evenals het leren en integreren van Travis CI in onze Github-projecten:

Een fantastische manier om te leren wat en hoe de verschillende buildconfiguraties in de .travis.yml bestand is om daadwerkelijk door veel van de populaire open source-opslagplaatsen te bladeren die Travis CI al integreren. Hier zijn een paar:

  1. Ruby on Rails (Ruby)
  2. BackboneJS (JavaScript)
  3. Componist (PHP)
  4. Kolf (Python)

Ik hoop dat dit je een korte inleiding gaf over hoe we Travis CI gemakkelijk kunnen integreren in onze Github-projecten. Het is echt gemakkelijk te gebruiken, dus probeer het en maak continue integratie een fluitje van een cent voor uw team!