5. Build, release, run
Szigorúan elkülönített építési és futási fázisok¶
Egy kódbázis három fázison keresztül alakul át egy (nem fejlesztési) telepítéssé:
- Az építési fázis átalakítja a kódtárat egy végrehajtható csomaggá, amit építésnek nevezünk. Az építési fázisban a telepítési folyamat által meghatározott commiton lévő kódverzióval a függőségeket letölti és a binárisokat és erőforrásokat lefordítja.
- A kiadási fázis összekapcsolja az építési fázisban létrehozott buildet a telepítés aktuális konfigurációjával. Az eredményül kapott kiadás tartalmazza mind az épített kódot, mind a konfigurációt, és azonnal futtatható a futási környezetben.
- A futási fázis (más néven "futásidejű") az alkalmazást futtatja a végrehajtási környezetben, a kiválasztott kiadás valamelyikét használva, indítva az alkalmazás folyamatainak valamilyen készletét.
A kód válik építetté, amit összekapcsolnak a konfigurációval, hogy kiadás jöjjön létre.
A tizenkét tényezős alkalmazás szigorúan elkülöníti az építési, kiadási és futási fázisokat. Például, lehetetlen a kódot futás közben módosítani, mivel nincs mód ezeket a változtatásokat visszajuttatni az építési fázisba.
A telepítési eszközök általában kiadáskezelő eszközöket is kínálnak, különösen a korábbi kiadásra való visszalépés lehetőségét. Például, a Capistrano telepítési eszköz a kiadásokat a releases
nevű almappában tárolja, ahol az aktuális kiadás egy szimbolikus hivatkozás a jelenlegi kiadás könyvtárára. A rollback
parancs segítségével könnyedén visszatérhetünk egy korábbi kiadáshoz.
Minden kiadásnak mindig egyedi kiadásazonosítóval kell rendelkeznie, például a kiadás időbélyegével (például 2011-04-06-20:32:17
) vagy egy növekvő számmal (például v100
). A kiadások egy append-only nyilvántartást képeznek, és a kiadás nem módosítható, miután létrejött. Bármely változtatásnak új kiadást kell létrehoznia.
Az építések a fejlesztők által kezdeményezett események, amikor új kód kerül telepítésre. A futási végrehajtás viszont automatikusan megtörténhet olyan esetekben, mint például a szerver újraindítása vagy egy összeomlott folyamat újraindítása a folyamatkezelő által. Ezért a futási fázist minimális mozgó alkatrészekkel kell tartani, mivel olyan problémák, amelyek megakadályozzák az alkalmazás futását, éjszaka, a fejlesztők távollétében okozhatnak hibákat. Az építési fázis bonyolultabb lehet, mivel a hibák mindig előtérben vannak egy telepítést irányító fejlesztő számára.