一 配置介绍

使用jenkins的tfs插件进行,源码的下载,编译,打包的操作,然后使用windows的批处理命令,在局域网内(或者本机)把打包的release包,删除掉web.config,然后靠配到iis指向的磁盘位置,如此实现自动发布。在此种情况下,因为源码经过演进项目扩大,存在越来越多的文件,包也越来越大,往往进行了简单的修改,但是发布需要持续几分钟甚至更长,而人工发布就只需简单几秒钟拷贝,这样使自动化发布的效果大打折扣。为此做出一些改进的思路。

二 改进思路

  1. 删除copy配置,观察在拉取代码,编译,打包时间的花费。
  2. 使用ftp替代copy命令,观察世间是否有提高。
  3. 修改其中一个.cs类文件,观察对应的dll是否修改日期变化,其它的dll文件并无变化。
  4. 修改其中一个.cshtml view层文件,观察在打包程序中文件修改时间是否发生变化,同样其它文件的修改时间保持不变。
  5. 如果生成的release包,是针对修改文件的时间只发生变化的,就考虑提取相比上次构建时间发生变化的文件,只覆盖此类文件到iis只想磁盘位置。

三 测试进行

  1. 没有文件xcopy,整体在几秒左右时间。
  2. 使用ftp拷贝,文件名不能存在中文(之前有查是jenkins版本问题,升级之后依然存在),同时时间上还是不尽人意。
  3. 目前Enterprise.dll文件修改时间 ‎2016‎年‎6‎月‎13‎日,‏‎14:18:19,进行web项目,.cs文件修改,此dll release修改日期发生变化。
  4. 目前 D:\jenkins1.65\workspace\CI_KKEnterprise(企业端)\EnterpriseCenterPublish\Areas\RZTJ\Views\RZTJ\Index.cshtml(release包)文件修改日期 2016‎年‎6‎月‎13‎日,‏‎12:01:46 当前时间 14:17进行此文件修改以及check in,并执行构建,此文件修改时间变化 ‎2016‎年‎6‎月‎13‎日,‏‎14:18:19,而其它文件时间并没有变化。
  5. 依据3,4分析可以提取最后一次发布后的文件进行copy或者ftp,据此构建以下powershell脚本:
  1. $workbasepath = "D:\jenkins1.65\workspace\CI_KKEnterprise(企业端)\EnterpriseCenterPublish"
  2. cd $workbasepath
  3. #获取最后发布时间
  4. if (Test-Path lastPublish.txt) {
  5. $lastUpdateTime = Get-Content .\lastPublish.txt
  6. #转化为DateTime类型
  7. $lastUpdateTime = Get-Date $lastUpdateTime[1]
  8. }
  9. else{
  10. $lastUpdateTime = Get-Date 1/1/1997
  11. }
  12. #更新本次发布时间文件
  13. Get-Date > lastPublish.txt
  14. $filePath = "D:\jenkins1.65\workspace\CI_KKEnterprise(企业端)\EnterpriseCenterPublish"
  15. $allFile = Get-ChildItem $filePath -recurse | ?{$_.PsIsContainer -eq $false}
  16. foreach($file in $allFile)
  17. {
  18. $daySpan = ($file.LastWriteTime)
  19. #if文件的最后修改时间 大于 最后一次更新时间的保留 其它的删除
  20. if ($daySpan -ge $lastUpdateTime)
  21. {
  22. $file.FullName,$daySpan ,"$$$$", $lastUpdateTime
  23. }else{
  24. $file.FullName,$daySpan, "####" ,$lastUpdateTime
  25. Remove-Item $file.FullName -Recurse -Force
  26. }
  27. }

只保留本次更新文件,其它文件删除掉。至此提高tfs自动发布的效率。

jenkins中使用tfs插件做增量的版本发布部署的更多相关文章

  1. Jenkins中关于一些插件的使用

    Jenkins中关于一些插件的使用方法 最近在为公司搭建CI平台过程中,以及在具体项目实施过程中使用过的一些插件的具体用法: 1. ant插件 这个插件可能是我们最为经常使用的,若构建脚本是使用bui ...

  2. Jenkins中集成jmeter-maven插件

    转自:http://my.oschina.net/u/1377774/blog/168969 目录[-] 第一步.先在maven工程中单独使用jmeter-maven插件 0.环境 1.在POM.xm ...

  3. Linux(Centos)部署Jenkins,并配置Git生成Jar包进行发布部署

    需要先安装jdk.maven.git环境 jdk安装:https://www.cnblogs.com/pxblog/p/10512886.html maven安装:https://www.cnblog ...

  4. Jenkins中关于一些插件的使用方法

    最近在为公司搭建CI平台过程中,以及在具体项目实施过程中使用过的一些插件的具体用法: 1. ant插件 这个插件可能是我们最为经常使用的,若构建脚本是使用build.xml的,那构建引擎肯定会选择an ...

  5. 在Jenkins中执行 PowerShell 命令实现高效的CD/CI部署

    相比于cmd,powershell支持插件.语法扩展和自定义扩展名,是智能化部署中闪闪的新星,越来越多的开发者偏爱使用Powershell. 如何让Jenkins支持Powershell呢?本文即展开 ...

  6. jenkins持续集成、插件以及凭据

    Jenkins介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins功能包括: ...

  7. jenkins 中邮件发送

    1.安装插件 jenkins中安装邮件插件,选择Email Extension 2.开启smtp服务,每个客户端的设置不一样,下图是qq邮箱,仅供参考 3.设置邮件服务 3.1系统设置 3.2 在任务 ...

  8. Gitlab+Jenkins学习之路(八)之发布maven项目及按版本发布

    一.什么是Maven maven是一个项目管理和综合工具.Maven提供给开发人员构建一个完整的生命周期框架. 开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期 ...

  9. 在Eclipse中安装和使用TFS插件

    在Eclipse中安装插件的方法其实都一样,安装TFS的步骤如下: 下载TFS插件.你可以到微软的下载中心,下载TFS插件TFSEclipsePlugin-UpdateSiteArchive-10.0 ...

随机推荐

  1. 学习设计模式第二十七 - GoF之外简单工厂模式

    示例代码来自<深入浅出设计模式>和<大话设计模式> 概述 简单工厂模式又被称为静态工厂模式,属于类的创建型模式.其实质是由一个工厂类根据传入的参量,动态决定应该创建出哪一个产品 ...

  2. 三周,用长轮询实现Chat并迁移到Azure测试

    公司的OA从零开始进行开发,继简单的单点登陆.角色与权限.消息中间件之后,轮到在线即时通信的模块需要我独立去完成.这三周除了逛网店见爱*看动漫接兼职,基本上都花在这上面了.简单地说就是用MVC4基于长 ...

  3. JS 实现"可读"字符串转换成"二进制的01"字符串

    问题起源 看过一个漫画, 两位程序员在办公司交流, 可是说的语言却是010101类似的字符串.周围人很是惊异.计算机的世界,确实是由01组成的.今天突然想实现这个编码转换. 解决思路 学过C语言的都知 ...

  4. 电脑桌面 IE 图标删除不了的解决方法

    电脑换了系统之后想把桌面的IE浏览器给删掉,可是直接删除又删不掉,杀毒软件查杀也没有问题.找了很多方法,终于才把它给解决了.下面,就把我的方法分享给桌面ie图标删除不了的解决方法,希望能对大家有所帮助 ...

  5. WebApi系列~目录

    回到占占推荐博客索引 写了这个系列的文章不少了,也应该为大家写个目录了,最近很刮了很多SOA的风,很多企业都将自己的系统进行分割,通常是按模块进行拆分,为这个模块提供统一的接口提供业务服务,这不紧可以 ...

  6. vue.js组件化开发实践

    前言 公司目前制作一个H5活动,特别是有一定统一结构的活动,都要码一个重复的轮子.后来接到一个基于模板的活动设计系统的需求,便有了下面的内容.借油开车. 组件化 需求一到,接就是怎么实现,技术选型自然 ...

  7. C#事件

    事件(event),这个词儿对于初学者来说,往往总是显得有些神秘,不易弄懂.而这些东西却往往又是编程中常用且非常重要的东西.大家都知道windows消息处理机制的重要,其实C#事件就是基于window ...

  8. AJAX简介

    基本介绍 AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML). 国内翻译常为“阿贾克斯”和阿贾克斯足球队同音.Web应用的交互如Fli ...

  9. ora-01652无法通过128(在表空间temp中)扩展temp段

    今天提交请求后,提示ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段.最后通过ALTER DATABASE TEMPFILE '/*/*/db/apps_st/d ...

  10. 解密jQuery事件核心 - 绑定设计(一)

    说起jQuery的事件,不得不提一下Dean Edwards大神 addEvent库,很多流行的类库的基本思想从他那儿借来的 jQuery的事件处理机制吸取了JavaScript专家Dean Edwa ...