Vytvorte zostavovací kanál pomocou Travis CI

1. Úvod

V modernom vývoji softvéru, termín potrubie zvykne si vela. Ale čo to je?

Všeobecne povedané, build pipeline je sada automatizovaných krokov, ktoré posúvajú kód z vývoja do výroby.

Zostavovacie kanály sú vynikajúce na implementáciu pracovných postupov nepretržitej integrácie softvéru. Umožňujú nám to vytvárať menšie zmeny s väčšou frekvencious cieľom nájsť chyby skôr a znížiť ich vplyv.

V tomto tutoriáli sa pozrieme na vytvorenie jednoduchého potrubia zostavy pomocou Travis CI.

2. Kroky v potrubí zostavenia

Kanál na zostavenie môže pozostávať z mnohých rôznych krokov, ale minimálne by mal obsahovať:

  • Kompilácia kódu: v našom prípade to znamená kompiláciu zdrojového kódu Java do súborov triedy
  • Vykonávanie testov: napríklad spustenie jednotkových testov a prípadne integračné testy
  • Rozmiestnenie artefaktov: obal vyhovoval kódu do artefaktov, povedzme do jar súbory a ich nasadenie

Ak aplikácia používa rôzne technológie, potom do procesu zostavovania je možné zahrnúť ďalšie kroky. Môžeme napríklad mať ďalší krok, ktorý minifikuje súbory JavaScript alebo zverejní aktualizovanú dokumentáciu API.

3. Čo je Travis CI?

Pre naše potrubie na zostavenie vzorky použijeme Travis CI, cloudový kontinuálny integračný nástroj.

To má množstvo funkcií, vďaka ktorým je skvelou voľbou pre začatie vytvárania potrubí:

  • Rýchlo sa integruje s akýmkoľvek verejným úložiskom GitHub
  • Podporuje všetky hlavné programovacie jazyky
  • Nasadzuje sa na rôzne cloudové platformy
  • Ponúka rôzne nástroje na zasielanie správ a varovanie

Na vysokej úrovni to funguje tak, že sa v repozitári GitHub monitorujú nové potvrdenia.

Keď je urobené nové potvrdenie, vykoná kroky kanálu zostavenia, ako sú definované v konfiguračnom súbore (viac o tom nižšie). Ak niektorý krok zlyhá, ropovod sa ukončí a bude nás o tom informovať.

Po vybalení z krabice vyžaduje Travis CI veľmi malú konfiguráciu. Jedinou požadovanou konfiguráciou je zadanie programovacieho jazyka.

V prípade potreby môžeme kedykoľvek poskytnúť viac konfigurácií na prispôsobenie nášho potrubia. Napríklad môžeme obmedziť to, čo pobočky spúšťajú zostavenia, pridať do potrubia ďalšie kroky a oveľa viac.

3.1. Bezplatná a platená verzia

Je dôležité vedieť, že Travis CI má v súčasnosti 2 ponuky: bezplatnú a platenú verziu.

Bezplatná verzia označená .org názov domény, ponúka všetky možnosti pre akékoľvek verejné úložisko GitHub. Počet zostavení alebo archívov nie je nijako obmedzený, aj keď sú spustené vaše kanály, sú stanovené limity zdrojov.

Platená verzia, ktorá využíva .com názov domény, je povinný pre súkromné ​​úložiská GitHub. V porovnaní s bezplatným plánom ponúka aj viac súbežných zostavení a neobmedzené minúty na zostavenie. Pre prvých 100 zostavení je k dispozícii bezplatná skúšobná verzia na vyskúšanie platenej verzie.

4. Vytvorenie kanálu zostavenia pomocou Travis CI

V tomto výučbe budeme používať bezplatnú verziu uvedenú vyššie. Na vytvorenie bezplatného kanálu je možné použiť akékoľvek verejné úložisko.

Všetko, čo musíme urobiť, je prihlásiť sa do Travis CI pomocou nášho účtu GitHub a autorizovať ho:

Po udelení povolení nášmu účtu GitHub sme pripravení začať konfigurovať náš kanál zostavovania.

4.1. Konfigurácia úložiska

Spočiatku sú všetky naše verejné úložiská považované za neaktívne. Ak to chcete vyriešiť, musíme povoliť naše úložisko na stránke nastavení účtu.

Toto je zoznam všetkých našich verejných archívov spolu s prepínacím tlačidlom. Kliknutím na prepínacie tlačidlo nakonfigurujete Travis CI tak, aby začal monitorovať toto úložisko pre nové potvrdenia pomocou predvolenej vetvy majster:

Upozorňujeme, že každé úložisko má tiež a nastavenie tlačidlo. Toto je miesto, kde môžeme nakonfigurovať rôzne chovanie kanálu:

  • Definujte, ktoré udalosti spustia kanál (tlače, požiadavky na ťahanie atď.)
  • Nastavte premenné prostredia, ktoré sa odovzdávajú do potrubia
  • Automaticky zrušiť vytváranie, keď sa spustia nové udalosti

Pre tento výukový program budú predvolené nastavenia fungovať dobre. Neskôr uvidíme, ako prepísať niektoré z predvolených nastavení.

4.2. Vytvorenie konfigurácie Travis

Ďalším krokom je vytvorenie nového súboru s názvom .travis.yml v koreňovom adresári nášho úložiska. Tento súbor obsahuje všetky informácie potrebné na konfiguráciu potrubia. Bez tohto súboru sa plynovod nebude vykonávať.

Pre tento tutoriál potrebujeme zahrnúť minimálnu konfiguráciu, ktorá určuje programovací jazyk:

jazyk: java

To je všetko! Bez poskytnutia ďalších informácií vykoná Travis CI jednoduchý postup, ktorý:

  • Zostavuje náš zdrojový kód
  • Vykonáva naše testy

Akonáhle sa dopustíme .travis.yml súbor Travis odštartuje našu prvú zostavu. Akékoľvek ďalšie sa zaviaže k pán pobočka spustí ďalšie zostavenia. Palubná doska nám tiež umožňuje kedykoľvek manuálne spustiť kanál bez toho, aby sme požadovali potvrdenie alebo stiahnutie.

5. Dodatočná konfigurácia

V predchádzajúcej časti sme videli, že na spustenie nášho zostavovacieho potrubia stačí jediný riadok konfigurácie. Väčšina projektov si ale bude vyžadovať ďalšiu konfiguráciu na implementáciu zmysluplného kanálu.

Táto časť popisuje niektoré z užitočnejších konfigurácií, ktoré by sme mohli chcieť pridať do nášho kanálu.

5.1. Zmena predvoleného príkazu na zostavenie

Predvolený príkaz používaný na vytváranie projektov Maven je:

mvn test -B

Toto môžeme zmeniť na ľubovoľný príkaz nastavením scenár smernica v .travis.yml:

skript: balíček mvn -DskipTests

Je možné spojiť dohromady viac príkazov v jednom scenár linka pomocou && operátor.

Niektoré príkazy na zostavenie sú zložité a môžu obsahovať viac riadkov alebo majú zložitú logiku. Môžu napríklad vykonávať rôzne akcie na základe premenných prostredia.

V týchto prípadoch sa odporúča umiestniť príkaz build do samostatného skriptua zavolajte tento skript z vnútra konfiguračného súboru:

skript: ./build.sh

5.2. Zavádzací kód

Predvolené nastavenie zostavenia pre projekty Java jednoducho skompiluje kód a vykoná testy. Výsledné artefakty (súbory .jar atď.) Sa zahodia na konci kanálu, pokiaľ ich niekde nerozmiestnime.

Travis CI podporuje rôzne známe služby tretích strán. Artefakty je možné kopírovať do mnohých populárnych cloudových úložných systémov, ako sú Amazon S3, Google Cloud Storage, Bintray a ďalšie.

Môže tiež nasadiť kód priamo na najobľúbenejšie platformy cloud computingu, ako sú AWS, Google App Engine, Heroku a mnoho ďalších.

Ďalej je uvedená ukážka konfigurácie, ktorá ukazuje, ako sa môžeme nasadiť na Heroku. Na vygenerovanie šifrovaných vlastností musíme použiť nástroj Travis CLI.

nasadenie: poskytovateľ: heroku api_key: zabezpečené: „ENCRYPTED_API_KEY“

Ďalej poskytuje možnosť všeobecného nasadenia, ktorá nám umožňuje napísať si vlastný skript nasadenia. To je užitočné, ak potrebujeme nasadiť artefakty do systému tretej strany, ktorý nie je natívne podporovaný.

Mohli by sme napríklad napísať shell skript, ktorý bezpečne skopíruje artefakty na súkromný server FTP:

nasadiť: poskytovateľ: skript skript: bash ./custom-deploy.sh

5.3. Spravovanie toho, ktoré pobočky spúšťajú ropovod

V predvolenom nastavení sa bude kanál vykonávať pri akomkoľvek potvrdení dňa pán. Väčšina veľkých projektov však na riadenie vývojových cyklov využíva určitú formu vetvenia git.

Travis CI podporuje bielu aj čiernu listinu pobočiek git určiť, ktoré záväzky by mali spustiť plynovod.

Ako príklad zvážte nasledujúcu konfiguráciu:

pobočky: iba: - uvoľnenie - stabilné okrem: - hlavný - nočný

Týmto by sa ignorovali záväzky na internete pán a nočné konáre. Zaviaže sa k prepustenie a stabilný vetvy by spustili plynovod. Všimnite si, že iba smernica má vždy prednosť pred smernicou okrem smernice.

Pomocou regulárnych výrazov môžeme tiež riadiť, ktoré vetvy spustia kanál:

pobočky: iba: - / ^ rozvoj.*$/

To by spustilo plynovod iba pre záväzky na pobočkách, ktoré začínajú na rozvoja.

5.4. Preskakovanie konkrétnych záväzkov

Pomocou správy git commit môžeme preskočiť jednotlivé potvrdenia. Travis CI preskúma správu, či neobsahuje nasledujúce vzory:

  • preskočiť
  • preskočiť

Kde je ktorákoľvek z nasledujúcich hodnôt:

  • ci
  • Travis
  • travis ci
  • travis-ci
  • travisci

Ak sa správa o potvrdení zhoduje s niektorým z týchto vzorov, kanál sa nespustí.

5.5. Používanie rôznych prostredí pre zostavenie

Predvolené prostredie na vytváranie pre projekty Java je Ubuntu Linux. Pipeline sa dajú spustiť aj na Mac OSX alebo Windows Servere pridaním nasledujúcej konfigurácie do .travis.yml:

os: osx # môžu byť tiež „Windows“

Aj v prípade systému Linux existujú 3 rôzne distribúcie, z ktorých si môžeme vybrať:

os: linux dist: xenial # ďalšie možnosti sú 'dôveryhodné' alebo 'presné'

Dokumentácia platformy zostavenia pokrýva všetky dostupné prostredia a ich rozdiely.

Pamätajte, že ak zmeníme platformu, bude možno potrebné zmeniť aj akýkoľvek zvyk stavať alebo nasadiť skripty na zabezpečenie kompatibility. Existuje niekoľko spôsobov konfigurácie viacerých operačných systémov.

5.6. Používanie rôznych verzií JDK

Môžeme tiež otestovať proti konkrétnej verzii JDK nastavením nasledujúcej konfigurácie v .travis.yml spis:

jdk: oraclejdk8

Pamätajte, že v rôznych prostrediach na zostavenie, dokonca aj v rôznych distribúciách systému Linux, môžu byť k dispozícii rôzne verzie JDK. Úplný zoznam verzií JDK nájdete v dokumentácii každého prostredia.

6. Zostavte matice

Štandardne sa vždy, keď náš plynovod beží, beží ako jedna úloha. To znamená, že všetky fázy potrubia sa vykonávajú postupne na jednom virtuálnom stroji s rovnakými nastaveniami.

Ale jednou z veľkých vlastností Travis CI je schopnosť vytvoriť maticu zostavenia. To nám umožňuje spúšťať viac úloh pre každé potvrdenie pomocou rôznych hodnôt pre niektoré z nastavení, ktoré sme videli predtým.

Napríklad môžeme použiť zostavovaciu maticu na spustenie nášho potrubia v systéme Linux aj Mac OSX alebo v prostredí JDK 8 a 9.

Existujú dva spôsoby, ako vytvoriť matice zostavenia. Najprv, môžeme poskytnúť pole hodnôt pre jednu alebo viac konfigurácií jazyka a prostredia, ktoré sme videli predtým. Napríklad:

jazyk: java jdk: - openjdk8 - openjdk9 os: - linux - osx

Pomocou tohto prístupu Travis CI automaticky rozšíri každú kombináciu konfigurácie na viac úloh. V uvedenom príklade by výsledkom boli celkom štyri pracovné miesta.

Druhým spôsobom, ako vytvoriť maticu zostavenia, je použitie súboru matrica.zahrnúť smernice. Toto nám umožňuje výslovne deklarovať, ktoré kombinácie chceme spustiť:

jazyk: java matica: zahrnúť: - jdk: openjdk8 os: linux - jdk: openjdk9 os: osx

Vyššie uvedený príklad by mal za následok dve pracovné miesta.

Ak opäť staviame na viacerých operačných systémoch, musíme byť opatrní, aby sme zabezpečili svoje stavať a nasadenie skripty fungujú pre všetky prípady. Napríklad skripty Shell nebudú fungovať v systéme Windows. Na zaobchádzanie s rôznymi operačnými systémami musíme používať správne podmienené vyhlásenia.

Existuje viac možností, ktoré poskytujú podrobnejšiu kontrolu nad tým, ktoré úlohy sa majú vytvoriť, a ako zvládať zlyhania.

7. Záver

V tomto článku sme vytvorili jednoduchý zostavovací kanál pomocou Travis CI. Väčšinou mimo konfiguráciu krabice sme vytvorili kanál, ktorý vytvára kód a spúšťa testy.

Videli sme tiež malú ukážku konfigurovateľnosti Travis CI. Funguje s rôznymi programovacími jazykmi a cloudovými platformami tretích strán. Nevýhodou je, že v súčasnosti funguje iba s úložiskami GitHub.


$config[zx-auto] not found$config[zx-overlay] not found