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 ...
随机推荐
- [.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类
[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口 IXmlSerializable 实现XML序列化 及 通用XML类 本节导读:本节主要介绍通过序列 ...
- Mongoose Schemas定义中timestamps选项的妙用
在Node.js中使用MongoDB少不了Mongoose. 假设有如下Mongoose Schemas的定义: var ItemSchema = new mongoose.Schema({ biz: ...
- 2013 duilib入门简明教程 -- XML配置界面(6)
前面那些教程都是为了让小伙伴们从win32.MFC过渡到duilib,让大家觉得duilib不是那么陌生,如果大家现在还对duilib非常陌生的话,那就说明前面的教程做得不好,请大家在下面留言 ...
- hibernate用注解替代映射文件
1.首先把原来的映射文件删掉,给实体类添加注解: @Entity //声明当前类为hibernate映射到数据库中的实体类 @Table(name="news") //声明tabl ...
- easyui 日期显示
{ field: 'UpdateDatetime', title: '更新时间', width: 100, align: 'left', sortable: true , formatter: fun ...
- SQL Server 2014新特性探秘(1)-内存数据库
简介 SQL Server 2014提供了众多激动人心的新功能,但其中我想最让人期待的特性之一就要算内存数据库了.去年我再西雅图参加SQL PASS Summit 2012的开幕式时,微软就宣布 ...
- ClickOnce部署(3):使用证书
在讲述证书的使用前,我们先来了解另外一个知识——发布网页. 在前面所说的ClickOnce部署中,如果大家细心的话,应该会发现这么个问题. 如上图,发布成功后,在"输出"窗口中提示 ...
- sizzle分析记录: 自定义伪类选择器
可见性 :hidden :visible 隐藏对象没有宽高,前提是用display:none处理的 jQuery.expr.filters.hidden = function( elem ) { // ...
- 【转】WPF TextBox和PasswordBox加水印
Textbox加水印 Textbox加水印,需要一个VisualBrush和触发器验证Text是否为空,在空的时候设置背景的Brush就可以实现水印效果. <TextBox Name=" ...
- SQL联合主键 查重
2014年最后一天,今天在给数据库导入数据的时候,遇到一个问题,就是联合主键去重. 事情是这样的,现有一个表M,我想找个表中导入了许多数据,并需要将字段A(int)和B(int)联合设置为主键. 但是 ...