< Zpět na články

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:

  1. Vývojová větev pro testy vývojářů,
  2. interní testovací prostředí,
  3. testovací prostředí u zákazníka,
  4. 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:

  1. Úplné odstínění vývojáře od serverových záležitostí,
  2. robustnost proti chybám,
  3. zautomatizování procesu (není potřeba uhánět adminy),
  4. vše co vývojář potřebuje ovlivnít je přímo v repozitáři aplikace (SQL scripty, konfigurační soubory, ...),
  5. 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.
Josef Gattermayer
Josef Gattermayer
Co-Founder Ackee & CEO Ackee Blockchain

Máte zájem o spolupráci? Pojďme to probrat osobně!