一个大的项目一般都会进行模块化、层次化分隔,每个模块、每个层次都可能是一个或多个工程文件组成,而且各个模块都有依赖关系,有先后顺序,先build哪个然后再build哪个都是有顺序的,如果想build一个项目来发布那可能要打开多个工程文件一个一个的build,每次发布新的都要重复前面的操作,而且还会在发布的时候由于版本问题出现错误。比如A迁入代码build一个versionA,B迁入代码build一个VersionB,加入VersionB的是最新的代码,但人工部署时如果不注意可能会部署成VersionA的代码,导致B的代码并没被包含。这样交给测试的话一旦测出问题,就还要重新build,这是很麻烦的事情。那有没有解决它的方法呢?答案当然是有了,Jenkins就是用来做持续集成的。

Jenkins是一开源的持续集成工具,可以集成多种语言C#,Java,python等都可以,也可以定制开发,想把它玩精通了不容易,有的公司甚至直接设立一个项目组来负责持续集成工作。使用Jenkins可以解决上面的问题。Jenkins有插件来进行版本控制,根据版本更新来自动进行build,前期一旦定义好以后发布部署的话就会非常方便,可以一键部署或者自动化部署。不过这些高大上的东西也不是一时半会都能上手的,每一个知识点如果想深入了解的话可能都需要很多的时间。这里我先抛个砖,演示一个简单的,使用Jenkins进行应用程序的发布。

一、安装插件

使用Jenkins发布.Net程序时需要安装MSBuild Plugin插件。

在Jenkins系统管理——>插件管理中查找MSBuild,然后安装。下图是已经安装好了MSBuild Plugin.

二、创建Jenkins Job

点击新建,创建Project,选择构建一个自由风格的软件项目,这里我创建的是CYWJenkins project。

三、配置

1.MSBuild 配置

系统管理——>Global Tool Configuration,选择新增MSBuild.

2.Jenkins Job的配置

上面创建了CYWJenkins,点击OK之后就会进入配置页面,在配置页面主要有下面的几个大类的配置。

Jenkins通过版本控制来进行构建,而且可以设置在什么情况下构建,即构建触发器,如何构建,以及构建后的操作,构建的上下游设置。这里的例子非常简单就是在本地通过MSBuild来发布MVC的应用程序。

上面红线标出的部分,MSBuild Build File:要构建的项目,这个我事先已经创建好了MVC的工程CYWJenkinsDemo  Command Line Arguments:构建的参数。

/t:Rebuild 表示每次都重建,不使用增量编译
/property:Configuration=Release 表示编译Release版本,
PublishProfile指定创建的Profile名称(没有扩展名),VS发布项目时的配置文件名称
DeployOnBuild=true 表示启用编译并发布
TargetFrameworkVersion=v4.5表示.net Framework的版本

其中PublishProfile这个文件是怎么来的呢?如何创建它呢?

我们可以选择工程CYWJenkinsDemo ,右键发布,然后创建Profile,这里要注意不用点发布,一直下一页,然后点击关闭,会提示要不要保存配置文件,点击保持就OK了,几下名字,就是上面的JenkinsPublishProfile。

四、执行

其实都可以不用手动执行,可以配置触发器,是版本更新时执行还是固定的周期执行,这里就先弄简单的,手动触发执行。点击立即构建,就能将应用发布出来,以后再次构建的化也不用再打开工程然后发布了,直接打开页面点击构建就可以了。这些应该来说都是通过远程服务器来搞定的。对于执行的成不成功呢,可以查看build history

对于执行失败的可以点进去查看具体的log,根据log分析具体原因。这里还可以通过另外的插件来发送邮件通知管理员是否部署成功。

Jenkins发布MVC应用程序的更多相关文章

  1. IIS发布MVC应用程序问题

    1.IIS7.5详细错误 HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效 重复定义了“system.web.extensi ...

  2. IIS发布mvc程序遇到的HTTP错误 403.14-Forbidden解决办法

    在IIS上发布MVC应用程序后,在浏览器查看时会报如下图的错误: 这时,我们首先检查一下“处理程序映射”,看一下里面是否有“ExtensionlessUrlHandler-Integrated-4.0 ...

  3. 3.怎样将ASP.NET MVC应用程序发布到IIS

    这一篇,教大家怎么将ASP.NET MVC应用程序发布到本地或者IIS中.打开上一篇创建的ASP.NET MVC 5.0应用程序.[PS:上一篇--->2.第一个ASP.NET MVC 5.0应 ...

  4. jenkins发布程序触发shell调用python脚本刷新akamai cdn api

    刷新cdn的流程:jenkins获取git中的代码,触发脚本推送到生产环境中(即cdn的源站) --> 触发脚本获取git工作目录的更新列表,将更新列表拼凑成带域名信息的url,写入到目录中 - ...

  5. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序更新相关数据

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第八篇:为ASP.NET MVC应用程序 ...

  6. iis7 发布mvc 遇到的HTTP错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容

    iis 7上发布mvc报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容 提示里面的解决方法是: 如果不希望启用目录浏览,请确保配置了默认文档并且该文件存在. 使用 II ...

  7. ASP.NET MVC应用程序更新相关数据

    为ASP.NET MVC应用程序更新相关数据 这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译, ...

  8. MVC应用程序实现文件库(FlexPaper)

    MVC应用程序实现文件库(FlexPaper) 很久之前Insus.NET在实现了<FlexPaper实现文档在线浏览>http://www.cnblogs.com/insus/archi ...

  9. 使用Razor Generator构建模块化ASP.NET MVC应用程序

    在构建Web应用程序的时候,我们很难做到模块化的开发,这是因为Web应用程序不仅仅包含编译的C#代码,还包含了js.css和aspx等资源. 在ASP.NET MVC中,我们发布应用程序的时候,还会包 ...

随机推荐

  1. [0] Visual studio 2010 快捷键大全

    [窗口快捷键]Ctrl+W,W: 浏览器窗口 Ctrl+W,S: 解决方案管理器 Ctrl+W,C: 类视图 Ctrl+W,E: 错误列表 Ctrl+W,O: 输出视图 trl+W,P: 属性窗口 C ...

  2. 实现最简单PHP MVC实例

    关于网上大多MVC的简介我就不再多说,就是Model(模型)View(视图) C(控制器)这里作为一个刚入门PHP MVC框架的我,这里我搭建一个最简易的mvc项目,从而理解MVC 1在apache服 ...

  3. 增强for循环用法

    1.首先增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的, 但是增强for循环有些缺点,例如不能在增强循环里动态的删除集合内容.不能获取 ...

  4. Scrapy爬虫大战京东商城

    Scrapy爬虫大战京东商城 引言 上一篇已经讲过怎样获取链接,怎样获得参数了,详情请看python爬取京东商城普通篇 代码详解 首先应该构造请求,这里使用scrapy.Request,这个方法默认调 ...

  5. 对象的序列化与反序列化-serialize与unserialize

    1. 简介 对象的序列化的基本概念: 所谓对象的序列化,就是可以把某个对象的属性名称,属性值, 属性类型,类名 以字符串的形式保存到文件中,在你需要的时候可以重新恢复. 对象的反序列化的基本概念, 是 ...

  6. w3c编程挑战-初级脚本算法

    之前偶然看到了w3c上的编程挑战题,就像拿来试试手,先做的是初级脚本算法,总体不难,如果有更好的方法,希望能一起交流! 1.翻转字符串 先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序 ...

  7. ASP.NET Core 源码学习之 Options[2]:IOptions

    在上一篇中,介绍了一下Options的注册,而使用时只需要注入IOption即可: public ValuesController(IOptions<MyOptions> options) ...

  8. Ubuntu命令模式基础

    Ubuntu是一个自由.开源.基于Debian的Linux发行版.在ubuntu的基础上,又衍生其它各具特色的Linux发行版.首先是一个操作系统,操作系统用于管理电脑硬件.要发挥出电脑的作用,还得依 ...

  9. 基于 HTML5 WebGL 的 3D 网络拓扑图

    在数据量很大的2D 场景下,要找到具体的模型比较困难,并且只能显示出模型的的某一部分,显示也不够直观,这种时候能快速搭建出 3D 场景就有很大需求了.但是搭建 3D 应用场景又依赖于通过 3ds Ma ...

  10. 【LeetCode】66. Plus One

    题目: Given a non-negative number represented as an array of digits, plus one to the number. The digit ...