V. Buduj, publikuj, uruchamiaj

Oddzielaj etap budowania od uruchamiania

Codebase jest przetwarzany we wdrożenie w trzech etapach (poza lokalnym środowiskiem).

Kod staje się buildem, jeśli zostanie połączony z konfiguracją by stworzyć release

Aplikacja 12factor ściśle rozgranicza etapy budowy, publikacji i uruchamiania. Kiedy aplikacja została już uruchomiona, nie można zmienić jej kodu w inny sposób niż zbudować ją na nowo na podstawie wcześniej naniesionych zmian.

Narzędzia do obsługi wdrożeń zazwyczaj oferują moduły do zarządzania releasami, w tym możliwość do powrotu do poprzedniej wersji (rollback). Np. narzędzie Capistrano przechowuje releasy w podkatalogu releases, gdzie obecna wersja opublikowanej aplikacji jest symlinkowana do jednej z wersji przechowywanej w katalogu Capistrano. Komenda rollback pozwala na szybką zmianę wersji opublikowanej aplikacji na jedną z poprzednich.

Każdy release powinien zawsze posiadać unikalny identyfikator, jak np. data publikacji aplikacji (taka jak 2011-04-06-20:32:17) lub inkrementowany numer (np. v100). Do rejestru opublikowanych wersji aplikacji można jedynie dodawać jej nowe wersje, jego zawartość nie może być zmieniana w żaden inny sposób.

Aplikacja może zostać zbudowana, gdy developer zdecyduje o wdrożeniu zmian do kodu. Uruchomienie aplikacji może natomiast nastąpić automatycznie po restarcie serwera lub jednego z procesów aplikacji po błędzie krytycznym. Dlatego też etap uruchamiania aplikacji powinien być jak najbardziej jednolity minimalizując równocześnie ryzyko wystąpienia problemów ze startem aplikacji - mogą one spowodować zaprzestanie działania aplikacji np. w nocy, kiedy to nie ma żadnego developera “pod ręką”. Etap budowy aplikacji może być bardziej złożony, ponieważ ewentualne błędy są zawsze widoczne dla developera, który nadzoruje ten proces.