当前位置:  开发笔记 > 后端 > 正文

使用Cruise Control .Net自动化.Net部署

如何解决《使用CruiseControl.Net自动化.Net部署》经验,为你挑选了1个好方法。

我目前已经建立了CC.Net设置,它很棒.但是现在我想要一路走下去并将其用于部署.我正考虑在暂存时安装CC.Net,并在构建完成后自动加载启动forcebuild触发器进行暂存,并让它使用msbuild和gac的必要扩展,安装服务等.完成安装.

我也看过msdeploy似乎有类似的目标.您如何看待我的计划以及您如何进行自动部署?

笔记

在暂存网络中禁用SMB(文件共享),这消除了psexec的可能性.它被禁用的原因是我们希望网络被锁定,当我询问开放时,我被告知需要打开太多端口.与身份验证有关?

可能是这个端口参数是bunk的情况.之前我已经设置了Samba共享,但我从未使用过Active Directory,因此我关闭并收听了.

仅打开FTP,RDP和HTTP

Conceptdev.. 6

理查德,我们不想把CruiseControl放在临时或生产服务器附近.

对于LAN(即内部生产服务器),我们手动触发了停止IIS(站点和应用程序池)的生产部署CC任务,复制新站点并重新启动IIS.

对于DMZ部署(即互联网内容,无法实现AD-auth'd连接),我们尽可能多地在内部进行构建并对结果进行压缩,包括执行"最终步骤"的NAnt脚本.有一个内部CC任务可以完成所有这些操作,并将ZIP传输到目标服务器.要完成此过程,需要手动干预:远程登录到框,解压缩然后运行NAnt以"完成"部署(停止/复制/启动/无论如何).

我不确定GAC,但IIS似乎可以通过.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()

对于我们psexec.exe通过NAnt 使用的服务

  
  
  
    
    
      
    
  

无论如何,可能有很多方法可以解决这个问题 - 内部自动/外部手动步骤所需的设置对我们有用.



1> Conceptdev..:

理查德,我们不想把CruiseControl放在临时或生产服务器附近.

对于LAN(即内部生产服务器),我们手动触发了停止IIS(站点和应用程序池)的生产部署CC任务,复制新站点并重新启动IIS.

对于DMZ部署(即互联网内容,无法实现AD-auth'd连接),我们尽可能多地在内部进行构建并对结果进行压缩,包括执行"最终步骤"的NAnt脚本.有一个内部CC任务可以完成所有这些操作,并将ZIP传输到目标服务器.要完成此过程,需要手动干预:远程登录到框,解压缩然后运行NAnt以"完成"部署(停止/复制/启动/无论如何).

我不确定GAC,但IIS似乎可以通过.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()

对于我们psexec.exe通过NAnt 使用的服务

  
  
  
    
    
      
    
  

无论如何,可能有很多方法可以解决这个问题 - 内部自动/外部手动步骤所需的设置对我们有用.

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有