Belirli bir Derlemeyi Dağıtma

tarafından Jason Lee

Bu konuda, web paketlerinin ve veritabanı betiklerinin önceki belirli bir derlemeden hazırlama veya üretim ortamı gibi yeni bir hedefe nasıl dağıtılacağı açıklanmaktadır.

Bu konu, Fabrikam, Inc. adlı kurgusal bir şirketin kurumsal dağıtım gereksinimlerini temel alan bir dizi öğreticinin bir bölümünü oluşturur. Bu öğretici serisi, ASP.NET MVC 3 uygulaması, Windows Communication Foundation (WCF) hizmeti ve veritabanı projesi dahil olmak üzere gerçekçi bir karmaşıklık düzeyine sahip bir web uygulamasını temsil etmek için örnek bir çözüm (Contact Manager çözümü) kullanır.

Bu öğreticilerin kalbindeki dağıtım yöntemi, derleme ve dağıtım işleminin iki proje dosyası tarafından denetlendiği Proje Dosyasını Anlama bölümünde açıklanan bölünmüş proje dosyası yaklaşımını temel alır: biri her hedef ortama uygulanan derleme yönergelerini, diğeri de ortama özgü derleme ve dağıtım ayarlarını içerir. Derleme zamanında, ortama özgü proje dosyası, tam bir derleme yönergeleri kümesi oluşturmak için ortama özgü belirsiz proje dosyasıyla birleştirilir.

Göreve Genel Bakış

Şimdiye kadar, bu öğretici kümesindeki konular tek adımlı veya otomatik bir işlemin parçası olarak web uygulamaları ve veritabanlarını derleme, paketleme ve dağıtmaya odaklanmıştır. Ancak bazı yaygın senaryolarda, bir bırakma klasöründeki derlemeler listesinden dağıttığınız kaynakları seçmek istersiniz. Başka bir deyişle, en son derleme dağıtmak istediğiniz derleme olmayabilir.

Önceki konu başlığında açıklanan sürekli tümleştirme (CI) senaryosu olan Dağıtımı Destekleyen Bir Derleme Tanımı Oluşturma konusunu göz önünde bulundurun. Team Foundation Server (TFS) 2010'da bir derleme tanımı oluşturdunuz. Geliştirici TFS'de kodu her denetleyişinde, Team Build kodunuzu oluşturur, derleme işleminin bir parçası olarak web paketleri ve veritabanı betikleri oluşturur, tüm birim testlerini çalıştırır ve kaynaklarınızı bir test ortamına dağıtır. Derleme tanımını oluştururken yapılandırdığınız bekletme ilkesine bağlı olarak, TFS belirli sayıda önceki derlemeyi korur.

Derleme tanımını oluştururken yapılandırdığınız bekletme ilkesine bağlı olarak, T F S belirli sayıda önceki derlemeyi korur.=======

Şimdi, test ortamınızdaki bu derlemelerden birinde doğrulama ve doğrulama testi gerçekleştirdiğiniz ve uygulamanızı hazırlama ortamına dağıtmaya hazır olduğunuzu varsayalım. Bu sırada geliştiriciler yeni kodu iade etmiş olabilir. Çözümü yeniden oluşturmak ve hazırlama ortamına dağıtmak ve en son derlemeyi hazırlama ortamına dağıtmak istemiyorsunuz. Bunun yerine, test sunucularında doğruladığınız ve doğruladığınız belirli bir derlemeyi dağıtmak istiyorsunuz.

Bunu başarmak için, Microsoft Build Engine (MSBuild) belirli bir derlemenin oluşturduğu web paketlerini ve veritabanı betiklerini nerede bulacağını söylemeniz gerekir.

OutputRoot Özelliğini Geçersiz Kılma

Örnek çözümdePublish.proj dosyası OutputRoot adlı bir özellik bildirir. Adından da anlaşılacağı gibi, bu, derleme işleminin oluşturduğu her şeyi içeren kök klasördür. Publish.proj dosyasında OutputRoot özelliğinin tüm dağıtım kaynaklarının kök konumuna başvurduğunu görebilirsiniz.

Not

OutputRoot yaygın olarak kullanılan bir özellik adıdır. Visual C# ve Visual Basic proje dosyaları da tüm derleme çıkışlarının kök konumunu depolamak için bu özelliği bildirir.

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

Proje dosyanızın web paketlerini ve veritabanı betiklerini önceki TFS derlemesinin çıkışları gibi farklı bir konumdan dağıtmasını istiyorsanız OutputRoot özelliğini geçersiz kılmanız yeterlidir. Özellik değerini Takım Derlemesi sunucusundaki ilgili derleme klasörüne ayarlamanız gerekir. KOMUT satırından MSBuild çalıştırıyorsanız OutputRoot için komut satırı bağımsız değişkeni olarak bir değer belirtebilirsiniz:

msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj 
  /p:OutputRoot=\\TFSBUILD\Drops\DeployToTest\DeployToTest_20120228.3\

Ancak uygulamada Derleme hedefini de atlamak istersiniz. Derleme çıkışlarını kullanmayı planlamıyorsanız çözümünüzü oluşturmanın bir anlamı yoktur. Komut satırından yürütmek istediğiniz hedefleri belirterek bunu yapabilirsiniz:

msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj 
  /p:OutputRoot=\\TFSBUILD\Drops\DeployToTest\DeployToTest_20120228.3\
  /target:GatherPackagesForPublishing;PublishDBPackages;PublishWebPackages

Ancak çoğu durumda dağıtım mantığınızı bir TFS derleme tanımına derlemek istersiniz. Bu, Kuyruk derleme iznine sahip kullanıcıların TFS sunucusuna bağlantısı olan herhangi bir Visual Studio yüklemesinden dağıtımı tetiklemesine olanak tanır.

Belirli Derlemeleri Dağıtmak için Derleme Tanımı Oluşturma

Sonraki yordamda, kullanıcıların tek bir komutla hazırlama ortamına dağıtımları tetikleyebilen bir derleme tanımının nasıl oluşturulacağı açıklanır.

Bu durumda, derleme tanımının herhangi bir şey oluşturmasını istemezsiniz; yalnızca özel proje dosyanızda dağıtım mantığını yürütmesini istersiniz. Publish.proj dosyası, dosya Takım Derlemesi'nde çalışıyorsa Derleme hedefini atlayan koşullu mantık içerir. Bunu, proje dosyanızı Takım Derlemesi'nde çalıştırdığınızda otomatik olarak true olarak ayarlanan yerleşik BuildingInTeamBuild özelliğini değerlendirerek yapar. Sonuç olarak, derleme işlemini atlayabilir ve mevcut bir derlemeyi dağıtmak için proje dosyasını çalıştırmanız yeterlidir.

Dağıtımı el ile tetikleyen bir derleme tanımı oluşturmak için

  1. Visual Studio 2010'da, Takım Gezgini penceresinde ekip projesi düğümünüzü genişletin, Derlemeler'e sağ tıklayın ve ardından Yeni Derleme Tanımı'na tıklayın.

    Visual Studio 2010'da, Takım Gezgini penceresinde takım projesi düğümünüzü genişletin, Derlemeler'e sağ tıklayın ve ardından Yeni Derleme Tanımı'na tıklayın

  2. Genel sekmesinde derleme tanımına bir ad (örneğin DeployToStaging) ve isteğe bağlı bir açıklama verin.

  3. Tetikleyici sekmesinde El ile – İadeler yeni bir derleme tetiklemez'i seçin.

  4. Derleme Varsayılanları sekmesinde, Derleme çıkışını aşağıdaki bırakma klasörüne kopyala kutusuna bırakma klasörünüzün Evrensel Adlandırma Kuralı (UNC) yolunu yazın (örneğin, \TFSBUILD\Drop).

    Derleme Varsayılanları sekmesinde, Derleme çıkışını aşağıdaki bırakma klasörüne kopyala kutusuna bırakma klasörünüzün Evrensel Adlandırma Kuralı (U N C) yolunu yazın (örneğin, \TFSBUILD\Drop).

  5. İşlem sekmesindeki Derleme işlemi dosyası açılan listesinde DefaultTemplate.xaml öğesini seçili bırakın. Bu, tüm yeni ekip projelerine eklenen varsayılan derleme işlemi şablonlarından biridir.

  6. Derleme işlemi parametreleri tablosunda, Oluşturacak Öğeler satırına tıklayın ve ardından üç nokta düğmesine tıklayın.

    Derleme işlemi parametreleri tablosunda, Oluşturacak Öğeler satırına tıklayın ve ardından üç nokta düğmesine tıklayın.

  7. Derleneceği Öğeler iletişim kutusunda Ekle'ye tıklayın.

  8. Öğeler türü açılan listesinde MSBuild Proje dosyaları'nı seçin.

  9. Dağıtım işlemini denetlediğiniz özel proje dosyasının konumuna göz atın, dosyayı seçin ve ardından Tamam'a tıklayın.

    Dağıtım işlemini denetlediğiniz özel proje dosyasının konumuna göz atın, dosyayı seçin ve ardından Tamam'a tıklayın.

  10. Oluşturacak Öğeler iletişim kutusunda Tamam'a tıklayın.

  11. Derleme işlemi parametreleri tablosunda Gelişmiş bölümünü genişletin.

  12. MSBuild Bağımsız Değişkenleri satırında, ortama özgü proje dosyanızın konumunu belirtin ve derleme klasörünüzün konumu için bir yer tutucu ekleyin:

    /p:TargetEnvPropsFile=EnvConfig\Env-Stage.proj;
    OutputRoot=PLACEHOLDER
    

    MSBuild Bağımsız Değişkenleri satırında, ortama özgü proje dosyanızın konumunu belirtin ve derleme klasörünüzün konumu için bir yer tutucu ekleyin.

    Not

    Bir derlemeyi her kuyruğa eklediğinizde OutputRoot değerini geçersiz kılmanız gerekir. Bu, bir sonraki yordamda ele alınmıştır.

  13. Kaydet’e tıklayın.

Bir derlemeyi tetiklerken OutputRoot özelliğini dağıtmak istediğiniz derlemeye işaret eden şekilde güncelleştirmeniz gerekir.

Derleme tanımından belirli bir derlemeyi dağıtmak için

  1. Takım Gezgini penceresinde derleme tanımına sağ tıklayın ve ardından Yeni Derlemeyi Sıraya Ekle'ye tıklayın.

    Takım Gezgini penceresinde derleme tanımına sağ tıklayın ve ardından Yeni Derlemeyi Sıraya Ekle'ye tıklayın.

  2. Kuyruk Derlemesi iletişim kutusundaki Parametreler sekmesinde Gelişmiş bölümünü genişletin.

  3. MSBuild Bağımsız Değişkenleri satırında OutputRoot özelliğinin değerini derleme klasörünüzün konumuyla değiştirin. Örnek:

    /p:TargetEnvPropsFile=EnvConfig\Env-Stage.proj;
       OutputRoot=\\TFSBUILD\Drops\DeployToTest\DeployToTest_20120228.3\
    

    MSBuild Bağımsız Değişkenleri satırında OutputRoot özelliğinin değerini derleme klasörünüzün konumuyla değiştirin.

    Not

    Derleme klasörünüzün yolunun sonuna bir eğik çizgi eklediğinizden emin olun.

  4. Kuyruk'a tıklayın.

Derlemeyi kuyruğa aldığınızda, proje dosyası OutputRoot özelliğinde belirttiğiniz derleme bırakma klasöründen veritabanı betiklerini ve web paketlerini dağıtır.

Sonuç

Bu konuda, bölünmüş proje dosyası dağıtım modeli kullanılarak belirli bir önceki derlemeden web paketleri ve veritabanı betikleri gibi dağıtım kaynaklarının nasıl yayımlandığı açıklanmıştır. OutputRoot özelliğini geçersiz kılma ve dağıtım mantığını bir TFS derleme tanımına ekleme açıklanmıştır.

Daha Fazla Bilgi

Derleme tanımları oluşturma hakkında daha fazla bilgi için bkz. Temel Derleme Tanımı Oluşturma ve Derleme sürecinizi tanımlama. Derlemeleri kuyruğa alma hakkında daha fazla kılavuz için bkz. Derlemeyi kuyruğa alma.