gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:48:04 32 4
gpt4 key购买 nike

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

我也看到了 msdeploy 似乎有类似的目标。您如何看待我的计划以及你们都如何进行自动化部署?

笔记

  • SMB(文件共享)在登台网络中被禁用,从而消除了 psexec 的可能性。它被禁用的原因是我们希望网络被锁定,当我询问开放时,我被告知需要打开太多端口。与身份验证有关吗?
  • 这个端口参数可能是错误的。我以前设置过 Samba 共享,但我从未使用过 Active Directory,所以我闭嘴倾听。
  • 只打开FTP、RDP和HTTP
  • 最佳答案

    理查德,
    我们不想将 CruiseControl 放在靠近登台或生产服务器的任何地方。

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

    对于 DMZ 部署(即互联网内容,没有可能的 AD 认证连接),我们在内部尽可能多地进行构建并压缩结果,包括执行“最终步骤”的 NAnt 脚本。有一个内部 CC 任务可以完成所有这些工作,并将 ZIP 文件通过 FTP 传输到目标服务器。要完成该过程需要手动干预:远程登录到盒子,解压缩,然后运行 ​​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通过南特
      <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>

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

    关于deployment - 使用 Cruise Control .Net 自动化 .Net 部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/711721/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com