Amarengo

Articles and news

Impostazione di Jenkins per Android: come ho affrontato le sfide che ho affrontato

In questo articolo, documenterò il mio viaggio per ottenere un sistema di integrazione continua completamente funzionante utilizzando Jenkins. Questa configurazione si adatta al mio ambiente di lavoro che ha più progetti che utilizzano gli stessi 4 moduli per la logica di business.

In primo luogo, ho scaricato Jenkins dal sito ufficiale. Poi ho aperto il terminale ed eseguito il seguente comando:

java -jar jenkins.war --httpPort=9091

Ho specificato una porta diversa dal solito 8080 per renderlo unico ed evitare errori, nel caso in cui un altro servizio stia usando Jenkins.

Dopo aver completato tutti i passaggi di installazione, è importante assicurarsi che i seguenti plug-in sono installati:

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

Questi plugin garantire che Jenkins ha sufficienti strumenti per la costruzione di un progetto Android.

Il passo successivo è quello di configurare le seguenti impostazioni di Jenkins:

  1. l’Impostazione di JDK per Jenkins

ho scoperto il JDK sezione a guardare come segue dopo il clic su Gestisci Jenkins -> Global Strumento di Configurazione:

di Base JDK di configurazione

poi ho cliccato Aggiungi JDK poi riempite il seguente modulo:

Aggiungere JDK Installazione vista

ho digitato un nome che rappresenta la versione selezionato e scelto la versione da Installare java.sun.com (Nota: Jenkins chiederà i vostri account Oracle info per installare il JDK).

Nella stessa pagina di configurazione dello strumento globale, ho quindi trovato le impostazioni del plugin Gradle in cui ho aggiunto un’installazione Gradle che ha la stessa versione del Gradle utilizzato nei miei progetti. Per evitare ulteriore confusione, eseguo progetti con Gradle wrapper che discuterò in modo più approfondito nella prossima sezione.

Gradle installation view

Ho anche fatto in modo che il nome rappresenti la versione selezionata per evitare confusione.

Normalmente, Gradle cercherà il locale.file di proprietà nel progetto per recuperare la posizione SDK di Android. Ma quando si utilizza Jenkins, ho scoperto che questo potrebbe non essere sempre il caso, specialmente quando si utilizza il wrapper Gradle.

Per evitare errori di compilazione, ho aggiunto ANDROID_HOME nelle variabili di ambiente Jenkins. Questo risultato è ottenuto attraverso la Gestione di Jenkins -> Configurazione di Sistema poi controllo le variabili di ambiente casella qui:

Proprietà Globali della Sezione

e l’aggiunta di una variabile con il nome ANDROID_HOME e riempimento il valore con il percorso dell’SDK.

Aggiungi variabile di ambiente

Dopo aver raggiunto tutti questi passaggi, ho iniziato a creare un nuovo elemento in Jenkins. La maggior parte dei miei progetti si basa su 4 moduli Android principali che sono inclusi nel repository Git come sottomoduli Git.

Impostare un nuovo elemento è abbastanza facile se non si dispone di alcun sottomodulo:

Nuovo articolo Pagina

Basta inserire il nome e selezionare Progetto Freestyle e premere OK.

Quindi, vai a Gestione del codice sorgente. Normalmente uso Git e configuro il repository:

Sezione Gestione sorgenti

Inserisci l’URL repo e aggiungi le credenziali se non l’hai già fatto. Ora il trucco qui è assicurarsi che se si utilizza un collegamento HTTPS per il repository, è necessario aggiungere le credenziali di tipo username e password, altrimenti se si utilizza SSH, aggiungere le credenziali di tipo SSH.

Se si dispone di sottomoduli nel repository git, il modo più semplice per affrontarlo è attraverso comportamenti aggiuntivi – > Add->Advanced sub-modules behaviours e facendo quanto segue:

  1. Controllare i sottomoduli di aggiornamento ricorsivo
  2. Nel percorso del repository di riferimento da utilizzare durante l’aggiornamento del sottomodulo, aggiungere il nome della cartella del sottomodulo utilizzato nel repository principale.
  3. Nel mio caso, sia il genitore che i sottomoduli possono utilizzare le stesse credenziali, quindi ho controllato Usa credenziali dal remoto predefinito del repository genitore.

Sotto-moduli avanzati comportamenti

Aggiungi tanti di quelli quanti sono i sottomoduli inclusi e assicurati anche che se l’url repo genitore è HTTPS, i sottomoduli si collegano all’interno .gitmodules dovrebbe anche usare HTTPS. Lo stesso vale per SSH.

Per costruire correttamente il progetto, Jenkins deve richiamare lo script Gradle. Il modo più efficiente è dire a Jenkins di eseguire il wrapper Gradle del progetto e definire le attività (clean, assembleDebug, ecc…)

Aggiungere il passaggio di generazione menu

Richiamare Gradle Sezione Script

per evitare il permesso negato, Fare Gradlew eseguibile è controllato e i compiti sono specificati.

Jenkins include un’ampia varietà di azioni da intraprendere quando la build è completata.

Il modo più semplice per pubblicare automaticamente il progetto sul play store utilizzando i plugin di pubblicazione di Android play Store può essere trovato qui.

Alcune osservazioni sulla pubblicazione nello store

Quando si invia un nuovo APK allo store, il codice della versione deve essere incrementato. Per automatizzare questo, ho fatto questo frammento di riferimento.

inoltre, quando si aggiunge theRecent Cambiamenti nel Jenkins, assicurarsi che si seleziona lo stesso come lingua la descrizione per negozio elenco:

La sezione finale è come innescare costruisce automaticamente. Per il mio progetto, il controllo di versione di mia scelta è bitbucket. Per configurarlo, ho seguito questo wiki. Tuttavia c’è un problema, affinché i webhooks funzionino è necessario disporre di Jenkins su un’impostazione del server Web. Inizialmente, non l’ho fatto, quindi il webhook non ha funzionato. Ho superato questo innescando altre build dopo che un determinato progetto è stato costruito con successo. Questo ha risolto il mio problema mentre sviluppavo principalmente i 4 sottomoduli principali in un progetto fittizio, quindi li tiravo in tutti gli altri progetti.

Questo può essere fatto nella sezione Build Triggers appena sopra Build:

Build Triggers Section

I miei passi futuri saranno quelli di sfruttare Jenkins e i test automatizzati, sia attraverso i test JUnit che i test di strumentazione Android.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.