2013-01-09 20 views
9

Tôi đang cố gắng sử dụng MSDeploy để triển khai dự án MVC tới máy chủ bằng TeamCity. Khi tôi làm điều này trên máy tính của tôi trong PowerShell, sử dụng lệnh sau:WebDeploy với MSBuild Không triển khai từ TeamCity

msbuild.exe .\mvc.csproj /p:PublishProfile=DevServer /p:VisualStudioVersion=11.0 
/p:DeployOnBuild=True /p:Password=MyPassword /p:AllowUntrustedCertificate=true 

Nó xây dựng dự án và triển khai nó đến máy chủ (thông tin quy định tại các DevServer công khai hồ sơ) một cách hoàn hảo. Đầu ra hiển thị phần MSDeployPublish ở cuối, trong đó tôi thấy văn bản như Starting Web deployment task from source... và sau đó có các hàng cho tôi biết tệp nào được cập nhật, v.v.

Khi tôi chạy trên TeamCity, sử dụng bước tạo MSBuild, trên cùng một tập tin, với các thông số tương tự (từ cùng một thư mục làm việc) nó xây dựng dự án nhưng không xuất bản nó. Thay vào đó nó có đầu ra thường xuyên từ một quá trình xây dựng (CoreCompile, _CopyFilesMarkedCopyLocal, GetCopyToOutputDirectoryItems, CopyFilesToOutputDirectory) nhưng sau đó không thực sự đi và xuất bản bất cứ điều gì.

Những thay đổi nào tôi cần thực hiện đối với thiết lập trong TeamCity để làm cho nó xuất bản triển khai giống như cách nó hoạt động bằng MSBuild từ máy tính của tôi?

(TeamCity 7.1, MSBuild 4.0, WebDeploy 3.0, Visual Studio 12, IIS 7. Liên quan đến my previous question)

+1

Bạn có thể hiển thị bất kỳ phần nào trong tệp PublishProfile của mình không? Chúng tôi đã có một cấu hình WebDeploy tốt, nhưng chúng tôi không sử dụng một PublishProfile và tôi muốn xem nếu tôi có thể làm cho tôi phù hợp với bạn. –

+0

Phiên bản được cấp phép của PublishProfile có sẵn tại đây: https://gist.github.com/7326d2a7f5523058d662 –

+0

Yaakov, bạn đã bỏ sử dụng PublishProfile rồi sử dụng các tham số bổ sung thay thế? –

Trả lời

10

Chúng tôi làm WebDeploys của chúng tôi với một bước TeamCity MSBuild cấu hình như sau:

Build File Path: Server.csproj 

Command Line Parameters: 
/p:Configuration=%configuration% 
/p:DeployOnBuild=True 
/p:DeployTarget=MSDeployPublish 
/p:MsDeployServiceUrl=https://%web.deploy.server%:8172/MsDeploy.axd 
/p:DeployIisAppPath=%web.deploy.site% 
/p:AllowUntrustedCertificate=True 
/p:Username= 
/p:AuthType=NTLM 

Chúng tôi sử dụng chứng thực tích hợp; thay đổi khi cần thiết để phù hợp với kế hoạch của bạn. Giá trị của điều này, tôi nghĩ, là nó xây dựng tất cả mọi thứ từ đầu và không dựa trên một gói được xây dựng trước.Từ ý chính bạn đăng tôi nhận thấy rằng bạn làm một số xuất bản DB, chúng tôi không sử dụng WebDeploy cho điều đó vì vậy tôi không thể cung cấp bất kỳ hướng dẫn ở đó. Hi vọng điêu nay co ich.

+0

Không xuất bản db, chỉ sử dụng các chuỗi kết nối khác nhau trong web.config tùy thuộc vào cấu hình xây dựng –

+0

. Một cái gì đó bạn nhận được miễn phí với cách tiếp cận trên (và có thể với bất kỳ việc sử dụng WebDeploy?) Là nó sẽ thực hiện [Web.config transforms] (http://msdn.microsoft.com/en-us/library/dd465318. aspx) cho bạn. –

9

tôi sử dụng msbuild.exe đóng gói để zip, và MSdeploy.exe để triển khai trong các bước riêng biệt.

Để triển khai các tập tin package.zip trên dòng lệnh:

"C:\Program Files\IIS\Microsoft Web Deploy V2\msdeploy.exe" -verb:sync 
    -source:package="C:\Build\MyAppName.Debug.zip" 
    -dest:auto,wmsvc=webservername,username=webdeploy,password=******* 
    -allowUntrusted=true 

Lệnh này cũng đáng để giải thích một cách chi tiết:

-verb: đồng bộ hóa: làm cho đồng bộ hóa trang web từ nguồn đến điểm đến

-source: gói = "C: \ Build \ MyAppName.Debug.zip": nguồn là một gói file zip MSBuild

-dest: ô tô, wmsvc = webservername: u se các thiết lập trong tập tin gói để triển khai đến máy chủ. Tài khoản người dùng là tài khoản cấp hệ điều hành có quyền. Tên máy chủ được chỉ định, nhưng không phải là tên trang web IIS (được chỉ định trước đó trong tệp dự án MSBuild trong thuộc tính dự án).

Bạn có thể sửa đổi thông số dựa trên cấu hình của mình. Tôi thích nó theo cách này bởi vì với các bước riêng biệt, nó dễ dàng hơn để gỡ lỗi các vấn đề.

Sử dụng TeamCity build step và runner dòng lệnh.

Cập nhật: Nếu bạn muốn một ví dụ về làm thế nào để xây dựng gói ZIP sử dụng MSBuild, hãy thử một cái gì đó như thế này:

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" 
MyWebApp/MyWebApp/MyWebApp.csproj 
/T:Package 
/P:Configuration=Debug;PackageLocation="C:\Build\MyWebApp.Debug.zip" 

này nên làm việc như nhau trên máy tính địa phương của bạn cũng như trên Máy chủ CI.

+0

Tôi sẽ được với điều này, nhưng tôi thậm chí không thể tìm thấy bất cứ điều gì trong xây dựng đầu ra của bước hiện tại của tôi về nơi nó được tạo ra các gói xây dựng mà sau đó có thể được triển khai (điều này không hiển thị trên máy tính của tôi nếu tôi chạy lệnh tương tự mà không có chỉ định 'VisualStudioVersion = 11.0') –

+0

Bạn có thể chạy trên dòng lệnh cục bộ trên máy chủ với cài đặt TeamCity không? Bạn có thể nhận được đầu ra bổ sung. –

4

Dưới đây là các thiết lập cấu hình mà cuối cùng làm việc cho tôi:

/p:Configuration=CONFIG-NAME 
/p:DeployOnBuild=True 
/p:DeployTarget=MSDeployPublish 
/p:MsDeployServiceUrl=http://SITE-URL/MsDeployAgentService 
/p:username="USERNAME" 
/p:password=PASSWORD 
/p:AllowUntrustedCertificate=True 
/P:CreatePackageOnPublish=True 
/p:DeployIisAppPath=SITE-URL 
/p:MSDeployPublishMethod=RemoteAgent 
/p:IgnoreDeployManagedRuntimeVersion=True 
+0

Tôi cũng đã phải từ bỏ bằng cách sử dụng PublishProfile và thay vào đó sử dụng các tham số bổ sung như trên .. xấu hổ thực sự. Bạn không chắc chắn lý do tại sao chúng tôi không thể sử dụng PublishProfiles trong trường hợp này? –

0

Tôi có chính xác cùng một vấn đề! Tôi đã đăng giải pháp tôi sử dụng trên tại địa chỉ: MsBuild not finding publish profile

Khái niệm cơ bản là:

  • Cài đặt Azure SDK 1.8 trên máy chủ xây dựng
  • Buộc/P: Giá trị PublishProfileRootFolder để đảm bảo MSBuild có thể xác định vị trí xuất bản tiểu sử
+0

Ngoài sửa lỗi của bạn, tôi phải thêm tham số system.VisualStudioVersion với giá trị 11.0. Chúng tôi sử dụng một hỗn hợp của Visual Studio 2012 và 2013 về dự án nhưng chỉ 11.0 làm việc trong TeamCity. Nếu tôi đặt thành 12.0, hồ sơ xuất bản đã bị bỏ qua một lần nữa. –

0

Đảm bảo rằng bạn đã cài đặt tính năng Microsoft Web Developer Tools cho Visual Studio. Điều này là mất tích trên đại lý xây dựng của tôi, nhưng một khi tôi thêm nó xây dựng TeamCity làm việc tốt.