Continous Integration v Ackee pohledem Nette vývojáře
V Ackee používáme pro vývoj webových aplikací Continuous Integration. Představím vám, v čem to nám, Nette programátorům, usnadňuje práci.
Jak to funguje?
Celý systém stojí na Jenkins CI a několika skriptech. Ve chvíli kdy vývojář přispěje do repozitáře, GIT post-commit-hookem
pošle oznámení do Jenkinse. Pokud pro konkrétní větev v repozitáři existuje v Jenkinsi deploy konfigurace, nastartuje se celý proces.
Konfigurace Nette aplikace
Nejprve se soubory z větve v repozitáři zkopírují. Do konfiguračních souborů Nette aplikace se pak zapíše vše, co je potřebné pro běh aplikace na cílovém serveru. Doplní se údaje pro připojení do databáze, klíče k různým API a vše ostatní co aplikace potřebuje. Každá větev v repozitáří může mít vlastní konfiguraci a tak je možné udělat deploy pro testovací účely u nás i u zákazníka. Stejným způsobem se realizuje i produkční nasazení.
Nejčastěji je deploy nastaven na tyto účely:
- Vývojová větev pro testy vývojářů,
- interní testovací prostředí,
- testovací prostředí u zákazníka,
- nasazení na produkční server.
Když je hotová konfigurace, jsou původní data (soubory a databáze) zazálohovány a nová verze aplikace se nahraje na cílový server.
Databázová migrace
Sestavení databáze se provádí z repozitáře, kde je vše uloženo v SQL scriptech. Jednotlivé verze databáze jsou očíslovány a při vytváření nebo updatu databáze dochází k postupného nasazení všech verzí. Podle konfigurace dojde k:
- Úplnému vymazání databáze a postupnému provedení všech SQL scriptů. Toto je typické pro testovací servery.
- Postupnému provedení všech SQL scriptů s vyšší verzí než je aktuální verze verze databáze. Platí pro produkční server nebo pro takové testovací servery, kde se z nějakého důvodu uchovávají testovací data.
Výhody pro vývojáře
Z hlediska vývojáře je toto řešení výhodné zejména:
- Úplné odstínění vývojáře od serverových záležitostí,
- robustnost proti chybám,
- zautomatizování procesu (není potřeba uhánět adminy),
- vše co vývojář potřebuje ovlivnít je přímo v repozitáři aplikace (SQL scripty, konfigurační soubory, ...),
- vývojář pracuje s nástrojem který je mu důvěrně známý (GIT) a není třeba se učit používat další nástroj.