Amarengo

Articles and news

Sette Opp Jenkins For Android: Hvordan jeg håndterte utfordringene jeg møtte

I denne artikkelen vil jeg dokumentere min reise for å oppnå et fullt fungerende kontinuerlig integrasjonssystem ved Hjelp Av Jenkins. Dette oppsettet passer til arbeidsmiljøet mitt som har flere prosjekter som bruker de samme 4 modulene for forretningslogikk.

for det Første lastet Jeg Ned Jenkins fra den offisielle nettsiden. Da åpnet jeg terminalen og kjørte følgende kommando:

java -jar jenkins.war --httpPort=9091

jeg angav en annen port enn den vanlige 8080 for å gjøre den unik og unngå feil, hvis en annen tjeneste bruker Jenkins.

etter å ha fullført alle oppsettstrinnene, er det viktig å sikre at følgende plugins er installert:

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

disse pluginene vil sikre At Jenkins har tilstrekkelige verktøy for å bygge Et Android-prosjekt.

det neste trinnet er å sette opp følgende innstillinger I Jenkins:

  1. Sette OPP JDK for Jenkins

jeg oppdaget jdk-delen for å se slik ut etter å ha klikket Administrer Jenkins – > Global Verktøykonfigurasjon:

Grunnleggende jdk-konfigurasjon

jeg klikket Deretter På Legg TIL JDK og fylte opp følgende skjema:

Legg TIL Jdk Installasjonsvisning

jeg skrev inn et navn som representerer den valgte versjonen og valgte versjonen Fra Installer fra java.sun.com (Merk: Jenkins vil spørre Om Din Oracle-kontoinformasjon for å installere JDK).

på Samme Globale Verktøykonfigurasjonsside fant jeg Gradle-plugin-innstillingene der jeg la Til En Gradle-installasjon som har samme versjon som Gradle som brukes i mine prosjekter. For å unngå ytterligere forvirring kjører jeg prosjekter Med Gradle wrapper som jeg vil diskutere mer i dybden i den kommende delen.

Gradle installation view

jeg sørget også for at navnet representerer den valgte versjonen for å unngå forvirring.

Vanligvis vil Gradle søke lokalt.egenskaper fil i prosjektet for å hente Android SDK plassering. Men når jeg brukte Jenkins, oppdaget jeg at dette kanskje ikke alltid er tilfelle, spesielt når Du bruker Gradle wrapper.

for å unngå byggefeil, la JEG TIL ANDROID_HOME i Jenkins-miljøvariablene. Dette oppnås Gjennom Manage Jenkins – > Konfigurer Systemet og kontroller miljøvariablene her:

Global Properties Section

og legge til en variabel med navnet ANDROID_HOME og fylle verdien med banen TIL SDK.

Legg Til Miljøvariabel

etter å ha oppnådd alle disse trinnene, begynte jeg å lage et nytt element I Jenkins. De fleste av mine prosjekter stole på 4 hoved android moduler som er inkludert I Git repository Som Git submodules.

Det Er ganske enkelt Å Sette opp et nytt element hvis du ikke har noen undermoduler:

New Item Page

bare skriv inn navnet Og velg Freestyle project OG trykk OK.

Deretter går Du Til Kildekodehåndtering. Jeg bruker Vanligvis Git og setter opp repo:

Source management section

Sett inn repo-URL-ADRESSEN og legg til legitimasjon hvis du ikke allerede har gjort det. Nå trikset her er å sikre at hvis du bruker EN HTTPS link for repo, så må du legge til brukernavn og passord type legitimasjon, ellers hvis DU bruker SSH deretter legge SSH type legitimasjon.

hvis du har submoduler i git repo, er Den enkleste måten å håndtere Dette På, Gjennom Tilleggsadferd – > Add – >Avanserte delmoduleradferd og gjør følgende:

  1. Sjekk rekursivt oppdatere submoduler
  2. i Banen til referanse repo å bruke under submodule oppdatering, legge til submodule mappenavnet som brukes i den overordnede repo.
  3. i mitt tilfelle kan både foreldre og undermoduler bruke samme legitimasjon, så jeg sjekket Bruk legitimasjon fra standard ekstern av overordnet depot.

Avansert sub-moduler atferd

Legg til så mange av dem som antall submoduler inkludert og også sikre at hvis den overordnede repo url ER HTTPS, deretter submodules link inne .gitmoduler bør også bruke HTTPS. Det samme gjelder FOR SSH.

For å kunne bygge prosjektet, Må Jenkins starte Gradle-skriptet. Den mest effektive måten er å fortelle Jenkins å utføre prosjektets Gradle wrapper og definere oppgavene(clean, assembleDebug, etc…)

Legg Bygge trinn-menyen

Invoke Gradle Script Section

For å unngå tillatelse nektet feil, Gjør Gradlew kjørbar er sjekket og oppgavene er spesifisert.

Jenkins inkluderer et bredt spekter av handlinger som skal tas når byggingen er fullført.

den mest rett frem måte å automatisk publisere prosjektet på play-butikken ved Hjelp Av android play-butikken publisering plugins finner du her.

noen kommentarer om publisering til butikken

når du sender inn en ny APK til butikken, må versjonskoden økes. For å automatisere dette, laget jeg denne koden som referanse.

i Tillegg må du kontrollere at du velger samme språk som språket som finnes i beskrivelsen for butikkoppføringen når du legger til den nyeste Delen Av Endringene I Jenkins:

den siste delen er hvordan du utløser bygger automatisk. For prosjektet mitt er versjonskontrollen av mitt valg bitbucket. For å sette det opp, fulgte jeg denne wikien. Men det er en fangst, for at webhooks skal fungere må Du ha Jenkins på en webserverinnstilling. I utgangspunktet gjorde jeg ikke så webhook fungerte ikke. Jeg overvant dette ved å utløse andre bygg etter at et bestemt prosjekt er vellykket bygget. Dette løste problemet mitt da jeg hovedsakelig utvikler 4-hovedmodulene i et dummy-prosjekt, og trekker dem i alle de andre prosjektene.

Dette kan gjøres i Build Triggers-Delen like Over Build:

Build Triggers Section

mine fremtidige skritt vil være Å dra nytte Av Jenkins og automatisert testing, både gjennom jUnit-tester og Android-instrumenteringstester.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.