chewie
Det å produksjonssette endringer i et prosjekt er egentlig ikke en veldig tidkrevende prosess. Vi i Webkom leter likevel alltid etter muligheter til å lage kompliserte løsninger på enkle problemer, og denne gangen er chewie resultatet.
chewie er skrevet i bailey.js, et språk som kompilerer til JavaScript, laget av Webkom-medlemmene Håkon Erichsen og Rolf Erik Lekang. chewie kommer med to måter å produksjonssette prosjekter på, gjennom GitHub-webhooks og gjennom et webgrensesnitt.
Ved hjelp av webhooks blir chewie informert om alle GitHub-status-events. Disse sendes etter at testene er kjørt, og prosjekter vil dermed kun produksjonsettes om testene gir grønt lys. chewie mottar webhooks via en POST-request, som så blir verifisert for å sjekke at den faktisk kom fra GitHub. Deretter bekreftes det at det faktisk var master-branchen som ble pushet til, før chewie setter i gang med produksjonssettingsprosessen.
Denne håndteres av Fabric, som ved hjelp av en config-fil vet hvilke prosjekter som hører til hvilke servere. Dette gjør at chewie, via SSH, kan koble til serverne og produksjonssette prosjekter som har blitt oppdatert.
For øyeblikket brukes webhooks på alle våre prosjekter, og de vil dermed alltid kjøre en så ny versjon som mulig. Selv om dette gjør utviklingsprosessen lettvint er det fint å ha mulighet til å produksjonssette prosjekter manuelt og, på en generell måte. Dette kan man gjennom webgrensesnittet, hvor chewie lister prosjektene som vist under. Da det er brukt WebSockets vil man også få tilbakemeldinger presentert i sanntid i løpet av prosessen.
chewie er open-source, og kildekoden er tilgjenglig på GitHub (vi tar gjerne i mot pull-requests). Selv om webfrontenden til chewie kun er tilgjenglig for Webkom-medlemmer er det ingenting i veien med å forke chewie dersom du vil bruke det til egne prosjekter.