Nasazení konkrétního sestavení
Toto téma popisuje, jak nasadit webové balíčky a databázové skripty z konkrétního předchozího sestavení do nového cíle, například do přípravného nebo produkčního prostředí.
Toto téma je součástí řady kurzů založených na požadavcích na podnikové nasazení fiktivní společnosti s názvem Fabrikam, Inc. Tato série kurzů používá ukázkové řešení – řešení Contact Manager – k reprezentaci webové aplikace s realistickou úrovní složitosti, včetně aplikace ASP.NET MVC 3, služby Windows Communication Foundation (WCF) a databázového projektu.
Metoda nasazení, která je základem těchto kurzů, je založená na přístupu k rozděleným souborům projektu popsaném v tématu Principy souboru projektu, ve kterém je proces sestavení a nasazení řízen dvěma soubory projektu – jeden obsahuje pokyny k sestavení, které platí pro každé cílové prostředí, a druhý obsahující nastavení sestavení a nasazení specifické pro prostředí. V době sestavení se soubor projektu pro konkrétní prostředí sloučí do souboru projektu nezávislého na prostředí, aby se vytvořila úplná sada pokynů k sestavení.
Přehled úkolů
Až dosud se témata v této sadě kurzů zaměřovala na vytváření, balení a nasazování webových aplikací a databází v rámci jednostupňového nebo automatizovaného procesu. V některých běžných scénářích ale budete chtít prostředky, které nasadíte, vybrat ze seznamu sestavení v rozevírací složce. Jinými slovy, nejnovější sestavení nemusí být sestavení, které chcete nasadit.
Představte si scénář kontinuální integrace (CI) popsaný v předchozím tématu Vytvoření definice sestavení, která podporuje nasazení. Vytvořili jste definici sestavení v Team Foundation Serveru (TFS) 2010. Pokaždé, když vývojář zkontroluje kód v TFS, team build sestaví váš kód, vytvoří webové balíčky a databázové skripty v rámci procesu sestavení, spustí testy jednotek a nasadí prostředky do testovacího prostředí. V závislosti na zásadách uchovávání informací, které jste nakonfigurovali při vytváření definice sestavení, bude TFS uchovávat určitý počet předchozích sestavení.
=======
Teď předpokládejme, že jste v testovacím prostředí provedli ověření a ověřovací testování v některém z těchto sestavení a jste připraveni nasadit aplikaci do přípravného prostředí. Mezitím vývojáři možná zkontrolovali nový kód. Nechcete znovu sestavit řešení a nasadit ho do přípravného prostředí a nechcete nasazovat nejnovější build do přípravného prostředí. Místo toho chcete nasadit konkrétní sestavení, které jste ověřili a ověřili na testovacích serverech.
Chcete-li toho dosáhnout, musíte informovat Microsoft Build Engine (MSBuild), kde má najít webové balíčky a databázové skripty, které vygeneroval konkrétní build.
Přepsání vlastnosti OutputRoot
V ukázkovém řešení soubor Publish.proj deklaruje vlastnost s názvem OutputRoot. Jak název napovídá, jedná se o kořenovou složku, která obsahuje vše, co proces sestavení vygeneruje. V souboru Publish.proj vidíte, že vlastnost OutputRoot odkazuje na kořenové umístění pro všechny prostředky nasazení.
Poznámka
OutputRoot je běžně používaný název vlastnosti. Soubory projektů Visual C# a Visual Basic také deklarují tuto vlastnost pro uložení kořenového umístění pro všechny výstupy sestavení.
<PropertyGroup>
<!--This is where the .deploymanifest file will be written to during a build-->
<_DbDeployManifestPath>
$(OutputRoot)ContactManager.Database.deploymanifest
</_DbDeployManifestPath>
<!-- The folder where the .zip and .cmd file will be located for
ContactManager.Mvc Web project -->
<_ContactManagerDest>
$(OutputRoot)_PublishedWebsites\ContactManager.Mvc_Package\
</_ContactManagerDest>
<!-- The folder where the .zip and .cmd file will be located for
ContactManager.Service Web project -->
<_ContactManagerSvcDest>
$(OutputRoot)_PublishedWebsites\ContactManager.Service_Package\
</_ContactManagerSvcDest>
<!-- ... -->
</PropertyGroup>
Pokud chcete, aby soubor projektu nasadil webové balíčky a databázové skripty z jiného umístění – například výstupy předchozího sestavení TFS – stačí jednoduše přepsat vlastnost OutputRoot . Hodnotu vlastnosti byste měli nastavit na příslušnou složku sestavení na serveru team buildu. Pokud jste nástroj MSBuild spouštěli z příkazového řádku, mohli byste jako argument příkazového řádku zadat hodnotu OutputRoot :
msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
/p:OutputRoot=\\TFSBUILD\Drops\DeployToTest\DeployToTest_20120228.3\
V praxi byste ale také chtěli přeskočit cíl sestavení – pokud neplánujete používat výstupy sestavení, nemáte smysl vytvářet řešení. Můžete to provést zadáním cílů, které chcete spustit z příkazového řádku:
msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
/p:OutputRoot=\\TFSBUILD\Drops\DeployToTest\DeployToTest_20120228.3\
/target:GatherPackagesForPublishing;PublishDBPackages;PublishWebPackages
Ve většině případů ale budete chtít logiku nasazení sestavit do definice sestavení TFS. To umožňuje uživatelům s oprávněním Sestavení front aktivovat nasazení z jakékoli instalace sady Visual Studio s připojením k serveru TFS.
Vytvoření definice sestavení pro nasazení konkrétních sestavení
Další postup popisuje, jak vytvořit definici sestavení, která uživatelům umožní aktivovat nasazení do přípravného prostředí jediným příkazem.
V tomto případě nechcete, aby definice sestavení ve skutečnosti nic sestavili – chcete, aby spustila logiku nasazení ve vlastním souboru projektu. Soubor Publish.proj obsahuje podmíněnou logiku, která přeskočí cíl sestavení, pokud je soubor spuštěný v team buildu. Provede to vyhodnocením integrované vlastnosti BuildingInTeamBuild , která se automaticky nastaví na true , pokud spustíte soubor projektu v team buildu. V důsledku toho můžete proces sestavení přeskočit a jednoduše spustit soubor projektu a nasadit existující sestavení.
Vytvoření definice sestavení pro ruční aktivaci nasazení
V sadě Visual Studio 2010 rozbalte v okně Team Explorer uzel týmového projektu, klikněte pravým tlačítkem na Builds (Sestavení) a pak klikněte na New Build Definition (Nová definice sestavení).
Na kartě Obecné pojmenujte definici sestavení (například DeployToStaging) a volitelný popis.
Na kartě Aktivační událost vyberte Ručně – Vracení se změnami neaktivuje nové sestavení.
Na kartě Build Defaults (Výchozí nastavení sestavení ) zadejte do pole Kopírovat výstup sestavení do následující rozevírací složky cestu UNC (Universal Naming Convention) vaší složky (například \TFSBUILD\Drops).
Na kartě Proces v rozevíracím seznamu Sestavit soubor procesu ponechte vybranou možnost DefaultTemplate.xaml . Toto je jedna z výchozích šablon procesu sestavení, které se přidávají do všech nových týmových projektů.
V tabulce Parametry procesu sestavení klikněte na řádek Položky k sestavení a potom klikněte na tlačítko se třemi tečky .
V dialogovém okně Položky k sestavení klikněte na Přidat.
V rozevíracím seznamu Položky typu vyberte Soubory projektu MSBuild.
Přejděte do umístění souboru vlastního projektu, pomocí kterého řídíte proces nasazení, vyberte soubor a klikněte na OK.
V dialogovém okně Položky k sestavení klikněte na OK.
V tabulce Sestavení parametrů procesu rozbalte část Upřesnit .
V řádku Argumenty NÁSTROJE MSBuild zadejte umístění souboru projektu specifického pro vaše prostředí a přidejte zástupný symbol pro umístění složky sestavení:
/p:TargetEnvPropsFile=EnvConfig\Env-Stage.proj; OutputRoot=PLACEHOLDER
Poznámka
Hodnotu OutputRoot budete muset přepsat pokaždé, když sestavení zapíšete do fronty. To je popsáno v dalším postupu.
Klikněte na Uložit.
Při aktivaci sestavení je potřeba aktualizovat vlastnost OutputRoot tak, aby odkazovala na sestavení, které chcete nasadit.
Nasazení konkrétního sestavení z definice sestavení
V okně Team Explorer klikněte pravým tlačítkem na definici sestavení a potom klikněte na Queue New Build (Zařadit nové sestavení do fronty).
V dialogovém okně Sestavení fronty na kartě Parametry rozbalte oddíl Upřesnit .
V řádku Argumenty NÁSTROJE MSBuild nahraďte hodnotu OutputRoot vlastnost umístěním složky sestavení. Příklad:
/p:TargetEnvPropsFile=EnvConfig\Env-Stage.proj; OutputRoot=\\TFSBUILD\Drops\DeployToTest\DeployToTest_20120228.3\
Poznámka
Nezapomeňte na konec cesty ke složce sestavení uvést koncové lomítko.
Klikněte na Fronta.
Když sestavení zařadíte do fronty, soubor projektu nasadí databázové skripty a webové balíčky z rozevírací složky sestavení, kterou jste zadali ve vlastnosti OutputRoot .
Závěr
Toto téma popisuje, jak publikovat prostředky nasazení, jako jsou webové balíčky a databázové skripty, z konkrétního předchozího sestavení pomocí modelu nasazení rozděleného souboru projektu. Vysvětluje, jak přepsat vlastnost OutputRoot a jak začlenit logiku nasazení do definice sestavení TFS.
Další čtení
Další informace o vytváření definic sestavení najdete v tématech Vytvoření základní definice sestavení a Definování procesu sestavení. Další pokyny k řazení sestavení do fronty najdete v tématu Vytvoření fronty sestavení.