7

Tôi hiện đang thiết lập CC.Net để thực hiện các công việc xây dựng và thật tuyệt vời. Nhưng bây giờ tôi muốn đi tất cả các cách và sử dụng nó để triển khai là tốt. Tôi đã suy nghĩ về cài đặt CC.Net trên dàn dựng và sau khi xây dựng hoàn thành và nó autouploaded lửa kích hoạt forcebuild để dàn dựng và có nó sử dụng msbuild và các phần mở rộng cần thiết để gac, cài đặt dịch vụ ect. để cài đặt xong.Tự động hóa việc triển khai Net bằng cách sử dụng Kiểm soát hành trình .Net

Tôi cũng thấy msdeploy dường như có mục tiêu tương tự. Bạn nghĩ gì về kế hoạch của tôi và tất cả các bạn đang triển khai tự động như thế nào?

Ghi chú

  • SMB (File Shares) bị vô hiệu hóa trong mạng dàn dựng mà loại bỏ khả năng psexec. Lý do nó bị vô hiệu hóa là chúng tôi muốn mạng bị khóa và khi tôi hỏi về việc mở, tôi đã nói quá nhiều cổng cần phải được mở. Một cái gì đó để làm với xác thực?

    • Có thể trường hợp đối số cổng này là giường. Tôi đã thiết lập Samba cổ phiếu trước nhưng tôi chưa bao giờ làm việc với Active Directory vì vậy tôi tắt máy và lắng nghe.
  • Chỉ FTP, RDP và HTTP được mở

Trả lời

6

Richard, chúng tôi không muốn đặt CruiseControl bất cứ nơi nào gần dàn hoặc sản xuất máy chủ.

Đối với mạng LAN (ví dụ: máy chủ sản xuất nội bộ), chúng tôi đã kích hoạt thủ công các tác vụ triển khai sản xuất CC ngăn IIS (trang web và ứng dụng), sao chép trang mới và khởi động lại công cụ IIS.

Để triển khai DMZ (ví dụ: Internet, không có kết nối AD-auth'd), chúng tôi thực hiện càng nhiều công việc càng tốt và có thể nén kết quả, bao gồm tập lệnh NAnt thực hiện 'bước cuối cùng' . Có một nhiệm vụ CC bên trong mà thực hiện tất cả điều đó và FTP các ZIP ra đến các máy chủ mục tiêu. Để hoàn thành quá trình yêu cầu can thiệp thủ công: đăng nhập vào hộp từ xa, giải nén và sau đó chạy triển khai NAnt để 'hoàn thành' (dừng/sao chép/bắt đầu/bất kỳ điều gì).

Tôi không chắc chắn về GAC, nhưng IIS dường như điều khiển thông qua file .VBS

' Connect to the WMI WebAdministration namespace. 
Set oWebAdmin = GetObject("winmgmts:\\devserver.local\root\WebAdministration") 
' Specify the application pool. 
Set oAppPool = oWebAdmin.Get("ApplicationPool.Name='ProjectName'") 
' Stop the application pool. 
oAppPool.Stop 
' now website; get the application website 
Set objWebSite = GetObject("IIS://localhost/W3SVC/7") ' id of web site 
' get the app pool object for the websites app pool id 
Set objAppPool = GetObject("IIS://localhost/W3SVC/AppPools/ProjectName") 
'stop the site 
objWebSite.Stop() 
' stop the app pool 
objAppPool.Stop() 

Đối với dịch vụ chúng tôi sử dụng psexec.exe qua Nant

<property name="Remote.Executor" value="${ToolsDir}\PSTools\psexec.exe" overwrite="false" /> 
    <!-- installs a particular windows service remotely from the command line --> 
    <target name="installWindowsServiceRemote"> 
    <echo message="${Service.Install.Action}ing ${Service.Name} on ${Deploy.TargetServer}..." /> 
    <exec program="${Remote.Executor}"> 
     <arg line="\\${Deploy.TargetServer} ${Deploy.TargetFolder}\${Service.Name} /${Service.Install.Action}" /> 
    </exec> 
    </target> 

Dù sao có lẽ hàng chục cách để tiếp cận này - thiết lập theo yêu cầu bước bên trong tự động/bên ngoài theo cách thủ công hoạt động cho chúng tôi.

+0

+1 vì không có cc.net trên máy chủ dàn dựng. –

+0

+1 cho ý tưởng về tải lên tự động, nhưng một 'bước cuối cùng' thủ công phải đăng nhập thực tế vào hộp DMZ. – CodingWithSpike

1

Tôi đồng ý với Craig, Bạn không muốn CC.NET trên máy chủ giai đoạn của mình. Chúng tôi làm tất cả mọi thứ từ một máy chủ xây dựng và pushout để dev. và sân khấu. Sử dụng MSBuild, chúng tôi có các mục tiêu được thiết lập cho mỗi biên dịch, và để đẩy bất kỳ và tất cả các phần ra cho cả hai máy chủ hoặc kết hợp các máy chủ tùy thuộc vào môi trường nào. Vì vậy, mỗi dự án trên CC.net trên máy chủ xây dựng tương ứng với một mục tiêu hoặc bộ ba trong MSBuild cộng với tất cả các bản dựng liên tục.

+0

Bạn có thể muốn sửa các mục sau ... "Bạn không muốn CC.NET trên máy chủ xây dựng của mình". – Ryu

Các vấn đề liên quan