Travis CI gör jobbet i ett team för ett mjukvaruprojekt enklare med automatiserade byggnader. Dessa byggnader utlöses automatiskt när varje utvecklare kontrollerar sin kod till förvaret. I denna artikel kommer vi att gå igenom hur vi enkelt kan integrera Travis CI med vårt projekt, som är värd för Github. Med automatisering, anmälan och testning på plats kan vi fokusera på vår kodning och skapa, medan Travis CI gör det hårda arbetet med kontinuerlig integration!
Travis CI är en värdgående kontinuerlig integrationsplattform som är fri för alla öppna källprojekt som finns på Github. Med bara en fil som heter .travis.yml
innehållande viss information om vårt projekt kan vi utlösa automatiserade byggnader med varje ändring i vår kodbas i huvudgrenen, andra grenar eller till och med en dragförfrågan.
Innan vi börjar med hur vi kan integrera Travis med vårt projekt, kommer följande förutsättningar att vara till hjälp:
I hjärtat av att använda Travis är begreppet kontinuerlig integration (Cl). Låt oss säga att vi arbetar med en funktion och när vi är färdiga kodar, kommer vi vanligtvis bygga projektet för att skapa körbar samt andra filer som är nödvändiga för att köra applikationen. Efter att byggnaden är klar, omfattar bra metoder alla testen för att säkerställa att de passerar alla och allt fungerar som förväntat.
Det sista steget är att se till att det som vi kodade verkligen fungerar trots att vi integrerat det i huvudkoden. Vid denna tidpunkt bygger vi och testar igen. Om den integrerade byggnaden lyckas kan vi anse att funktionen har genomförts fullt ut. Travis CI automatiserar det här exakta steget för att utlösa en byggnad och test vid varje integration till huvudgrenen, andra grenar eller till och med en dragförfrågan, vilket accelererar tiden för detektering av en potentiell integrationsbugg.
I följande avsnitt kommer vi att ta ett enkelt projekt och utlösa en felaktig byggnad, korrigera den och sedan skicka den. Vi kommer också att se hur Travis CI enkelt fungerar med Github-dragförfrågningar.
När vi landar på huvudsidan kan vi också se "busyness" av många öppna källprojekt genom automatiserad byggnad. Låt oss avkonstruera gränssnittet och förstå de olika delarna:
Innan vi integrerar Travis CI skapar vi ett enkelt "hallo värld" -projekt och skapar några byggnadsuppgifter. Travis stöder olika programmeringsspråk, inklusive Python, Ruby, PHP och JavaScript med NodeJS. För vår demonstration ska vi använda NodeJS. Låt oss skapa en mycket enkel fil hello.js
enligt definitionen på NodeJS huvudwebbplats:
var http = kräver ('http'); http.createServer (funktion (req, res) res.writeHead (200, 'Content-Type': 'text / plain'); res.end ('Hello World \ n') misslyckas byggnaden). lyssna (1337, '127.0.0.1'); console.log ("Server som körs på http://127.0.0.1:1337/ ');
Lägg märke till att det saknas en halvkolon så att det senare kan JSHint, en JavaScript-linter, kunna upptäcka detta och göra ett fel. Vi kommer att bygga projektet genom att använda en uppdragslöpare som heter GruntJS som kommer att inkludera JSHint. Det här är givetvis en illustration, men i verkliga projekt kan vi fortsätta att inkludera olika test, publicering, linting och antydande uppgifter.
För att ange de olika paket som krävs för GruntJS, JSHint och andra, kommer vi att skapa en andra fil som heter package.json
. Den här filen innehåller för det första namnet och versionsnumret för vår enkla applikation. Därefter kommer vi att definiera de beroenden som behövs med devDependencies
vilket kommer att omfatta GruntJS-relaterade paket inklusive JSHint. Med skript
, vi kommer att berätta för Travis CI att börja köra testpaketet och kommandot grunt --verbose
. Låt oss se hela innehållet i filen: package.json
:
"namn": "node-travis", "version": "0.1.0", "devDependencies": "grunt": "0.4.1", "grunt-cli": "0.1.9", "grunt -contrib-jshint ":" 0.6.0 "," skript ": " test ":" grunt --verbose "
Låt oss sedan förbereda Gruntfile.js
som kommer att innehålla alla uppgifter som krävs för att driva vår byggnad. För enkelhet kan vi inkludera bara en uppgift - JavaScript linting med JSHint.
module.exports = funktion (grunt) grunt.initConfig (jshint: all: ['Gruntfile.js', 'hello.js']); grunt.loadNpmTasks ( 'grunt-contrib-jshint'); grunt.registerTask ('default', 'jshint'); ;
Slutligen kör vi byggnaden som innehåller endast en uppgift efter att vi hämtat alla relaterade paket med npm installera
:
$ npm installera $ grunt
Som förväntat kommer byggnaden inte att passera eftersom JSHint kommer att upptäcka en saknad halvkolon. Men om vi lägger halvkolonnen tillbaka in i hello.js
fil och kör grymta
kommando igen, vi kommer se att byggnaden kommer att passera.
Nu när vi har skapat ett enkelt projekt lokalt kommer vi att driva projektet till vårt Github-konto och integrera Travis CI för att utlösa byggandet automatiskt.
Det allra första steget i att integrera Travis CI är att skapa en fil som heter .travis.yml
som kommer att innehålla väsentlig information om miljön och konfigurationer för byggnaden att köra. För enkelhet kommer vi bara att inkludera programmeringsmiljön och versionen. I vårt enkla projekt är det NodeJS-versionen 0,10
. Det slutliga innehållet i filen .travis.yml
kommer att vara enligt följande:
språk: node_js node_js: - "0.10"
Nu kommer vårt projekt att bestå av följande filer tillsammans med README.md
och .gitignore
såsom krävs:
$ träd. | - .travis.yml | - Gruntfile.js | - hello.js | - .gitignore | - README.md '- package.json
Låt oss nu skapa ett git-repository och trycka på ett nytt fjärrförråd som finns på Github:
git init git commit -m "first commit" git fjärr lägg till ursprung [email protected]: [användarnamn] / [repository] .git git push -u ursprung master
Därefter loggar du in på Travis CI och godkänner Travis CI för att få tillgång till ditt Github-konto. Därefter besöker du din profilsida för att slå på kroken för Github-arkivet för att utlösa automatiserad byggnad med Travis CI.
Som ett sista steg för att utlösa vår allra första byggnad, måste vi trycka på Github. Låt oss ta bort halvkolonnen i filen hello.js
att göra en misslyckande byggnad och tryck sedan till Github. Detta kommer att utlösa den automatiska byggnaden i Travis CI. Låt oss besöka webbadressen: https://travis-ci.org/[username]/[repo]
för att se den första byggnaden pågår!
git lägg till hello.js git commit -m "borttagen semi-colon" git push
Denna felaktiga byggnad i ovanstående exempel är verkligen en enkel illustration. Men denna situation återspeglar någonting som kan hända i våra verkliga projekt - vi försöker integrera vår kod och den automatiska byggnaden misslyckas. Som standard kommer Travis CI att skicka e-post till författaren och förvaringsinnehavaren efter varje byggnad är klar. På så sätt kan utvecklaren som tryckte koden omedelbart varnas och kan sedan fixa integrationsfelen. I vårt fall, låt oss bara sätta in den saknade halvkolon och tryck till Github en gång till.
git lägg till hello.js git commit -m "lagt semi-colon för att passera build" git push
hurra! Den automatiska byggnaden har gått denna gång. Vår kod är integrerad och passerar alla nödvändiga test. Nu varje gång vi försöker integrera våra förändringar, oavsett om det är till huvudkontoret eller till och med andra grenar, kommer Travis CI att utlösa en automatiserad byggnad.
När vi väl har integrerat Travis CI i vårt projekt kommer en pull-förfrågan också att utlösa en automatisk byggnad. Detta är oerhört användbart för förvaringsinnehavaren eller utvecklaren som ansvarar för sammanslagning av kodbasen. Låt oss se hur Travis CI kommer att ge råd om huruvida dragförfrågan är bra att slå samman eller inte.
Först använder vi ett annat Github-konto, låt oss gaffla originalförrådet och dra begäran med följande steg:
För att simulera en felaktig byggnad i dragförfrågan kommer vi återigen att ta bort halvkolonnen i filen hello.js
, begå och tryck på ändringarna och slutligen dra begäran.
Vid varje dragförfrågan kommer Travis CI automatiskt att utlösa byggnaden. Den här gången kan vi också besöka "Pull Requests" fliken för att se historien om aktuella eller tidigare byggnader utlösas på grund av en dragförfrågan.
När Travis CI har slutfört byggnaden, kommer vi att se om Travis CI har lagt till några ändringar av användargränssnittet för att varna att byggnaden har misslyckats.
Denna felaktiga byggstatus kommer omedelbart att anmälas till förvaringsinnehavaren såväl som den utvecklare som gjorde dragförfrågan. Och nu, beroende på orsaken till den felaktiga byggnaden, kan den åtgärdas med ett annat engagemang i samma gren. Därför lägger vi till halvkolon och drar förfrågan en sista gång. Github uppdaterar också automatiskt begäran om draförfrågan.
Och äntligen, när vi kommer tillbaka till originalförrådets begäran om förfrågningsfrågan, kommer vi denna gång att se en "grön" signal för att gå vidare och göra en sammanslagning då vår byggnad passerar!
Filen .travis.yml
definierar byggkonfigurationerna. Vårt exempel ingår bara språktyp och version, men vi kan lägga till mer användbara som följer:
språk: ruby rvm: - 1.9.3
before_script: - git config - global användarnamn [myname]
meddelanden: email: false irc: "chat.freenode.net # travis"
.travis.yml
Som du kan se, filen .travis.yml
blir mycket viktigt för att utlösa automatiserade byggnader. Om den här filen inte är giltig kommer Travis CI inte att utlösa byggnaden på varje tryck till Github. Därför är det viktigt att se till att vi har en giltig fil som Travis CI tolkar korrekt. För detta installerar vi en pärla som heter travis-lint och kör filen .travis.yml
$ gem installera travis-lint $ travis-lint .travis.yml
Det är väldigt bra att ta med en liten bild för att indikera byggnadens nuvarande status. Bilden själv kan nås från URL-mönstret http://travis-ci.org/[username]/[repository-name].png
. Ett annat sätt att snabbt komma åt bilderna inbäddade i olika format finns på Travis CI-projektsidan själv. Till exempel kan vi kopiera Markdown-formatet och bädda in i projektets README.md
fil.
Ett annat coolt sätt att spåra byggstatuserna för olika öppna källprojekt medan du surfar runt Github är att installera en av webbläsartilläggen. Detta kommer att ställa byggnadsstatusbilderna framträdande bredvid varje av projektnamnen.
Här finns några resurser om begreppet kontinuerlig integrering samt att lära och integrera Travis CI i våra Github-projekt:
Ett fantastiskt sätt att lära sig vad och hur man ska inkludera de olika byggkonfigurationerna i .travis.yml
filen är att faktiskt bläddra igenom många av de populära open source-arkiverna som redan integrerar Travis CI. Här är några:
Jag hoppas det gav dig en kort introduktion till hur vi enkelt kan integrera Travis CI i våra Github-projekt. Det är väldigt enkelt att använda, så prova och gör kontinuerlig integration en bris för ditt lag!