Amarengo

Articles and news

nastavení Jenkins pro Android: Jak jsem se vypořádal s výzvami, kterým jsem čelil

v tomto článku, zdokumentuji svou cestu k dosažení plně fungujícího systému kontinuální integrace pomocí Jenkins. Toto nastavení vyhovuje mému pracovnímu prostředí, které má více projektů používajících stejné moduly 4 pro obchodní logiku.

Nejprve jsem si stáhl Jenkins z oficiálních webových stránek. Pak jsem otevřel terminál a spustil následující příkaz:

java -jar jenkins.war --httpPort=9091

zadal jsem jiný port než obvyklý 8080, aby byl jedinečný a vyhnul se chybám v případě, že jiná služba používá Jenkins.

po dokončení všech kroků nastavení je důležité zajistit, aby byly nainstalovány následující pluginy:

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

tyto pluginy zajistí, že Jenkins má dostatečné nástroje pro vytvoření projektu Android.

dalším krokem je nastavení následujících nastavení v Jenkins:

  1. nastavení JDK pro Jenkins

objevil jsem sekci JDK vypadat následovně po kliknutí spravovat Jenkins – > Globální konfigurace nástroje:

základní konfigurace JDK

pak jsem kliknul přidat JDK a vyplnil následující formulář:

přidat JDK instalační pohled

zadal jsem název, který představuje vybranou verzi a vybral verzi z instalace z java.sun.com (Poznámka: Jenkins se zeptá na informace o vašem účtu Oracle za účelem instalace JDK).

na stejné stránce Konfigurace globálního nástroje jsem pak našel nastavení pluginu Gradle, do kterého jsem přidal instalaci Gradle, která má stejnou verzi jako Gradle použitá v mých projektech. Aby se předešlo dalším nejasnostem, provozuji projekty s Gradle wrapper, o kterých budu podrobněji diskutovat v nadcházející sekci.

Gradle instalační pohled

také jsem se ujistil, že název představuje vybranou verzi, aby nedošlo k záměně.

normálně Gradle prohledá místní.soubor vlastností v projektu pro načtení umístění sady Android SDK. Ale při použití Jenkins, zjistil jsem, že to nemusí být vždy případ, zejména při použití Gradle wrapper.

aby se zabránilo chybám sestavení, přidal jsem ANDROID_HOME do proměnných prostředí Jenkins. Toho je dosaženo pomocí spravovat Jenkins – > konfigurovat systém a poté zaškrtnout políčko proměnné prostředí zde:

globální vlastnosti sekce

a přidání proměnné s názvem ANDROID_HOME a vyplnění hodnoty s cestou k SDK.

přidat proměnnou prostředí

po dosažení všech těchto kroků jsem začal vytvářet novou položku v Jenkins. Většina mých projektů se spoléhá na 4 hlavní moduly android, které jsou součástí repozitáře Git jako submoduly Git.

nastavení nové položky je velmi snadné, pokud nemáte žádné submoduly:

nová stránka položky

jednoduše zadejte název a vyberte Freestyle project a stiskněte OK.

dále přejděte do správy zdrojového kódu. Normálně používám Git a nastavuji repo:

sekce pro správu zdrojů

vložte adresu URL repo a přidejte pověření, pokud jste tak ještě neučinili. Trik je nyní zajistit, že pokud používáte odkaz HTTPS pro repo, musíte přidat přihlašovací údaje uživatelského jména a hesla, jinak pokud používáte SSH, přidejte přihlašovací údaje typu SSH.

pokud máte submoduly v repozitáři git, nejjednodušší způsob, jak se s tím vypořádat, je další chování – > přidat – >pokročilé chování dílčích modulů a provedení následujících kroků:

  1. zkontrolujte rekurzivně aktualizovat submoduly
  2. v cestě referenčního repo, které chcete použít během aktualizace submodule, přidejte název složky submodule, který se používá v nadřazeném repo.
  3. v mém případě mohou nadřazené i submoduly používat stejné pověření, takže jsem zkontroloval použít pověření z výchozího vzdáleného nadřazeného úložiště.

pokročilé chování dílčích modulů

Přidejte tolik z nich jako počet zahrnutých submodulů a také zajistěte, aby v případě, že rodičovská repo adresa url je HTTPS, pak submoduly odkazují uvnitř .gitmodules by také měly používat HTTPS. Totéž platí pro SSH.

aby bylo možné úspěšně vytvořit projekt, Jenkins potřebuje vyvolat Gradle skript. Nejúčinnějším způsobem je říct Jenkinsovi, aby provedl obal Gradle projektu a definoval úkoly (clean, assembleDebug atd…)

Přidat nabídku krok sestavení

vyvolat Gradle Script Section

aby se zabránilo oprávnění odepřen Chyba, aby Gradlew spustitelný je kontrolována a úkoly jsou zadány.

Jenkins zahrnuje širokou škálu akcí, které je třeba provést po dokončení sestavení.

nejpřímější způsob, jak automaticky publikovat projekt v Obchodě play pomocí pluginů pro publikování obchodu Android play, najdete zde.

Několik poznámek k publikování do obchodu

při odesílání nového APK do obchodu je třeba zvýšit kód verze. Chcete-li to automatizovat, udělal jsem tento úryvek pro referenci.

kromě toho se při přidávání části změn v Jenkins ujistěte, že jste vybrali stejný jazyk jako jazyk nalezený v popisu pro výpis obchodu:

poslední část je, jak automaticky spouštět sestavení. Pro můj projekt je správa verzí podle mého výběru bitbucket. Abych to nastavil, sledoval jsem tuto wiki. Existuje však háček, aby webhooks fungoval, musíte mít Jenkins v nastavení webového serveru. Zpočátku jsem to neudělal, takže webhook nefungoval. Překonal jsem to spuštěním dalších sestav po úspěšném vybudování určitého projektu. To vyřešilo můj problém, protože jsem hlavně vyvíjel hlavní submoduly 4 v fiktivním projektu a pak je vytáhl ve všech ostatních projektech.

to lze provést v sekci Build Triggers těsně nad Build:

Build Triggers sekce

Moje budoucí kroky budou využívat Jenkins a automatizované testování, a to jak prostřednictvím testů jUnit, tak testů přístrojů Android.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.