zoukankan      html  css  js  c++  java
  • Jenkins发布MVC应用程序

    一个大的项目一般都会进行模块化、层次化分隔,每个模块、每个层次都可能是一个或多个工程文件组成,而且各个模块都有依赖关系,有先后顺序,先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分析具体原因。这里还可以通过另外的插件来发送邮件通知管理员是否部署成功。

  • 相关阅读:
    memcache清理缓存
    JqGrid常见使用方法
    SQLyog 最新版本12.5-64bit 完美破解,亲测可用!
    Navicat Premium 最新版本12.1.16-64bit 完美破解,亲测可用!
    【JAVA基础】一:聊聊笔试常见到的 “==、equal” 比较是否相等的内在差别
    scrapy 爬虫返回json格式内容unicode编码转换为中文的问题解决
    Python3的桌面程序开发利器:Eric6的环境搭建、使用
    通过Redis、Memcache的 incr 原子操作防刷机制的使用差别
    从零开始搭建一个从Win7环境备份至CentOS7的SVN双机备份环境
    通过Quartz 配置定时调度任务:使用cron表达式配置时间点
  • 原文地址:https://www.cnblogs.com/5ishare/p/7282493.html
Copyright © 2011-2022 走看看