Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Jason Lee
Topik ini menjelaskan cara menyebarkan paket web dan skrip database dari build sebelumnya tertentu ke tujuan baru, seperti penahapan atau lingkungan produksi.
Topik ini merupakan bagian dari serangkaian tutorial yang didasarkan pada persyaratan penyebaran perusahaan dari perusahaan fiktif bernama Fabrikam, Inc. Seri tutorial ini menggunakan solusi sampel— solusi Contact Manager—untuk mewakili aplikasi web dengan tingkat kompleksitas yang realistis, termasuk aplikasi MVC 3 ASP.NET, layanan Windows Communication Foundation (WCF), dan proyek database.
Metode penyebaran di jantung tutorial ini didasarkan pada pendekatan file proyek terpisah yang dijelaskan dalam Memahami File Proyek, di mana proses build dan penyebaran dikendalikan oleh dua file proyek —satu berisi instruksi build yang berlaku untuk setiap lingkungan tujuan, dan satu yang berisi pengaturan build dan penyebaran khusus lingkungan. Pada waktu build, file proyek khusus lingkungan digabungkan ke dalam file proyek agnostik lingkungan untuk membentuk serangkaian instruksi build lengkap.
Gambaran Umum Tugas
Hingga saat ini, topik dalam set tutorial ini telah berfokus pada cara membangun, mengemas, dan menyebarkan aplikasi dan database web sebagai bagian dari proses satu langkah atau otomatis. Namun, dalam beberapa skenario umum, Anda mungkin ingin memilih sumber daya yang Anda sebarkan dari daftar build di folder drop. Dengan kata lain, build terbaru mungkin bukan build yang ingin Anda sebarkan.
Pertimbangkan skenario integrasi berkelanjutan (CI) yang dijelaskan dalam topik sebelumnya, Membuat Definisi Build yang Mendukung Penyebaran. Anda telah membuat definisi build di Team Foundation Server (TFS) 2010. Setiap kali pengembang memeriksa kode ke dalam TFS, Team Build akan membangun kode Anda, membuat paket web dan skrip database sebagai bagian dari proses build, menjalankan pengujian unit apa pun, dan menyebarkan sumber daya Anda ke lingkungan pengujian. Bergantung pada kebijakan penyimpanan yang Anda konfigurasi saat membuat definisi build, TFS akan mempertahankan sejumlah build sebelumnya.
=======
Sekarang, misalkan Anda telah melakukan pengujian verifikasi dan validasi terhadap salah satu build ini di lingkungan pengujian Anda, dan Anda siap untuk menyebarkan aplikasi Anda ke lingkungan penahapan. Sementara itu, pengembang mungkin telah memeriksa kode baru. Anda tidak ingin membangun kembali solusi dan menyebarkan ke lingkungan penahapan, dan Anda tidak ingin menyebarkan build terbaru ke lingkungan penahapan. Sebagai gantinya, Anda ingin menyebarkan build tertentu yang telah Anda verifikasi dan validasi di server pengujian.
Untuk mencapai hal ini, Anda perlu memberi tahu Microsoft Build Engine (MSBuild) tempat menemukan paket web dan skrip database yang dihasilkan build tertentu.
Mengesampingkan Properti OutputRoot
Dalam solusi sampel, file Publish.proj mendeklarasikan properti bernama OutputRoot. Seperti namanya, ini adalah folder akar yang berisi semua yang dihasilkan proses build. Dalam file Publish.proj , Anda dapat melihat bahwa properti OutputRoot mengacu pada lokasi akar untuk semua sumber daya penyebaran.
Catatan
OutputRoot adalah nama properti yang umum digunakan. File proyek Visual C# dan Visual Basic juga mendeklarasikan properti ini untuk menyimpan lokasi akar untuk semua output build.
<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>
Jika Anda ingin file proyek Anda menyebarkan paket web dan skrip database dari lokasi yang berbeda—seperti output build TFS sebelumnya—Anda hanya perlu mengambil alih properti OutputRoot . Anda harus mengatur nilai properti ke folder build yang relevan di server Team Build. Jika Anda menjalankan MSBuild dari baris perintah, Anda dapat menentukan nilai untuk OutputRoot sebagai argumen baris perintah:
msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
/p:OutputRoot=\\TFSBUILD\Drops\DeployToTest\DeployToTest_20120228.3\
Namun, dalam praktiknya, Anda juga ingin melewati target Build —tidak ada gunanya membangun solusi jika Anda tidak berencana untuk menggunakan output build. Anda dapat melakukan ini dengan menentukan target yang ingin Anda jalankan dari baris perintah:
msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
/p:OutputRoot=\\TFSBUILD\Drops\DeployToTest\DeployToTest_20120228.3\
/target:GatherPackagesForPublishing;PublishDBPackages;PublishWebPackages
Namun, dalam kebanyakan kasus, Anda mungkin ingin membangun logika penyebaran anda ke dalam definisi build TFS. Ini memungkinkan pengguna dengan izin build Antrean untuk memicu penyebaran dari penginstalan Visual Studio apa pun dengan koneksi ke server TFS.
Membuat Definisi Build untuk Menyebarkan Build Tertentu
Prosedur berikutnya menjelaskan cara membuat definisi build yang memungkinkan pengguna memicu penyebaran ke lingkungan penahapan dengan satu perintah.
Dalam hal ini, Anda tidak ingin definisi build benar-benar membangun apa pun—Anda hanya ingin definisi tersebut menjalankan logika penyebaran dalam file proyek kustom Anda. File Publish.proj menyertakan logika bersyarat yang melewati target Build jika file berjalan di Team Build. Ini dilakukan dengan mengevaluasi properti BuildingInTeamBuild bawaan, yang secara otomatis diatur ke true jika Anda menjalankan file proyek di Team Build. Akibatnya, Anda dapat melewati proses build dan cukup menjalankan file proyek untuk menyebarkan build yang ada.
Untuk membuat definisi build untuk memicu penyebaran secara manual
Di Visual Studio 2010, di jendela Team Explorer , perluas simpul proyek tim Anda, klik kanan Build, lalu klik Definisi Build Baru.
Pada tab Umum , beri nama definisi build (misalnya, DeployToStaging) dan deskripsi opsional.
Pada tab Pemicu , pilih Manual – Check-in tidak memicu build baru.
Pada tab Build Defaults , dalam kotak Salin output build ke folder drop berikut , ketik jalur Universal Naming Convention (UNC) dari folder drop Anda (misalnya, \TFSBUILD\Drops).
Pada tab Proses , di daftar dropdown File proses build , biarkan DefaultTemplate.xaml dipilih. Ini adalah salah satu templat proses build default yang ditambahkan ke semua proyek tim baru.
Dalam tabel Parameter proses build , klik di baris Item untuk Membangun , lalu klik tombol elipsis .
Dalam kotak dialog Item yang akan Dibangun , klik Tambahkan.
Di daftar dropdown Item jenis , pilih MSBuild Project files.
Telusuri ke lokasi file proyek kustom tempat Anda mengontrol proses penyebaran, pilih file, lalu klik OK.
Dalam kotak dialog Item yang akan Dibangun , klik OK.
Dalam tabel Parameter proses build , perluas bagian Tingkat Lanjut .
Di baris Argumen MSBuild , tentukan lokasi file proyek khusus lingkungan Anda dan tambahkan tempat penampung untuk lokasi folder build Anda:
/p:TargetEnvPropsFile=EnvConfig\Env-Stage.proj; OutputRoot=PLACEHOLDER
Catatan
Anda harus mengambil alih nilai OutputRoot setiap kali Anda mengantre build. Ini tercakup dalam prosedur berikutnya.
Klik Simpan.
Saat memicu build, Anda perlu memperbarui properti OutputRoot untuk menunjuk ke build yang ingin Anda sebarkan.
Untuk menyebarkan build tertentu dari definisi build
Di jendela Team Explorer , klik kanan definisi build, lalu klik Antrekan Build Baru.
Dalam kotak dialog Build Antrean , pada tab Parameter , perluas bagian Tingkat Lanjut .
Di baris Argumen MSBuild , ganti nilai properti OutputRoot dengan lokasi folder build Anda. Contohnya:
/p:TargetEnvPropsFile=EnvConfig\Env-Stage.proj; OutputRoot=\\TFSBUILD\Drops\DeployToTest\DeployToTest_20120228.3\
Catatan
Pastikan untuk menyertakan garis miring di akhir jalur ke folder build Anda.
Klik Antrean.
Saat Anda mengantre build, file proyek akan menyebarkan skrip database dan paket web dari folder build drop yang Anda tentukan di properti OutputRoot .
Kesimpulan
Topik ini menjelaskan cara menerbitkan sumber daya penyebaran, seperti paket web dan skrip database, dari build tertentu sebelumnya menggunakan model penyebaran file proyek terpisah. Ini menjelaskan cara mengambil alih properti OutputRoot dan cara menggabungkan logika penyebaran ke dalam definisi build TFS.
Bacaan lebih lanjut
Untuk informasi selengkapnya tentang membuat definisi build, lihat Membuat Definisi Build Dasar dan Menentukan Proses Build Anda. Untuk panduan selengkapnya tentang mengantre build, lihat Antrean Build.