Hozzon létre egy építési csővezetéket a Travis CI segítségével

1. Bemutatkozás

A modern szoftverfejlesztésben a kifejezés csővezeték sokat szokik. De mi ez?

Általában véve, az építési folyamat olyan automatizált lépések összessége, amelyek a kódot a fejlesztésből a gyártásba mozgatják.

A build folyamatok nagyszerűek a szoftverek folyamatos integrációs munkafolyamatainak megvalósításához. Megengedik nekünk kisebb változtatásokat készítsen nagyobb gyakorisággal, azzal a céllal, hogy hamarabb megtalálják a hibákat és csökkentsék azok hatását.

Ebben az oktatóanyagban egy egyszerű építési csővezeték építését vizsgáljuk meg a Travis CI segítségével.

2. A Build Pipeline lépései

Az építési csővezeték sok különböző lépésből állhat, de legalább a következőket kell tartalmaznia:

  • Kód összeállítása: esetünkben ez azt jelenti, hogy a Java forráskódot osztályfájlokká kell fordítani
  • Tesztek végrehajtása: mint az egység tesztek futtatása és esetleg az integrációs tesztek
  • Műtárgyak telepítése: a kódnak megfelelő csomagolás műtárgyakba, mondjuk bele befőttes üveg fájlokat, és telepíteni őket

Ha egy alkalmazás különböző technológiákat használ, akkor további lépéseket lehet beépíteni az építési folyamatba. Előfordulhat például egy további lépés, amely kicsinyíti a JavaScript fájlokat, vagy frissített API dokumentációt tesz közzé.

3. Mi a Travis CI?

A mintavételi csővezetékünkhöz felhasználjuk Travis CI, felhőalapú folyamatos integrációs eszköz.

Ennek számos olyan tulajdonsága van, amelyek nagyszerű választást jelentenek a csővezetékek építésének megkezdéséhez:

  • Gyorsan integrálható bármely nyilvános GitHub-tárral
  • Minden nagyobb programozási nyelvet támogat
  • Több különböző felhőplatformra telepít
  • Különféle üzenetküldő és figyelmeztető eszközöket kínál

Magas szinten úgy működik, hogy figyelemmel kíséri a GitHub adattárat az új végrehajtásokra.

Új kötelezettségvállalás végrehajtásakor végrehajtja az építési folyamat lépéseit egy konfigurációs fájlban meghatározottak szerint (erről bővebben alább). Ha bármely lépés sikertelen, akkor a csővezeték leáll, és erről értesít minket.

A dobozon kívül a Travis CI nagyon kevés konfigurációt igényel. Az egyetlen szükséges konfiguráció a programozási nyelv megadása.

Mindig több konfigurációt tudunk biztosítani a csővezeték testreszabásához, ha szükséges. Például korlátozhatjuk az ágak kiváltó felépítését, további lépéseket adhatunk a csővezetékhez és még sok minden mást.

3.1. Ingyenes és fizetős verziók

Fontos tudni, hogy a Travis CI jelenleg 2 ajánlattal rendelkezik: egy ingyenes és egy fizetős verzióval.

Az ingyenes verzió, amelyet a .org domain név, teljes képességeket kínál bármely nyilvános GitHub-tárházhoz. Nincsenek korlátozások az összeállítások és a tárhelyek számára, bár vannak erőforráskorlátozások, amelyek a futás során futnak.

A fizetős verzió, amely a .com domain név, kötelező a privát GitHub-tárolókhoz. Több egyidejű összeépítést és korlátlan építési perceket is kínál az ingyenes tervhez képest. Van egy ingyenes próba az első 100 build számára a fizetős verzió kipróbálására.

4. Build csővezeték létrehozása a Travis CI segítségével

Ehhez az oktatóanyaghoz a fent említett ingyenes verziót fogjuk használni. Bármely nyilvános adattár felhasználható ingyenes csővezeték létrehozására.

Csak annyit kell tennünk, hogy bejelentkezünk a Travis CI-be a GitHub-fiókunkkal és engedélyezzük:

Miután engedélyeket adtunk a GitHub-fiókunknak, készen állunk az építési folyamat konfigurálására.

4.1. A tárház konfigurálása

Kezdetben valamennyi nyilvános adattárunk inaktívnak számít. Ennek megoldása érdekében engedélyeznünk kell a tárházunkat a fiókbeállítások oldalról.

Ez felsorolja az összes nyilvános adattárunkat, a váltógombbal együtt. A váltógombra kattintva a Travis CI úgy konfigurálódik, hogy az alapértelmezett fő:

Vegye figyelembe, hogy minden adattárnak van egy Beállítások gomb. Itt konfigurálhatjuk a különböző csővezeték-viselkedést:

  • Adja meg, hogy mely események váltják ki a folyamatot (lökések, húzási kérelmek stb.)
  • Állítsa be a környezeti változókat, amelyek átkerülnek a folyamatba
  • Az automatikus törlés épít, amikor új események indulnak

Ennél az oktatóanyagnál az alapértelmezett beállítások jól működnek. Később meglátjuk, hogyan lehet felülbírálni az alapértelmezett viselkedést.

4.2. A Travis konfiguráció létrehozása

A következő lépés egy új fájl létrehozása .travis.yml tárunk gyökérkönyvtárában. Ez a fájl tartalmazza a csővezeték konfigurálásához szükséges összes információt. E fájl nélkül a folyamat nem fog végrehajtódni.

Ehhez az oktatóanyaghoz csak a minimális konfigurációt kell tartalmaznunk, amely meghatározza a programozási nyelvet:

nyelv: java

Ez az! További információk megadása nélkül a Travis CI egy egyszerű vezetéket hajt végre, amely:

  • Összeállítja a forráskódunkat
  • Végzi tesztjeinket

Miután elkövettük a .travis.yml fájl Travis elindítja első építésünket. Bármely további kötelezettségvállalás fő- ág további buildeket indít el. Az irányítópult lehetővé teszi számunkra, hogy bármikor manuálisan kiválthassuk a folyamatot anélkül, hogy elköteleződési vagy lehívási kérelmet igényelnénk.

5. További konfiguráció

Az előző szakaszban azt láttuk, hogy egyetlen konfigurációs sorra van szükségünk az építési csővezeték futtatásához. De a legtöbb projekt további konfigurációt igényel az értelmes folyamat megvalósításához.

Ez a szakasz felvázolja azokat a hasznosabb konfigurációkat, amelyeket érdemes hozzáadni a csővezetékünkhöz.

5.1. Az alapértelmezett Build parancs módosítása

A Maven projektek létrehozásához használt alapértelmezett parancs a következő:

mvn teszt -B

Ezt bármilyen parancsra megváltoztathatjuk a forgatókönyv irányelv .travis.yml:

script: mvn csomag -DskipTests

Lehetséges több parancs összekapcsolása egyetlen lépésben forgatókönyv vonalat a && operátor.

Egyes építési parancsok összetettek, és több sort átfoghatnak, vagy összetett logikával rendelkeznek. Például különböző műveleteket hajthatnak végre a környezeti változók alapján.

Ezekben az esetekben ajánlatos a build parancsot önálló szkriptbe helyezni, és hívja meg a parancsfájlt a konfigurációs fájl belsejéből:

szkript: ./build.sh

5.2. Kód telepítése

A Java projektek alapértelmezett összeállítási beállításai egyszerűen lefordítják a kódot és végrehajtják a teszteket. Az így keletkezett műtárgyakat (.jar fájlokat stb.) A csővezeték végén eldobjuk, hacsak nem telepítjük őket valahova.

A Travis CI számos jól ismert, harmadik féltől származó szolgáltatást támogat. A műtárgyakat sok népszerű felhőtároló rendszerbe át lehet másolni, például az Amazon S3, a Google Cloud Storage, a Bintray és még sok másba.

Kódot is telepíthet közvetlenül a legnépszerűbb felhőalapú számítási platformokra, például az AWS-re, a Google App Engine-re, a Heroku-ra és még sok másra.

Az alábbiakban bemutatunk egy példát a konfigurációra, amely bemutatja, hogyan telepíthetjük a Herokut. Titkosított tulajdonságok előállításához a Travis CLI eszközt kell használnunk.

telepítés: szolgáltató: heroku api_key: biztonságos: "ENCRYPTED_API_KEY"

Ezenkívül egy általános telepítési lehetőséget biztosít, amely lehetővé teszi számunkra, hogy megírjuk saját telepítési parancsfájlunkat. Ez akkor hasznos, ha olyan melléktermékeket kell telepítenünk, amelyek natív módon nem támogatottak.

Írhatunk például egy shell parancsfájlt, amely biztonságosan másolja a műtermékeket egy privát FTP-kiszolgálóra:

telepítés: szolgáltató: szkript szkript: bash ./custom-deploy.sh

5.3. Mely ágak kezelése váltja ki a csővezetéket

Alapértelmezés szerint a folyamat végrehajtja az összes végrehajtást fő-. A legtöbb nagy projekt azonban a git elágazás valamilyen formáját használja a fejlesztési ciklusok kezelésére.

A Travis CI támogatja a git ágak fehér és feketelistázását is annak meghatározása, hogy mely kötelezettségek váltsák ki a csővezetéket.

Példaként vegye figyelembe a következő konfigurációt:

ágak: csak: - elengedés - stabil, kivéve: - mester - éjszakai

Ez figyelmen kívül hagyná a fő- és éjszakai ágak. Elkötelezi magát a kiadás és stabil ágak váltanák ki a csővezetéket. Vegye figyelembe, hogy a csak irányelv mindig elsőbbséget élvez a kivéve irányelv.

Rendszeres kifejezéseket is használhatunk annak ellenőrzésére, hogy mely ágak indítsák el a folyamatot:

ágak: csak: - /^development.*$/

Ez csak akkor indulna el a folyamaton, ha a fiókkal kezdődő elkötelezettségeket követnénk fejlődés.

5.4. Konkrét vállalások kihagyása

Használhatjuk a git kötelezettség üzenetet az egyes elkötelezettségek kihagyására. A Travis CI a következő minták alapján vizsgálja meg az üzenetet:

  • kihagy
  • kihagy

Hol található a következő értékek egyike:

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

Ha a kötelezettség üzenet megfelel ezeknek a mintáknak, akkor a folyamat nem fog futni.

5.5. Különböző gyártási környezetek használata

A Java projektek alapértelmezett felépítési környezete az Ubuntu Linux. A csővezetékek Mac OSX vagy Windows Server rendszeren is végrehajthatók az alábbi konfiguráció hozzáadásával .travis.yml:

os: az osx # lehet „windows” is

Még Linux alatt is 3 különböző disztribúció létezik, amelyek közül választhatunk:

os: linux dist: xenial # egyéb választás „megbízható” vagy „pontos”

A build platform dokumentációja az összes rendelkezésre álló környezetet és azok különbségeit lefedi.

Ne feledje, hogy ha megváltoztatjuk a platformot, akkor szükség lehet bármilyen szokás megváltoztatására is épít vagy bevetni parancsfájlok a kompatibilitás biztosítása érdekében. Többféle módon kezelhető több operációs rendszer konfigurációban.

5.6. Különböző JDK verziók használata

Tesztelhetünk a JDK egy adott verziójával is, ha a következő konfigurációt állítjuk be a .travis.yml fájl:

jdk: oraclejdk8

Ne feledje, hogy a különböző építési környezetek, még a különböző Linux disztribúciók is, különböző JDK verziókkal rendelkezhetnek. A JDK verziók teljes listájának megtekintéséhez olvassa el az egyes környezetek dokumentációját.

6. Építsen mátrixokat

Alapértelmezés szerint minden alkalommal, amikor a vezetékünk fut, egyetlen munkaként fut. Ez azt jelenti, hogy a folyamat minden fázisa egymás után, egyetlen virtuális gépen, ugyanazokkal a beállításokkal fog végrehajtódni.

De a Travis CI egyik nagyszerű tulajdonsága az építőmátrix létrehozásának képessége. Ez lehetővé teszi számunkra, hogy minden feladathoz több feladatot futtassunk, más értékeket használva a korábban látott beállításokhoz.

Például egy építési mátrix segítségével futtathatjuk a folyamatot Linuxon és Mac OSX-en, vagy JDK 8-as és 9-es verzióval egyaránt.

Az összeállítási mátrixok létrehozásának két módja van. Első, értéktömböt tudunk biztosítani a korábban látott egy vagy több nyelvi és környezeti konfigurációhoz. Például:

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

Ezt a megközelítést alkalmazva a Travis CI automatikusan kibővíti a konfiguráció minden kombinációját, így több feladat jön létre. A fenti példában az eredmény összesen négy munkahely lenne.

A build mátrix létrehozásának második módja a mátrix.be foglalja irányelv. Ez lehetővé teszi, hogy kifejezetten kijelentsük, mely kombinációkat szeretnénk futtatni:

nyelv: java mátrix: tartalmazza: - jdk: openjdk8 os: linux - jdk: openjdk9 os: osx

A fenti példa két munkahelyet eredményezne.

Ismételten, ha több operációs rendszerre építünk, akkor vigyáznunk kell a megfelelő működésre épít és bevetés a szkriptek minden esetben működnek. A Shell szkriptek nem működnek például Windows rendszeren. Megfelelő feltételes utasításokat kell használnunk a különböző operációs rendszerek kezeléséhez.

Több lehetőség kínál részletesebb ellenőrzést a létrehozandó munkahelyek és a hibák kezelésének módja felett.

7. Következtetés

Ebben a cikkben létrehoztunk egy egyszerű építési folyamatot a Travis CI segítségével. Leginkább a dobozon kívüli konfiguráció segítségével hoztunk létre egy folyamatot, amely kódot épít és futtat teszteket.

Láttunk egy kis mintát is arról, hogy mennyire konfigurálható a Travis CI. Különböző programozási nyelvekkel és harmadik fél felhőplatformjaival működik. Az egyetlen hátrány, hogy jelenleg csak a GitHub tárházakkal működik.


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