Při vývoji nad sitecore v týmu s více vývojáři můžete buď použít sdílenou databázi nebo nějakým způsobem řešit synchronizaci sitecore itemů mezi vývojáři.

Sdílená databáze

Nejjednodušší řešení, které se nabízí je použít společnou databázi kdesi na síťovém disku a všichni vývojáři mohou vyvíjet zároveň nad aktuálními sitecore itemy.

Toto řešení má ovšem několik zásadních úskalí:

  • DB nemusí být vždy přístupná, nemůžete pracovat z jiného místa, kde DB není k dispozici.
  • Vývojáři si mohou vzájemně měnit itemy pod rukama pokud vyvíjí společnou funkčnost.
  • Pracujete s nejméně stabilní verzí. Často se může stát, že po změně nějakých důležitých item vám nebude web nebo jeho část fungovat, dokud druhý vývojář vývoj nedokončí a nestáhnete si jeho commit z verzovacího systému.

Synchronizace pomocí balíčků

V případě, že si každý vývojář má udržovat vlastní databázi, vyvstává problém jak ji udržet aktuální, aby se vám promítly do vaší databáze změny provedené jinými vývojáři. Pro takový případ můžete použít package designer a instalovat package jiných vývojářů, tak aby byly v souladu s kódem, který si stáhnete z verzovacího systému.

Tato cesta je velmi nepohodlná a pro intenzivnější vývoj těžko udržitelná. Často bude nutné stahovat si balíčky ze stabilnějších prostředí, aby jste napravili nekonzistence.

Synchronizační nástroje pomocí serializace

Pro týmovou spolupráci naštěstí existují solidní komerční i opensource řešení, který tento problém řeší. Princip spočívá ve využití serializace sitecore itemů na disk. Porovnáním s verzí ve verzovacím systému můžete rozhodnout, která verze je správná a buď nahradit item ve vaší sitecore databázi nebo commitnout změnu serializovaného itemu do verzovacího systému pro ostatní vývojáře.

Sdílením serializovaných itemů je zajištěno, že celý tým používá stejné sitecore itemy bez nutnosti komplikované tvorby a instalace balíčků.

Team Development for Sitecore

Nejznámější komerční řešení je Team Development for Sitecore (TDS). Jde o plugin do Visual Studia, kde se pro každou konfiguraci synchronizace vytváří nový projekt v solution, ve kterém udržuje strom se serializovanými sitecore itemy.

Team Development for SitecoreTypicky TDS používá minimálně dva projekty, jeden pro core a druhý pro master DB. Synchronizace probíhá přes webovou službu s knihovnou (Sitecore connector), které si TDS nainstaluje do sitecore instance. Spuštěním synchronizace, dojde k serializaci item z databáze na disk a poté k porovnání se soubory jež spravuje. Uživateli se následně zobrazí synchronizační okno, kde musí uživatel ručně rozhodnout, zda se má změna promítnout do jeho databáze (aktualizovat item v sitecore) nebo změnit v projektu TDS (připravit ke commitu do verzovacího systému pro ostatní vývojáře).

Tento nástroj kromě synchronizace řeší mnoho dalších věcí usnadňujících mergování itemů, nasazení na různá prostředí nebo generování kódu mapujících sitecore itemy.

Unicorn

Unicorn je Open Source nástroj, který se instaluje jako NuGet balíček přímo do sitecore solution a ovliňuje chování sitecore při práci s itemy přes uživatelské rozhraní sitecore.

Oproti TDS nevytváří projekty v solution, stromeček itemů k serializaci se udržuje v konfiguračních souborech. Synchronizace probíhá pomocí synchronizační stránky v sitecore a všechny konflikty se řeší na disku při práci s verzovacím systémem. Unicorn má také pipeline pro sledování změn a dokonce vlastní serializační formát YAML zajištění knihovnou Rainbow. Mimo jiné podporuje transparentní synchronizace pro automatickou synchonizaci sitecore itemů.

Jeho výhody jsou kromě ceny hlavně rychlost, transparentnost a modularita. Unicorn také řeší některé problémy se serializacemi, protože není citlivý na konce řádků a tím pádem nedochází k nesouladu délky serializovaných dat. Jelikož Unicorn nemá vlastní projekt s itemy, tak odpadá nutnost mergování projektového souboru, což je u TDS velmi častým zdrojem chyb.

Stručný postup implementace Unicorn

Unicorn můžete snadno implementovat také do již existujícího projektu, postup je stejný jako u nového projektu. Nejdůležitější je správná konfigurace. Konfigurační soubory jsou bohatě okomentovány.

  1. Otevřete Visual Studio s vaším sitecore projektem.Unicorn configuration
  2. Nainstalujte Nuget package Unicorn.
  3. Nakonfigurujte, která umístění má Unicorn sledovat. Vše je pěkně popsané v readme.txt balíčku Unicorn a v komentářích config souborů ve složce Unicorn. Originální soubory pochopitelně nechte beze změny a úpravy konfigurace proveďte pomocí patchů. Např. je výhodné na většině míst použít transparentní synchronizaci.
    TargetDataStore v unicorn.config patchněte tak, aby serializovaný adresář byl v adresáři sledovaném verzovacím systémem. Tak zajistíte sdílení itemů mezi vývojáři.
  4. Přejděte na stránku /unicorn.aspx na vaší sitecore instanci a přihlašte se jako admin. Zde proveďte prvotní serializaci, tím vzniknou na disku serializované itemy, tyto stačí přidat do verzovacího systému.

Synchronizace

Po prvotní serializaci, již Unicorn hlídá změny item a kromě ruční synchronizace přes stránku unicorn.aspx můžete zvolit automatické synchronizace, které se v Unicorn nazývají transparentní synchronizace.

Unicorn.aspxU transparentní synchronizace Unicorn hlídá automaticky všechny itemy z konfigurace a není potřeba provádět synchronizaci ze stránky unicorn.aspx. Po stažení serializovaných itemů z verzovacího systému jsou tyto změny automaticky promítnuty do instance sitecore. Jediné co je potřeba řešit jsou konflikty při stahování verze, tzn. rozhodnout, zda použít vámi změněnou verzi nebo tu která je ve verzovacím systému.

Konfigurace s nepovolenou transparentní synchronizací je nutné synchronizovat ručně. Po stažení nové verze se změnami itemů stačí přejít na stránku unicorn.aspx a synchronizovat vše nebo jen modul se kterým se chystáte pracovat.

Pokud vytváříte nové větve se sitecore itemy, které je třeba hlídat pomocí Unicorn a nejsou zahrnuté v žádné z existujících konfigurací, pak je nutné vytvořit novou konfiguraci nebo přidat do existující.

Nejlepší je mít konfigurací více a mezi nimi definovat závislosti. Tím lze snadno dosáhnout vysokého stupně modularity a také synchronizovat pouze určité konfigurace a jiné nechat beze změny. Také můžete mít různé synchronizační konfigurace definované v různých projektech (modulech).

Odkazy

Team Development for Sitecore

Unicorn