Amarengo

Articles and news

Jenkinsin perustaminen Androidille: How I dealed with the challenges I faceed

tässä artikkelissa aion dokumentoida matkani saavuttaa täysin toimiva jatkuva integraatio järjestelmä Jenkins. Tämä asennus sopii työympäristööni, jossa on useita projekteja, joissa käytetään samoja 4 moduulia liiketoiminnan logiikkaan.

ensin latasin Jenkinsin virallisilta verkkosivuilta. Sitten avasin terminaalin ja ajoin seuraavan komennon:

java -jar jenkins.war --httpPort=9091

määritin eri portin kuin tavallinen 8080, jotta se olisi ainutlaatuinen ja välttäisi virheet, jos toinen palvelu käyttää Jenkinsiä.

kun kaikki asennusvaiheet on suoritettu, on tärkeää varmistaa, että seuraavat liitännäiset on asennettu:

  1. Git-liitännäinen
  2. Gradle-liitännäinen
  3. Android Nint-liitännäinen
  4. Google Play Android Publisher-liitännäinen

nämä liitännäiset varmistavat, että Jenkinsillä on riittävät työkalut Android-projektin rakentamiseen.

seuraavaksi jenkinsiin on tarkoitus asentaa seuraavat asetukset:

  1. JDK: n määrittäminen Jenkinsille

löysin JDK-osion näyttämään seuraavalta Napautettuani Manage Jenkins – > Global Tool Configuration:

Basic JDK configuration

I then clicked Add JDK and fill up the following form:

lisää JDK Asennusnäkymä

kirjoitin nimen, joka edustaa valittua versiota ja valitsin version asennuksesta alkaen java.sun.com (Huomautus: Jenkins kysyy Oracle tilin tiedot voidakseen asentaa JDK).

samalta Global Tool Configuration-sivulta löysin sitten Gradle-liitännäisen asetukset, joihin lisäsin Gradle-asennuksen, jossa on sama versio kuin projekteissani käytetty Gradle. Sekaannusten välttämiseksi suoritan projekteja Gradelapakääreellä, josta aion keskustella syvällisemmin tulevassa jaksossa.

Gradle installation view

varmistin myös, että nimi edustaa sekaannusten välttämiseksi valittua versiota.

normaalisti Gradle etsii paikallista.projektin ominaisuustiedosto Android SDK-sijainnin hakemiseksi. Mutta Jenkinsiä käyttäessäni havaitsin, että tämä ei välttämättä aina pidä paikkaansa, varsinkaan kun käytät Gradekäärettä.

välttääkseni rakentamisvirheitä lisäsin ANDROID_HOMEN Jenkinsin ympäristömuuttujiin. Tämä saavutetaan Manage Jenkins – > Configure-järjestelmän avulla ja tarkistetaan ympäristömuuttujat tässä:

Global Properties Section

ja lisäämällä muuttujan nimi ANDROID_HOME ja täyttämällä arvo polku SDK.

lisää ympäristömuuttuja

saavutettuani kaikki nämä vaiheet aloin luoda uutta kohdetta Jenkinsiin. Suurin osa projekteistani perustuu 4: ään android-moduuliin, jotka sisältyvät git-arkistoon git-alimoduleina.

uuden kohteen luominen on melko helppoa, jos sinulla ei ole alimoduleita:

Uusi tuotesivu

syötä nimi ja valitse Freestyle project ja paina OK.

siirry seuraavaksi lähdekoodin hallintaan. Käytän normaalisti Git: tä ja asetan repon:

Source management-osio

lisää repo-URL ja lisää tunnistetiedot, jos et ole jo lisännyt. Nyt temppu tässä on varmistaa, että jos käytät HTTPS-linkkiä repo, sinun täytyy lisätä käyttäjätunnus ja salasana tyyppi tunnistetiedot, muuten jos käytät SSH sitten lisätä SSH tyyppi tunnistetiedot.

jos sinulla on alimoduleita git-repossa, helpoin tapa käsitellä tätä on Lisäkäyttäytyminen – > Add – >kehittyneet alimoduulikäyttäytymiset ja toimiminen seuraavasti:

  1. Tarkista rekursiivisesti päivittää submodules
  2. in polku reference repo käyttää submodule update, lisää submodule kansion nimi, jota käytetään vanhemman repo.
  3. minun tapauksessani sekä ylä-että alimodulit voivat käyttää samoja valtuuksia, joten valitsin käytä valtuuksia päävaraston oletusetänä.

Advanced submodules behaviors

Add as many of those as the number of submodules included and also ensure that if the parent repo url is HTTPS, then the submodules link inside .gitmodules pitäisi käyttää myös HTTPS. Sama koskee SSH: ta.

rakentaakseen projektin onnistuneesti Jenkinsin on vedottava Gradle-käsikirjoitukseen. Tehokkain tapa on käskeä Jenkins toteuttamaan projektin Gradelapapaperi ja määrittelemään tehtävät (puhdas, assembleDebug jne…)

lisää Koostamisvaihevalikko

käytä Gradle Script-osiota

jotta vältyttäisiin käyttöoikeuksien epäämiseltä, tee gradlew suoritettavaksi ja tehtävät määritellään.

Jenkins sisältää monenlaisia toimenpiteitä, joihin on ryhdyttävä, kun rakennus on valmis.

suoraviivaisin tapa julkaista projekti automaattisesti play Storessa Android play store – julkaisulaajennuksia käyttäen löytyy täältä.

muutama huomautus julkaisemisesta kauppaan

kun uusi APK lähetetään kauppaan, versiokoodia pitää korottaa. Automatisoida tämän, tein tämän pätkä viitteeksi.

lisäksi, kun lisäät viimeisen Muutososan jenkinsiin, varmista, että valitset saman kielen kuin se kieli, joka löytyy kauppalistauksen kuvauksesta:

viimeinen osa on miten käynnistää rakentaa automaattisesti. Projektilleni valitsemani versionhallinta on bitbucket. Perustaakseni sen, seurasin tätä wikiä. On kuitenkin saalis, webhooksien toimiaksesi sinun täytyy olla Jenkins web-palvelimen asetus. Aluksi, en niin webhook ei toiminut. Voitin tämän käynnistämällä muita rakennelmia, kun tietty projekti on onnistuneesti rakennettu. Tämä ratkaisi ongelmani, koska olen pääasiassa kehittää 4 tärkeimmät submodules on dummy projekti sitten vetää niitä kaikissa muissa projekteissa.

tämä voidaan tehdä Build Triggers-osiossa juuri Builtin yläpuolella:

Build Triggers Section

minun tulevat askeleeni ovat Jenkinsin ja automatisoidun testauksen hyödyntäminen sekä jUnit-testien että Android-instrumentaatiotestien kautta.

Vastaa

Sähköpostiosoitettasi ei julkaista.