Amarengo

Articles and news

opsætning af Jenkins til Android: Hvordan jeg håndterede de udfordringer, jeg stod overfor

i denne artikel vil jeg dokumentere min rejse for at opnå et fuldt fungerende kontinuerligt integrationssystem ved hjælp af Jenkins. Denne opsætning passer til mit arbejdsmiljø, som har flere projekter, der bruger de samme 4 moduler til forretningslogik.

for det første hentede jeg Jenkins fra den officielle hjemmeside. Så åbnede jeg terminalen og kørte følgende kommando:

java -jar jenkins.war --httpPort=9091

jeg specificerede en anden port end den sædvanlige 8080 for at gøre den unik og undgå fejl, hvis en anden tjeneste bruger Jenkins.

når du har gennemført alle installationstrinnene, er det vigtigt at sikre, at følgende plugins er installeret:

  1. Git Plugin
  2. Gradle Plugin
  3. Android Lint Plugin
  4. Google Play Android Publisher Plugin

disse plugins sikrer, at Jenkins har de tilstrækkelige værktøjer til at opbygge et Android-projekt.

det næste trin er at opsætte følgende indstillinger i Jenkins:

  1. opsætning af JDK til Jenkins

jeg opdagede, at JDK-sektionen så ud som følger efter at have klikket på Administrer Jenkins – > Global Værktøjskonfiguration:

grundlæggende JDK-konfiguration

jeg klikkede derefter på Tilføj JDK og udfyldte derefter følgende formular:

Tilføj JDK Installationsvisning

jeg skrev et navn, der repræsenterer den valgte version og valgte versionen fra Installer fra java.sun.com (Bemærk: Jenkins vil spørge om dine Oracle-kontooplysninger for at installere JDK).

på den samme globale Værktøjskonfigurationsside fandt jeg derefter Gradle-plugin-indstillingerne, hvor jeg tilføjede en Gradle-installation, der har den samme version som den Gradle, der blev brugt i mine projekter. For at undgå yderligere forvirring, Jeg kører projekter med Gradle indpakning, som jeg vil diskutere mere dybtgående i det kommende afsnit.

Gradle installation se

jeg sørgede også for, at navnet repræsenterer den valgte version for at undgå forvirring.

normalt vil Gradle søge i det lokale.egenskaber fil i projektet for at hente Android SDK placering. Men når du bruger Jenkins, jeg opdagede, at dette måske ikke altid er tilfældet, især når du bruger Gradle-indpakningen.

for at undgå byggefejl tilføjede jeg ANDROID_HOME i Jenkins-miljøvariablerne. Dette opnås gennem Manage Jenkins – > konfigurer systemet og kontroller derefter miljøvariablerne herinde:

Global Properties Section

og tilføje en variabel med navnet ANDROID_HOME og udfylde værdien med stien til SDK.

Tilføj miljøvariabel

efter at have opnået alle disse trin begyndte jeg at oprette et nyt element i Jenkins. De fleste af mine projekter er afhængige af 4 vigtigste android-moduler, der er inkluderet i Git-depotet som Git-undermoduler.

opsætning af en ny vare er ret let, hvis du ikke har nogen undermoduler:

ny vare side

Indtast blot navnet og vælg Freestyle project og tryk på OK.

gå derefter til Kildekodestyring. Jeg bruger normalt Git og opsætter repo:

Kildehåndteringsafsnit

Indsæt repo-URL ‘ en, og tilføj legitimationsoplysninger, hvis du ikke allerede har gjort det. Nu er tricket her at sikre, at hvis du bruger et HTTPS-link til repo, så skal du tilføje brugernavn og adgangskode type legitimationsoplysninger, ellers hvis du bruger SSH, skal du tilføje SSH type legitimationsoplysninger.

hvis du har undermoduler i git repo, så er den nemmeste måde at håndtere dette på gennem yderligere adfærd – > Tilføj- > avancerede undermodulers adfærd og gør følgende:

  1. kontroller rekursivt Opdater undermoduler
  2. i stien til referencerepo, der skal bruges under undermodulopdatering, skal du tilføje det undermodulmappenavn, der bruges i den overordnede repo.
  3. i mit tilfælde kan både overordnede og undermoduler bruge de samme legitimationsoplysninger, så jeg kontrollerede brug legitimationsoplysninger fra standardfjernbetjening af overordnet lager.

avancerede undermodulers adfærd

Tilføj så mange af dem som antallet af inkluderede undermoduler, og sørg også for, at hvis den overordnede repo-url er HTTPS, linker undermodulerne inde .gitmodules bør også bruge HTTPS. Det samme gælder for SSH.

for at kunne opbygge projektet skal Jenkins påberåbe sig Gradle script. Den mest effektive måde er at fortælle Jenkins at udføre projektets Gradle indpakning og definere opgaverne (clean, assembleDebug osv…)

Tilføj Byg trin menu

Invoke Gradle Script sektion

for at undgå tilladelse nægtet fejl, gør Gradle eksekverbar er markeret, og opgaverne er angivet.

Jenkins inkluderer en lang række handlinger, der skal træffes, når bygningen er afsluttet.

den mest ligetil måde at automatisk offentliggøre projektet på play butik ved hjælp af Android play store publishing plugins kan findes her.

et par bemærkninger om udgivelse til butikken

når du sender en ny APK til butikken, skal versionskoden øges. For at automatisere dette lavede jeg dette uddrag til reference.

når du tilføjerde seneste ændringer del i Jenkins, skal du sørge for at vælge det samme sprog som det sprog, der findes i beskrivelsen til butikslisten:

det sidste afsnit er, hvordan man udløser builds automatisk. For mit projekt er versionskontrollen efter mit valg bitbucket. For at sætte det op, Jeg fulgte denne Viki. Men der er en fangst, for at netkrogene skal fungere, skal du have Jenkins på en internetserverindstilling. I første omgang gjorde jeg det ikke, så Internettet virkede ikke. Jeg overvandt dette ved at udløse andre builds, efter at et bestemt projekt er bygget med succes. Dette løste mit problem, da jeg primært udvikler de 4 vigtigste undermoduler i et dummy-projekt og derefter trækker dem i alle de andre projekter.

dette kan gøres i afsnittet Build Triggers lige over Build:

Build Triggers sektion

mine fremtidige skridt vil være at drage fordel af Jenkins og automatiseret test, både gennem jUnit test og Android instrumentering test.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.