Jenkins可以自动部署ASP.NET应用程序


13

是否有可能使用Jenkins自动/半自动部署ASP.NET Web应用程序。它可以在受控制或不受控制的环境中,因为不受控制的用户需要输入用户名和密码。我正在寻找将文件从目标复制到目标并在Web服务器场方案中运行sql脚本的方法。

编辑 当前,我们正在使用bat文件来xcopy /配置应用程序池/ sql cmd等,以部署应用程序。但是要使其正常工作,生产支持团队需要下载源代码,构建项目并运行bat文件以部署应用程序。

现在,我们希望自动化部署而不需要用户下载源代码,而最终用户只需访问url并填写用户ID和密码参数,然后选择svn标签即可部署。但是Jenkins在匿名登录下运行,因此现有的bat文件将无法运行,因为它没有运行脚本的权限。

因此,我想知道这种情况是否存在其他选择。如果使用输入的用户名和密码来模拟用户上下文,则可以运行现有批处理文件而无需进行进一步更改,那将是很好的选择。如果不可能,我们也想探索其他想法,但是我们没有灵活性来选择诸如puppet之类的自动化工具,我们应该坚持使用这些批处理文件。


分享您的研究成果对所有人都有帮助。告诉我们您尝试过的内容以及为什么它不能满足您的需求。这表明您已花时间尝试自我帮助,这使我们免于重复显而易见的答案,并且最重要的是,它可以帮助您获得更具体和相关的答案。另请参阅“ 如何提问
gna

更新我的问题,请让我知道是否需要提供其他信息。
阳光明媚,时间

Answers:


11

我将分享我们一直在使用的东西,以及我们打算去的地方,也许它将帮助您提供一个更好的主意。

  • 我们目前将Jenkins和Github一起使用-一旦将某些内容合并到master中,Github会告诉Jenkins并开始构建。
  • 我们在Jenkins上使用Nant脚本来构建项目,运行单元测试,如果一切看起来不错,它将启动另一个Jenkins项目。Nant脚本还会弹出一个目录,其中包含完全编译的代码/最小化的CSS / JS等。
  • 次级Jenkins项目从构建中获取输出,并将其发送回另一个仓库中的Github。
  • .BAT文件在登台Web服务器上每5分钟运行一次,基本上检查该存储库的更新。如果找到更新,我们将下载最新版本,备份暂存文件,然后将最新版本部署到暂存文件夹。
  • 要上线,我们有一个.BAT文件,该文件处理备份中的实时文件,并在实时文件上复制存储库文件。它是手动运行的。它不处理SQL更新(我们手工完成)。

现在,显然这并不完全理想,但是对我们有用。我们希望将来将此扩展到:

  • 使用Web Deploy将文件从Jenkins直接推送到IIS,并执行我们需要运行的任何其他命令。
  • 作为上线的一部分,使用自动迁移(Entity Framework的功能)来处理所有SQL更新。

我们所遵循的几乎是相同的。但是,我想知道Web Deploy是否可以安装Windows服务等,以及复杂的Web应用程序所需的全部。当前,我们正在使用ps工具及其正常工作。对于数据库,我们计划使用DeployDB工具。
阳光明媚,

IIS锁定文件时如何处理情况?当有人使用您的应用程序时,您如何处理情况。您是否有多个节点,或者只是在发布时中断了用户的应用程序?
2013年

1
@Peri-我忘了在原始答案中提及,但我们计划拥有两个生产服务器,并在需要时在它们之间切换(使用IIS或nginx)。这将使我们在部署发生时“热身”另一个活动服务器,然后切换到该活动服务器,因此不应出现明显的停机时间。
尼古拉斯

4

我已经将Jenkins用于.Net应用程序和TFS。

  1. 在您的项目中添加所需的配置以及转换和检入代码。
  2. 从TFS获取最新信息(使用TFS插件)
  3. 生成项目(使用MSBuild插件)。您可以使用命令行参数从Msbuild发布代码。
  4. 使用msdeploy.exe命令将代码从发布位置同步到目标位置(位于“ C:\ Program Files(x86)\ IIS \ Microsoft Web Deploy V2 \ msdeploy.exe”中)
  5. 您也可以发送电子邮件,也可以通过Jenkins进行备份。

您还可以使用MSTest.exe执行单元测试,并在jenkin控制台上显示它,也可以发布测试结果。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.