's Picture

Deploy One: An Automatization Story

Postad av Lenny Nilsson under Android, fastlane, automatization, CI, CD, Ruby, Rake

Under 2016 skedde stora förändringar med våra Android-appar. På ytan verkar allt som vanligt men en halv miljon rader kod ändrades sedan året innan. I och med ett större team och större ambitioner inför 2017 har vi i Android-teamet automatiserat vårt distributionsförfarande.

I Android-teametet använder vi en hybrid mellan Git flow och Github flow i vårt dagliga arbete. All kod hostas på Github. Sedan tidigare har Travis agerat byggserver för tester av dagliga pull requests. Vårt team för iOS-utveckling har sedan länge använt Fastlane för att automatisera distributionen av nya appversioner. I och med att Twitter implementerat stöd för Android i Fastlane fick vi i Androidteamet också upp ögonen för ramverket.

Twitter står som sagt bakom Fastlane. Det är en samling ”lanes” (eller ”tasks”) som är byggt på Ruby och Rake (Ruby make). Fastlane underlättar integrationen med vanliga tjänster som Google Play, iTunes Connect, Slack, Github, m.m.

Tidigare rullade vi ut nya releaser genom 24 (!) manuella moment. Genom att automatisering har vi kunnat reducera antalet moment till 4 st. Dessa moment är också förenklade till en knapptryckning eller ett kommando i terminalen.

1. Create staged release

Genom ett enkelt kommando från terminalen kan man skapa en staged release. En ny branch skapas och alla app-versioner uppdateras. Efter att alla enhetstester körts och apk-paket för alla app-varianter har byggts läggs denna ändring i en ny commit. Därefter skapas en staged release tag på Github som innehåller alla apk-paket och en genererad release log.

2. Manual testing


Innan en app släpps publikt testas den på olika fysiska enheter för att upptäcka potentiella buggar.

3. Publish release

Genom att publicera den draftade release som skapats i Github kommer byggservern Travis att leverera apk-paketen till Playstore med hjälp av Fastlane.

4. Publish app to play


I detta steg publiceras appar till Play store. Man kan välja vilken/vilka varianter som ska publiceras och till hur stor del av användarbasen.

A. Fix issues


Åtgärda eventuella buggar genom en ny branch.


B. Integrate changes

Integrera branches med buggfixar i en release genom att skapa pull requests från release branch.
Byggsystemet Travis kör alla integrationstester för varje pull request.

Ω. Revert release

Om något skulle gå väldigt fel kan release hävas genom ett enkelt kommando från terminalen.

Slack

Vi använder Slack som kommunikationskanal på utvecklingsavdelningen. Bygg- och release-scripten underrättar oss om vad som händer med hjälp av automatiskt skapade Slack-meddelanden.

Logotyper använda i denna bloggpost:
Github, Terminal, Android Studio, Android, Google Play, Slack

PS. Missa inte vår nästa bloggpost, följ oss på Twitter!

Till startsidan