hoe voeg je je eerste Android-taak toe aan Jenkins

nieuw: we hebben zojuist een nieuw ebook uitgebracht: de Jenkins Starter Guide, die alle informatie bevat in deze reeks van vier berichten en meer. Ga naar onze Resources pagina om te downloaden.

in het geval u onze eerste paar posts in deze serie hebt gemist, of als u niet zeker weet wat Jenkins of CI is, ga dan terug en lees: Wat is Jenkins en waarom zou u het moeten gebruiken?

dit is een stap-voor-stap handleiding voor het opzetten van Jenkins om Android apps te bouwen en te testen. In deze demo zullen we een voorbeeld applicatie gebruiken met behulp van Bugfender SDK in Android. U zult natuurlijk wilt gebruik maken van uw eigen ingebouwde Android-applicatie of bibliotheek. De stappen voor het toevoegen van uw eigen Android-project aan Jenkins zal hetzelfde zijn.

iOS-apps bouwen? Houd een oogje op het volgende artikel in deze serie binnenkort.

Ten eerste moet u de machine voorbereiden om Android-applicaties te compileren en uit te voeren. Als je Jenkins nog niet hebt geïnstalleerd, kun je de stappen in het vorige bericht volgen om Jenkins op je server te installeren.

configureren van Android App Builds in Jenkins

Stap 1: Installeer Java JDK

sudo apt-get install java-8-openjdk

Stap 2: installeer Android SDK

Ga naar https://developer.android.com/studio/index.html#downloads, en pak de link in de tabel voor Krijg alleen de command line tools > Linux. Download niets, kopieer gewoon de link.

sudo apt-get install unzip# here you paste the link you grabbed in the developer.android.com sitesudo -iu jenkins wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zipsudo -iu jenkins mkdir android-sdksudo -iu jenkins unzip sdk-tools-linux-3859397.zip -d android-sdk# this step is important to accept the Android SDK licenseyes |sudo -iu jenkins android-sdk/tools/bin/sdkmanager --licenses

Wees een superheld

bugs afweren en uw gebruikers veilig houden.

gebruik Bugfender vandaag gratis

Stap 3: Configureer Jenkins

log vervolgens in op Jenkins en configureer de Android SDK die u zojuist hebt geïnstalleerd:

Open https://your-ci-server-name.com in uw browser. Je zult zoiets als dit zien.:

  • Ga naar Jenkins beheren > systeem instellen
  • Vink “omgevingsvariabelen”
  • naam toevoegen: ANDROID_HOME
  • waarde toevoegen: / var / lib / jenkins / android-SDK
  • klik op “Apply” en vervolgens op “Save””

Stap 4: Maak een Android-taak

ga nu terug naar de startpagina. Klik op nieuw Item. Voer uw projectnaam in en selecteer “Freestyle project.”

Stap 5: Je Code downloaden naar Jenkins

vervolgens moet je een link toevoegen aan je repository zodat Jenkins je code kan downloaden. Specificeer de GIT URL van je repository in de Source Code Management sectie. Zoals gezegd, gaan we deze voorbeeldrepository gebruiken: https://github.com/bugfender/BugfenderSDK-android-sample.git.

als u een Mercurial-of Subversion-repository hebt, werken deze op exact dezelfde manier. Als je een privé repository hebt, kun je ook SSH sleutels aanmaken om toegang te krijgen tot je repository met het GIT protocol.

Stap 6: het configureren van Jenkins Build Triggers

u kunt ook Build Triggers opgeven waarmee het project automatisch voor u wordt gebouwd. Het is het beste om een hook te gebruiken om builds automatisch te activeren wanneer iemand code naar de repository pusht.

voor BitBucket, Gitlab en de meeste Git providers, kun je de optie “Trigger builds Remote” gebruiken. Dit geeft een URL die u kunt configureren als een webhook in uw provider om automatisch een build te starten.

voor GitHub gebruikers is het makkelijkst om de “GitHub plugin” te vinden en te installeren (in Manage Jenkins > Manage Plugins) en een GitHub specifieke optie zal verschijnen. Dit zal de webhook voor u installeren.

Stap 7: Build

zodra u de broncode in Jenkins hebt, is het tijd om te bouwen. Als uw project heeft een Gradle wrapper, dat is wat je moet gebruiken. In ons geval, zullen we een aanroepen Gradle script build stap als deze:

als je een Ant-gebaseerd project hebt, is er ook een Invoke Ant build step of voor maximale flexibiliteit kun je de Execute shell build step gebruiken.

Test je build door op “Save”

te drukken en dat is het. Je eerste Android project is toegevoegd aan Jenkins. Nu kunt u overwegen om Gradle te versnellen en het opzetten van geautomatiseerde testen in Jenkins.

begin Bugs sneller te repareren nu gratis

Bugfender is de beste remote logger voor mobiele apps.

aanmelden

Gradle versnellen (optioneel)

als je builds draait op basis van Gradle, kun je wat bouwtijd besparen door Gradle als daemon uit te voeren. Om het aan de gang te krijgen doe het volgende:

mkdir -p /var/lib/jenkins/.gradleecho org.gradle.daemon=true | sudo -iu jenkins tee -a /var/lib/jenkins/.gradle/gradle.properties

Unit Tests

Als u unit tests wilt uitvoeren, kunt u dit doen door een andere build stap toe te voegen met de test Gradle taak, zoals dit:

integratietests

om UI-tests in te stellen, moet u een emulator uitvoeren. Hoewel Jenkins heeft een Android Emulator Plugin, we hebben ontdekt dat het niet is bijgewerkt en werkt niet meer met de nieuwste versies van de Android SDK. Hier is onze voorgestelde oplossing:

Stap 1: Download de emulator. Om een lijst van de beschikbare SDK ‘ s, uitvoeren:

sudo -iu jenkins android-sdk/tools/bin/sdkmanager --list --verbose

snelle opmerking over het selecteren van de juiste afbeelding voor u: x86 gebaseerde afbeeldingen draaien sneller, maar hebben ook hardwareversnelling nodig. Mogelijk moet u KVM acceleration (sudo modprobe kvm) inschakelen op uw server en uw server kan geen virtuele machine zijn. Daarom kiezen we voor een ARMBEELD, dat langzamer loopt maar werkt.

Stap 2: in ons geval, we zijn op zoek naar onze applicatie uit te voeren op Android SDK level 25, dus system-images; android-25;google_apis; armeabi-v7a lijkt geschikt, dan installeren we het op deze manier:

sudo -iu jenkins android-sdk/tools/bin/sdkmanager 'system-images;android-25;google_apis;armeabi-v7a'

Stap 3: Eenmaal geïnstalleerd, we maken een Android virtueel apparaat (een emulator bijvoorbeeld) met het:

echo no | $ANDROID_SDK_ROOT/tools/bin/avdmanager -v create avd --force --package 'system-images;android-25;google_apis;armeabi-v7a' --name Android25 --tag google_apis --abi armeabi-v7a

Stap 4: dan gebruiken we Supervisord om de Android emulator draaien als een systeem service, altijd op de achtergrond. Om het te installeren:

sudo apt-get install supervisor

maak vervolgens een configuratiebestand aan in /etc/supervisor/conf.d/emulator.conf:

command=/var/lib/jenkins/android-sdk/emulator/emulator -avd Android25 -no-window -noaudio -no-boot-anim -accel on -ports 5556,5557autostart=trueuser=jenkinsenvironment=ANDROID_SDK_ROOT=/var/lib/jenkins/android-sdk

Stap 5: zodra dit is gedaan, herstart supervisord om de wijzigingen toe te passen:

sudo service supervisor restart

de emulator moet op de achtergrond starten. Het kan 1-2 minuten duren. U ziet de emulator apparaat verschijnen in de lijst apparaten wanneer het klaar is:

sudo -iu jenkins android-sdk/platform-tools/adb devices

Stap 6: Voeg In de Jenkins taak een Execute shell build stap toe zoals deze:

Code:

ANDROID_SERIAL=emulator-5556# wait for emulator to be up and fully booted, unlock screen$ANDROID_HOME/platform-tools/adb wait-for-device shell 'while ]; do sleep 1; done; input keyevent 82'./gradlew connectedAndroidTest

volgende stappen

er zijn meer opties zoals het uitvoeren van een Android emulator, het installeren van de applicatie, en het uitvoeren van verschillende tests op het.

daarnaast zijn er een aantal echt interessante plugins waarmee je kunt spelen:

  • Android Emulator Plugin-op dit moment werkt deze plugin niet goed met de nieuwste Android SDK. Maar onze beste gok is dat ze het zullen repareren en het zal snel weer werken. Als alternatief kunt u een oudere SDK-versie gebruiken.
  • Android Signing Plugin
  • Google Play Android Publisher Plugin

voor meer berichten in deze serie, check out:

  • Wat is Jenkins en waarom zou je het gebruiken?
  • Jenkins installeren in Ubuntu
  • uw eerste iOS-Taak toevoegen aan Jenkins

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.