Sdílet prostřednictvím


Nasazení konkrétního sestavení

Jason Lee

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í.

V závislosti na zásadách uchovávání informací, které jste nakonfigurovali při vytváření definice sestavení, zachová T F S 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í

  1. 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í).

    V sadě Visual Studio 2010 v okně Team Explorer rozbalte uzel týmového projektu, klikněte pravým tlačítkem na Builds (Sestavení) a potom klikněte na New Build Definition (Nová definice sestavení).

  2. Na kartě Obecné pojmenujte definici sestavení (například DeployToStaging) a volitelný popis.

  3. Na kartě Aktivační událost vyberte Ručně – Vracení se změnami neaktivuje nové sestavení.

  4. 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ě Build Defaults (Výchozí nastavení sestavení) zadejte do pole Kopírovat výstup sestavení do následující rozevírací složky cestu Universal Naming Convention (U N C) vaší složky (například \TFSBUILD\Drops).

  5. 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ů.

  6. 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 tabulce Parametry procesu sestavení klikněte na řádek Položky k sestavení a potom klikněte na tlačítko se třemi tečky.

  7. V dialogovém okně Položky k sestavení klikněte na Přidat.

  8. V rozevíracím seznamu Položky typu vyberte Soubory projektu MSBuild.

  9. 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.

    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.

  10. V dialogovém okně Položky k sestavení klikněte na OK.

  11. V tabulce Sestavení parametrů procesu rozbalte část Upřesnit .

  12. 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
    

    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í.

    Poznámka

    Hodnotu OutputRoot budete muset přepsat pokaždé, když sestavení zapíšete do fronty. To je popsáno v dalším postupu.

  13. 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í

  1. 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 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).

  2. V dialogovém okně Sestavení fronty na kartě Parametry rozbalte oddíl Upřesnit .

  3. 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\
    

    V řádku Argumenty NÁSTROJE MSBuild nahraďte hodnotu OutputRoot vlastnost umístěním složky sestavení.

    Poznámka

    Nezapomeňte na konec cesty ke složce sestavení uvést koncové lomítko.

  4. 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í.