jenkins中使用tfs插件做增量的版本发布部署
一 配置介绍
使用jenkins的tfs插件进行,源码的下载,编译,打包的操作,然后使用windows的批处理命令,在局域网内(或者本机)把打包的release包,删除掉web.config,然后靠配到iis指向的磁盘位置,如此实现自动发布。在此种情况下,因为源码经过演进项目扩大,存在越来越多的文件,包也越来越大,往往进行了简单的修改,但是发布需要持续几分钟甚至更长,而人工发布就只需简单几秒钟拷贝,这样使自动化发布的效果大打折扣。为此做出一些改进的思路。
二 改进思路
- 删除copy配置,观察在拉取代码,编译,打包时间的花费。
- 使用ftp替代copy命令,观察世间是否有提高。
- 修改其中一个.cs类文件,观察对应的dll是否修改日期变化,其它的dll文件并无变化。
- 修改其中一个.cshtml view层文件,观察在打包程序中文件修改时间是否发生变化,同样其它文件的修改时间保持不变。
- 如果生成的release包,是针对修改文件的时间只发生变化的,就考虑提取相比上次构建时间发生变化的文件,只覆盖此类文件到iis只想磁盘位置。
三 测试进行
- 没有文件xcopy,整体在几秒左右时间。
- 使用ftp拷贝,文件名不能存在中文(之前有查是jenkins版本问题,升级之后依然存在),同时时间上还是不尽人意。
- 目前Enterprise.dll文件修改时间 2016年6月13日,14:18:19,进行web项目,.cs文件修改,此dll release修改日期发生变化。
- 目前 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,而其它文件时间并没有变化。
- 依据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插件做增量的版本发布部署的更多相关文章
- Jenkins中关于一些插件的使用
Jenkins中关于一些插件的使用方法 最近在为公司搭建CI平台过程中,以及在具体项目实施过程中使用过的一些插件的具体用法: 1. ant插件 这个插件可能是我们最为经常使用的,若构建脚本是使用bui ...
- Jenkins中集成jmeter-maven插件
转自:http://my.oschina.net/u/1377774/blog/168969 目录[-] 第一步.先在maven工程中单独使用jmeter-maven插件 0.环境 1.在POM.xm ...
- Linux(Centos)部署Jenkins,并配置Git生成Jar包进行发布部署
需要先安装jdk.maven.git环境 jdk安装:https://www.cnblogs.com/pxblog/p/10512886.html maven安装:https://www.cnblog ...
- Jenkins中关于一些插件的使用方法
最近在为公司搭建CI平台过程中,以及在具体项目实施过程中使用过的一些插件的具体用法: 1. ant插件 这个插件可能是我们最为经常使用的,若构建脚本是使用build.xml的,那构建引擎肯定会选择an ...
- 在Jenkins中执行 PowerShell 命令实现高效的CD/CI部署
相比于cmd,powershell支持插件.语法扩展和自定义扩展名,是智能化部署中闪闪的新星,越来越多的开发者偏爱使用Powershell. 如何让Jenkins支持Powershell呢?本文即展开 ...
- jenkins持续集成、插件以及凭据
Jenkins介绍 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins功能包括: ...
- jenkins 中邮件发送
1.安装插件 jenkins中安装邮件插件,选择Email Extension 2.开启smtp服务,每个客户端的设置不一样,下图是qq邮箱,仅供参考 3.设置邮件服务 3.1系统设置 3.2 在任务 ...
- Gitlab+Jenkins学习之路(八)之发布maven项目及按版本发布
一.什么是Maven maven是一个项目管理和综合工具.Maven提供给开发人员构建一个完整的生命周期框架. 开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期 ...
- 在Eclipse中安装和使用TFS插件
在Eclipse中安装插件的方法其实都一样,安装TFS的步骤如下: 下载TFS插件.你可以到微软的下载中心,下载TFS插件TFSEclipsePlugin-UpdateSiteArchive-10.0 ...
随机推荐
- python自动化测试(4)-使用第三方python库技术实现
python自动化测试(4)-使用第三方python库技术实现 1 概述 关于测试的方法论,都是建立在之前的文章里面提到的观点: 功能测试不建议做自动化 接口测试性价比最高 接口测试可以做自动化 ...
- log4j2.xml实用例子
一个多月前,我写了篇关于log4j.xml配置的文章,点击此处查看:http://www.cnblogs.com/guogangj/p/3931397.html 最近,我把自己的log4j升级到2.0 ...
- Mint linux 自定义上下文菜单实现ZIP压缩文件无乱码解压
1. 前提条件 我的Mint Linux 是Thunar文件管理器(默认的). 2. 配置自定义动作 打开Thunar文件管理器,点击菜单“编辑”=>“配置自定义动作”.点击“+”添加一个新的. ...
- 2013 duilib入门简明教程 -- 简单控件介绍 (12)
前面的教程应该让大家对duilib的整体有所映像了,下面就来介绍下duilib具体控件的使用. 由于官方没有提供默认的控件样式,所以我就尽量使用win7或者XP自带的按钮样式了,虽然界 ...
- myeclipse转到函数定义的方法去
转到函数的定义CTRl+鼠标左击 myeclipse自动补全的快捷键 alt+/
- python定时重跑获取数据
做大数据的童鞋经常会写定时任务跑数据,由于任务之间的依赖(一般都是下游依赖上游的数据产出),所以经常会导致数据获取失败,因为很多人发现数据失败后 都会去查看日志,然后手动去执行自己的任务.下面我实现了 ...
- Package Configurations的使用示例
SSIS提供Package Configurations功能,能够动态修改配置数据,使package执行不同的变量,从不同的connection中获取数据,而这些变化,不需要修改Package,不需要 ...
- lintcode 最长上升连续子序列 II(二维最长上升连续序列)
题目链接:http://www.lintcode.com/zh-cn/problem/longest-increasing-continuous-subsequence-ii/ 最长上升连续子序列 I ...
- Web APi之异常处理(Exception)以及日志记录(NLog)(十六)
前言 上一篇文章我们介绍了关于日志记录用的是Log4net,确实也很挺强大,但是别忘了我们.NET有专属于我们的日志框架,那就是NLog,相对于Log4net而言,NLog可以说也是一个很好的记录日志 ...
- JavaScript sync and async(同步和异步)
推荐四篇文章: JavaScript 是单线程的深入分析 JavaScript 运行机制详解:再谈 Event Loop JavaScript 异步编程的4种方法 JavaScript 既是单线程又是 ...