Amarengo

Articles and news

Configurarea Jenkins pentru Android: cum am tratat provocările cu care m-am confruntat

în acest articol, voi documenta călătoria mea pentru a realiza un sistem de integrare continuă pe deplin de lucru folosind Jenkins. Această configurare se potrivește mediului meu de lucru, care are mai multe proiecte folosind aceleași 4 module pentru logica de afaceri.

în primul rând, am descărcat Jenkins de pe site-ul oficial. Apoi am deschis terminalul și am executat următoarea comandă:

java -jar jenkins.war --httpPort=9091

am specificat un port diferit de 8080 obișnuit pentru a-l face unic și pentru a evita orice erori, în cazul în care un alt serviciu folosește Jenkins.

după finalizarea tuturor pașilor de configurare, este important să vă asigurați că sunt instalate următoarele pluginuri:

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

aceste plugin-uri se vor asigura că Jenkins are suficiente instrumente pentru a construi un proiect Android.

următorul pas este să configurați următoarele setări în Jenkins:

  1. Configurarea JDK pentru Jenkins

am descoperit secțiunea JDK să arate după cum urmează după ce faceți clic pe Gestionare Jenkins- > configurare instrument Global:

configurație JDK de bază

apoi am făcut clic pe Adăugare JDK apoi am completat următorul formular:

adăugați vizualizarea de instalare JDK

am tastat un nume care reprezintă versiunea selectată și am ales versiunea din Instalare din java.sun.com (notă: Jenkins va întreba despre informațiile contului Oracle pentru a instala JDK).

pe aceeași pagină de configurare a instrumentului Global, am găsit apoi setările pluginului Gradle în care am adăugat o instalare Gradle care are aceeași versiune ca Gradle folosită în proiectele mele. Pentru a evita confuzia suplimentară, conduc proiecte cu Gradle wrapper pe care le voi discuta mai detaliat în secțiunea viitoare.

vizualizare instalare Gradle

de asemenea, m-am asigurat că numele reprezintă versiunea selectată pentru a evita confuzia.

în mod normal, Gradle va căuta local.proprietăți fișier în proiect pentru a prelua locația Android SDK. Dar când am folosit Jenkins, am descoperit că acest lucru s-ar putea să nu fie întotdeauna cazul, mai ales atunci când folosesc ambalajul Gradle.

pentru a evita erorile de construire, am adăugat ANDROID_HOME în variabilele de mediu Jenkins. Acest lucru se realizează prin gestionarea Jenkins – > configurarea sistemului, apoi verificarea variabilelor de mediu caseta de aici:

proprietăți globale secțiunea

și adăugarea unei variabile cu numele ANDROID_HOME și completarea valorii cu calea către SDK.

adăugați variabila de mediu

după ce am realizat toți acești pași, am început să creez un element nou în Jenkins. Majoritatea proiectelor mele se bazează pe 4 module android principale care sunt incluse în depozitul Git ca submodule Git.

Configurarea unui element nou este destul de ușoară dacă nu aveți submodule:

pagina element nou

pur și simplu introduceți numele și selectați proiect Freestyle și a lovit OK.

apoi, accesați gestionarea codului sursă. Eu folosesc în mod normal, Git și configurare repo:

secțiunea Gestionare sursă

introduceți adresa URL repo și adăugați acreditări dacă nu ați făcut-o deja. Acum trucul aici este să vă asigurați că, dacă utilizați un link HTTPS pentru repo, atunci trebuie să adăugați acreditări de tip nume de utilizator și parolă, altfel dacă utilizați SSH, adăugați acreditările de tip SSH.

dacă aveți submodule în repo git, atunci cel mai simplu mod de a face cu acest lucru este prin comportament suplimentar – > Add->comportamente avansate sub-module și de a face următoarele:

  1. verificați recursiv actualizare submodule
  2. în calea repo de referință pentru a utiliza în timpul actualizării submodule, adăugați numele folderului submodule care este utilizat în repo părinte.
  3. în cazul meu, atât părintele, cât și submodulele pot utiliza aceleași acreditări, așa că am verificat utilizați acreditările din telecomanda implicită a depozitului părinte.

sub-module avansate comportamente

adăugați cât mai multe dintre acestea ca numărul de submodule incluse și, de asemenea, asigurați-vă că, dacă url-ul repo părinte este HTTPS, atunci submodulele se leagă în interior .gitmodules ar trebui să utilizeze, de asemenea, HTTPS. Același lucru este valabil și pentru SSH.

pentru a construi cu succes proiectul, Jenkins trebuie să invoce scriptul Gradle. Cel mai eficient mod este de a spune Jenkins pentru a executa Gradle wrapper proiectului și să definească sarcinile (curat, assembleDebug, etc…)

Adăugați meniul pasul Build

invoca secțiunea script Gradle

pentru a evita permisiunea refuzat eroare, face Gradlew executabil este verificat și sarcinile sunt specificate.

Jenkins include o mare varietate de acțiuni care trebuie luate atunci când construirea este finalizată.

cea mai simplă modalitate de a publica automat proiectul pe play store folosind pluginurile de publicare Android play store poate fi găsită aici.

câteva observații privind publicarea în magazin

când trimiteți un nou APK în magazin, codul versiunii trebuie să fie incrementat. Pentru a automatiza acest lucru, am făcut acest fragment pentru referință.

în plus, când adăugați o parte a modificărilor recente în Jenkins, asigurați – vă că selectați aceeași limbă ca limba Găsită în descrierea pentru listarea magazinului:

secțiunea finală este cum să declanșați automat construcțiile. Pentru proiectul meu, controlul versiunii la alegerea mea este bitbucket. Pentru a-l configura, am urmat acest wiki. Cu toate acestea, există o captură, pentru ca webhooks să funcționeze, trebuie să aveți Jenkins pe o setare a serverului web. Inițial, nu am făcut-o, așa că webhook-ul nu a funcționat. Am depășit acest lucru declanșând alte construcții după ce un anumit proiect este construit cu succes. Acest lucru mi-a rezolvat problema pe măsură ce dezvolt în principal cele 4 submodule principale într-un proiect fictiv, apoi le trag în toate celelalte proiecte.

acest lucru se poate face în secțiunea Build Triggers chiar deasupra Build:

construiți secțiunea declanșatoare

pașii mei viitori vor fi să profite de Jenkins și de testarea automată, atât prin teste jUnit, cât și prin teste de instrumentație Android.

Lasă un răspuns

Adresa ta de email nu va fi publicată.