Continue levering met fastlane voor iOS

Invoering

iOS-ontwikkelaars hebben het geluk gehad om te genieten van en te werken met het robuuste ontwikkelplatform dat Apple heeft geboden, voornamelijk Xcode. Dit heeft ertoe bijgedragen om de boeiende en krachtige apps die consumenten vandaag genieten in de App Store, te inspireren. Xcode biedt een intuïtieve IDE en dat, in combinatie met de opkomst van Swift als een echt moderne programmeertaal, heeft het programmeren op het platform puur genot gemaakt.

Hoewel het ontwikkelingsaspect van de workflow samenhangend is, wordt de workflow afgebroken als het gaat om de taken in verband met het ondertekenen van code en het distribueren van apps. Dit is al lang een probleem voor het platform en hoewel het stapsgewijs is verbeterd, is het voor bijna alle ontwikkelaars nog steeds een bottleneck. Dit heeft in veel opzichten de aanhoudende levering van apps onderdrukt, dat wil zeggen dat de behoefte aan handmatige opbouw en distributie van apps dagelijks intern en extern foutgevoelig en arbeidsintensief is.. 

Daar komt fastlane om de hoek kijken. De snelste reeks tools maakt het verspreiden van apps veel eenvoudiger, waardoor ontwikkelaars zich kunnen concentreren op hun apps en de tooling taken kunnen laten overnemen zoals het beheren van provisioningprofielen en -certificaten en het bouwen, verpakken en distribueren van apps. Een van de toolchains van fastlane is een geautomatiseerde continue turnkey-oplossing aan de kant van de klant die iOS-ontwikkelaars kunnen gebruiken om ervoor te zorgen dat hun apps voortdurend worden getest en gevalideerd door anderen, met minimale menselijke tussenkomst. 

Fastlane is ontwikkeld door Felix Krause (@krausefx) en bestaat uit een open-source softwarepakket dat de automatisering van het bouwen en implementeren van iOS-apps via de commandoregel verenigt, evenals integratie met verschillende externe bibliotheken naast de eigen API's van Apple. . Als een beetje een cult toolchain tussen iOS ontwikkelaars, en ondersteund door Google, zal fastlane je veel tijd besparen door veel van je handmatige dagelijkse en wekelijkse taken te automatiseren.

In deze zelfstudie onderzoeken we twee zeer populaire functies van fastlane: ondertekening van code en apps voor verpakking / distributie.

Doel van deze zelfstudie

In deze zelfstudie leert u de fastlane-toolchain kennen en leert u hoe u de tool kunt gebruiken om uw iOS-ontwikkelingsworkflow te automatiseren en optimaliseren. Je leert:

  • de basis van het starten met fastlane
  • code ondertekening van uw app
  • verpakken en distribueren van uw app

Aangenomen kennis

Deze tutorial gaat ervan uit dat je een goede kennis hebt van de ontwikkeling van Swift en iOS, hoewel je in deze tutorial geen Swift-codering zult doen. U gebruikt de opdrachtprompt om fastlane-opdrachten te maken en uit te voeren. 

Aan de slag met fastlane

De fastlane-toolchain is hoofdzakelijk geschreven in Ruby en maakt via het ruimteschip Ruby-bibliotheek verbinding met het Apple Developer Center en de iTunes Connect API, zodat gebruikers veilig worden geverifieerd en geautoriseerd. Het werkt rond het maken van een configuratiebestand, een Fastfile genaamd, dat u kunt beschouwen als een receptbestand waarin u de acties instelt die u wilt uitvoeren wanneer u uw app bouwt. Deze acties zijn georganiseerd in "rijstroken". U zou bijvoorbeeld een rijbaan configureren voor implementatie in de App Store en een andere rij voor distributie naar TestFlight. Een rijstrook zou kunnen bestaan ​​uit de volgende individuele acties:

  1. uw project bouwen
  2. het buildnummer verhogen
  3. lopende unit tests
  4. uw verzenden .ipa naar TestFlight
  5. een Slack-bericht verzenden naar uw team

Je kunt rijstroken beschouwen als functies die gerelateerde taken groeperen. U kunt zelfs rijstrookmethoden uit een andere halen om uw rijstroken verder te ontkoppelen en opnieuw te gebruiken. 

Maar voordat we in de fastlane-acties duiken, moet je je omgeving instellen om fastlane te gebruiken.

Fastlane instellen

Zorg ervoor dat je de nieuwste versie van Xcode hebt geïnstalleerd. U moet ook Xcode Tools op uw systeem geïnstalleerd hebben. U kunt controleren of Xcode Tools is geïnstalleerd door het volgende in te voeren in de terminal:

xcode-select -p

Als u het volledige pad naar uw ontwikkelaarsmap terug krijgt, bent u klaar om te gaan. Je zou zoiets als het volgende moeten zien.

$ /Applications/Xcode.app/Contents/Developer

Anders krijgen we de nieuwste versie van de Xcode-opdrachtregelhulpprogramma's door het volgende te typen in terminal:

xcode-select - installeren

U zou een prompt moeten krijgen die lijkt op het volgende: 

Vervolgens moet je Homebrew installeren. Homebrew is een krachtige pakketbeheerder waarmee je honderden open-source tools kunt installeren, waaronder fastlane. Als u Homebrew wilt installeren, typt u het volgende in de opdrachtregel:

/ usr / bin / ruby ​​-e "$ (curl -fsSL https://raw.githubusercontent.com/

Nadat Homebrew is ingesteld, kunt u fastlane installeren door het volgende in te voeren:

brouwt vat monteer fastlane

Merk op dat als je de voorkeur geeft om Homebrew niet te installeren, je fastlane rechtstreeks in de terminal via ruby ​​kunt installeren door het volgende in te voeren:

sudo gem installeert fastlane -NV

Om te bevestigen dat fastlane op uw systeem is geïnstalleerd en gereed is, voert u de volgende opdracht in de terminal in om een ​​nieuw fastlane-configuratiebestand te initialiseren:

fastlane init

U wordt gevraagd om uw Apple ID in te voeren zodat fastlane naadloos verbinding kan maken met iTunes Connect. Vul eventuele andere vragen in en u ziet een nieuwe / fastlane subdirectory aangemaakt voor u. Je gaat je in de eerste plaats bezighouden met de / Fastlane / Fastfile configuratiebestand, waarin u al uw fastlane-acties orkestreert. 

Bekijk het bestand snel. Je zult er in de volgende paar secties aan werken, beginnend met het configureren van fastlane om je apps te ondertekenen. 

Code die uw apps ondertekent

Een van de meest populaire functies van fastlane als toolchain is dat u uw apps automatisch kunt coderen, waardoor u de beproeving van het omgaan met certificaten en provisioningprofielen vermijdt. Dit kan een hoop werk zijn en bovendien moet je het helemaal opnieuw doen wanneer je van machine verandert of aan boord van een nieuw teamlid bent. Fastlane biedt drie acties die u helpen bij het beheren van uw ondertekening van de code: cert, zucht en match. 

Hoewel cert, hoewel het op zichzelf nuttig is, meestal samenwerkt met zucht om het proces van het ondertekenen van de code van uw app te voltooien, door respectievelijk uw certificaten en provisioningprofielen te beheren. Het maakt niet alleen het certificaat voor u aan, maar zal indien nodig automatisch een nieuwe ondertekeningsverzoek voor persoonlijke sleutels genereren, evenals het certificaat ophalen en installeren in uw sleutelhanger, en ervoor zorgen dat uw certificaat geldig is elke keer dat u cert uitvoert. 

zucht maakt het overeenkomstige inrichtingsprofiel voor uw certificaat voor ontwikkeling, ad hoc of de App Store. Net als cert zorgt zucht ervoor dat dit provisioningprofiel actueel blijft, wordt opgehaald en in uw sleutelhanger wordt geïnstalleerd. Samen vormen deze twee het code-ondertekenende paar voor uw app. Maar voordat je leert om cert en zucht te gebruiken, is er nog een gerelateerde actie die ik wil introduceren: match. 

match combineert de twee voorgaande acties, maar biedt je de mogelijkheid om je code voor ondertekening van je code te delen met je eigen GitHub-repository, en alle nodige certificaten en profielen te maken zodat nieuwe leden die inloggegevens eenvoudig kunnen krijgen het commando fastlane aanroepen wedstrijd. Raadpleeg de nieuwe aanpak voor het ondertekenen van code voor meer informatie over het begrip overeenkomst.

Om het gebruik van cert te starten, voert u de volgende opdracht uit: 

fastlane cert

Evenzo, om zucht uit te voeren:

fastlane zucht

Als u een lijst met opties cert of zucht biedt wilt zien, kunt u dit doen met de volgende opdrachten:

fastlane actie cert ... fastlane actie zucht

Naast het ad hoc uitvoeren van deze opdrachten, kunt u een of beide acties opnemen als onderdeel van uw geautomatiseerde workflow, in het configuratiebestand van Fastfile dat ik eerder noemde:

baan: TestApp doe cert # of de alias get_certificates zucht # of de alias get_provisioning_profile end

U kunt dan de volledige baan uitvoeren door de volgende opdracht uit te voeren:

fastlane TestApp

Met twee eenvoudige regels profiteert u er nu van dat uw certificaten en provisioningprofielen voor u worden gemaakt en automatisch worden bijgehouden. Vervolgens zul je ingaan op hoe fastlane kan helpen bij het verpakken en distribueren van je apps.

Pakket & distribueer uw apps 

De volgende twee acties waarover je meer te weten komt zijn gym en deliver, waarmee je je app kunt bouwen, verpakken en distribueren naar TestFlight of de App Store. gym bouwt en verpakt uw app via een enkele commandoregel, genereert een ondertekend ipa-bestand voor u. 

Door dit te automatiseren als onderdeel van uw Fastfile, kunt u bouwen en verpakken activeren via een continue integratieworkflow en de laatste versie van uw app dagelijks of elk uur in handen hebben van gebruikers. Om je app via fastlane te verpakken, kun je gewoon het volgende doen:

fastlane gym

Als u een bepaalde werkruimte en een specifiek schema wilt opgeven, kunt u de volgende optionele parameters toevoegen:

fastlane gym --workspace "YourApp.xcworkspace" --scheme "AppSchemeName" 

Net als Fastfile, fastlane biedt een handig configuratiebestand met de naam a Gymfile waar u al uw buildspecifieke opdrachten kunt opslaan, zoals uw werkruimte, schema's en meer, waardoor u niet telkens opnieuw hoeft te typen of deze binnen uw Fastfile configuratiebestand. Om een ​​nieuw te maken Gymfile, vul gewoon het volgende in:

fastlane gym init

Vervolgens kunt u dat bestand bewerken en de configuratieparameters invoeren die nodig zijn voor uw project.

De volgende stap is dat het overnemen van de plaats waar de sportschool is gestopt, door het distribueren van uw .ipa bestand zonder dat je door Xcode hoeft te gaan. Als tegenhanger van sportschool is deliver niet alleen in staat om jouw te leveren .ipa binair bestand maar uploadt ook uw schermafbeeldingen en metadata naar iTunes Connect voor u, evenals uw app in de App Store. 

De actie kan ook uw bestaande screenshots en metadata downloaden van iTunes Connect. De eenvoudigste actieopdracht is om te bellen:

fastlane levert init

Het eindresultaat is een map met metadata en schermafbeeldingen samen met het configuratiebestand Deliverfile, die vergelijkbaar is met de Gymfile en Fastfile

U kunt vervolgens de inhoud van die submappen wijzigen om de metadata van uw app te wijzigen. Om je metadata te uploaden, voer je:

fastlane leveren

Voeg de volgende parameters toe om uw app ter beoordeling in te dienen:

fastlane bezorgen --ipa "App.ipa" --submit_for_review

Om metadata of schermafbeeldingen te downloaden, voegt u de volgende parameters toe:

fastlane leveren download_metadata ... fastlane leveren download_screenshots

U kunt uw schermafbeeldingen binnen de / screenshots sub-map, maar fastlane biedt nog een actie die het genereren van screenshots voor u kan automatiseren. Hoewel schermafbeeldingen buiten het bestek van dit artikel vallen, kunt u er meer over lezen in een toekomstig fastlane-artikel. 

Net als bij de vorige reeks acties kunt u ofwel een fitnessruimte uitvoeren en zelfstandig leveren of deze opnemen als onderdeel van uw automatiseringsworkflow, binnen Fastfile:

baan: TestApp do cert sigh gym (schema: "AppSchemeName", werkruimte: "YourApp.xcworkspace") # alias voor "build_ios_app" speling einde

Conclusie

Door continue levering door automatisering mogelijk te maken, neemt fastlane de last van arbeid van iOS-ontwikkelaars af met een één-klik turnkey-oplossing voor bouwen, verpakken, distribueren, coderen, screenshot genereren en nog veel meer. Deze tutorial krabt slechts het oppervlak van wat mogelijk is met fastlane, en in volgende artikelen zullen we meer acties onderzoeken die je kunt implementeren om je workflow verder te automatiseren en optimaliseren. 

Van het genereren van gelokaliseerde screenshots tot de diepe integratie met prominente tools zoals Jenkins CI, Git, Crashlytics, HockeyApp en Slack, fastlane is net zo essentieel als CocoaPods voor je iOS-toolkit voor ontwikkeling. Het heeft een krachtige community met plug-ins van derden en wordt ook ondersteund door Google.

Je kunt ook alles te weten komen over de kunst van continue levering en fastlane in mijn boek Continue levering voor mobiel met fastlane, verkrijgbaar bij Packt Publishing.

En terwijl je hier bent, bekijk enkele van onze andere berichten over de ontwikkeling van iOS-apps!