一 配置介绍

使用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脚本:
$workbasepath = "D:\jenkins1.65\workspace\CI_KKEnterprise(企业端)\EnterpriseCenterPublish"
cd $workbasepath
#获取最后发布时间
if (Test-Path lastPublish.txt) {
$lastUpdateTime = Get-Content .\lastPublish.txt
#转化为DateTime类型
$lastUpdateTime = Get-Date $lastUpdateTime[1]
}
else{
$lastUpdateTime = Get-Date 1/1/1997
}
#更新本次发布时间文件
Get-Date > lastPublish.txt
$filePath = "D:\jenkins1.65\workspace\CI_KKEnterprise(企业端)\EnterpriseCenterPublish"
$allFile = Get-ChildItem $filePath -recurse | ?{$_.PsIsContainer -eq $false}
foreach($file in $allFile)
{
$daySpan = ($file.LastWriteTime)
#if文件的最后修改时间 大于 最后一次更新时间的保留 其它的删除
if ($daySpan -ge $lastUpdateTime)
{
$file.FullName,$daySpan ,"$$$$", $lastUpdateTime
}else{
$file.FullName,$daySpan, "####" ,$lastUpdateTime
Remove-Item $file.FullName -Recurse -Force
}
}

只保留本次更新文件,其它文件删除掉。至此提高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. iTextSharp 116秒处理6G的文件

    前言: 有一家印刷企业专为米兰新娘,微微新娘,金夫人这样的影楼印刷婚纱相册.通过一个B2B销售终端软件,把影楼的相片上传到印刷公司的服务器,服务器对这些图片进行处理. 比如: 1)为每个图片生成订单条 ...

  2. ASP.NET MVC 路由(五)

    ASP.NET MVC 路由(五) 前言 前面的篇幅讲解了MVC中的路由系统,只是大概的一个实现流程,让大家更清晰路由系统在MVC中所做的以及所在的位置,通过模糊的概念描述.思维导图没法让您看到路由的 ...

  3. A Beginner's Guide to Paxos

    Google Drive: A Beginner's Guide to Paxos The code ideas of Paxos protocol: 1) Optimistic concurrenc ...

  4. JS原生第八篇 (帅哥)

    1.1 复习     1. clientX          clientWidth   可视区域的宽度 clientWidth     width  +  padding offsetWidth   ...

  5. 深入理解DOM节点类型第七篇——文档节点DOCUMENT

    × 目录 [1]特征 [2]快捷访问 [3]文档写入 前面的话 文档节点document,隶属于表示浏览器的window对象,它表示网页页面,又被称为根节点.本文将详细介绍文档节点document的内 ...

  6. .NET平台机器学习资源汇总,有你想要的么?

    接触机器学习1年多了,由于只会用C#堆代码,所以只关注.NET平台的资源,一边积累,一边收集,一边学习,所以在本站第101篇博客到来之际,分享给大家.部分用过的 ,会有稍微详细点的说明,其他没用过的, ...

  7. 应用程序框架实战十一:创建VS解决方案与程序集

    上一篇,介绍了开发环境需要的工具和版本,本篇将动手创建VS解决方案. 对于本系列文章提供的示例,我想通过两种途径来演示,一种是单元测试,另外为了能更直观的看到效果,还会提供一个用户界面来展示.为了不分 ...

  8. 交叉验证(Cross Validation)原理小结

    交叉验证是在机器学习建立模型和验证模型参数时常用的办法.交叉验证,顾名思义,就是重复的使用数据,把得到的样本数据进行切分,组合为不同的训练集和测试集,用训练集来训练模型,用测试集来评估模型预测的好坏. ...

  9. Redis入门

    一.安装 目前,官方最新稳定版本为3.0.7 # wget http://download.redis.io/releases/redis-3.0.7.tar.gz # cd /usr/local/ ...

  10. Lua 学习笔记(七)编译、执行外部代码块

    Lua称为解释型语言的原因:Lua允许在运行源代码之前,先将源代码预编译为一种中间形式.区别解释型语言的主要特征是在于编译器是否是语言运行时库的一部分,即有能力执行动态生成的代码.因为Lua中有dof ...