jenkins中配置powershell生成svn日志(word)
2015-08-28 10:59
686 查看
目标:从svn中得到日志,按给定的格式生成Word文件。
word文件格式如下:
每日构建更新记录
标记说明:
+ 新功能全部完成。
# 新功能部分完成。
@ 功能完善(原来已经完成的功能,再次完善)。
* 修正bug(需要在“每日构建日志”中体现的BUG)。
!不能从页面体现的内容。
2013-03-14 Eagle_V2.0 SVN版本号:2254
一 界面可查看内容
1. [+]生成拆线图
2. [+]查询条件设置完成
二 其他内容
1. [@]告警信息信息调整
2. [!] 扩展ExtJS的Combobox
3. [!] 修改ODS图标
4. [!]去掉公式编辑器的验证
5. [!]去除新增‘图表’‘混排’类型的报表时同时增加的报警查询条件
6. [@]告警控件编写
7. [*]修改BUG:Compo00006126 列表-表内链接:选择外部链接后,录入链接地址时页面显示有问题 已修正
其中红色的部分是要从svn日志中提取,其他部分为固定内容。
为了实现这个功能,我选择了使用powershell脚本。
分析:
要生成这个文件就是要把这个文件中红色的部分替换成实际的内容,包括4个部分:
1. 当前日期;
2. svn版本号;
3. 日志中[+]开头的注释;
4. 日志中全部的注释;
准备:
为了实现这个功能,把上面文档中的内容分别定义为:
%date%,%version%,%display%和%all%,在生成word文档时使用查找替换。
实现代码:
说明:
1. 该脚本用户jenkins自动执行,前置操作是jenkins使用Svn更新了指定目录中的文件,后继操作是发送生成的文件给指定的人。
2. 如果 svn目录配置在系统path路径中,则可以不使用全路径。
目标:从svn中得到日志,按给定的格式生成Word文件。
word文件格式如下:
每日构建更新记录
标记说明:
+ 新功能全部完成。
# 新功能部分完成。
@ 功能完善(原来已经完成的功能,再次完善)。
* 修正bug(需要在“每日构建日志”中体现的BUG)。
!不能从页面体现的内容。
2013-03-14 Eagle_V2.0 SVN版本号:2254
一 界面可查看内容
1. [+]生成拆线图
2. [+]查询条件设置完成
二 其他内容
1. [@]告警信息信息调整
2. [!] 扩展ExtJS的Combobox
3. [!] 修改ODS图标
4. [!]去掉公式编辑器的验证
5. [!]去除新增‘图表’‘混排’类型的报表时同时增加的报警查询条件
6. [@]告警控件编写
7. [*]修改BUG:Compo00006126 列表-表内链接:选择外部链接后,录入链接地址时页面显示有问题 已修正
其中红色的部分是要从svn日志中提取,其他部分为固定内容。
为了实现这个功能,我选择了使用powershell脚本。
分析:
要生成这个文件就是要把这个文件中红色的部分替换成实际的内容,包括4个部分:
1. 当前日期;
2. svn版本号;
3. 日志中[+]开头的注释;
4. 日志中全部的注释;
准备:
为了实现这个功能,把上面文档中的内容分别定义为:
%date%,%version%,%display%和%all%,在生成word文档时使用查找替换。
实现代码:
<strong>#定义生成word的函数 function buildWord([string]$svnUrl,[string]$projectPath) { #定义后面会用到的目录、文件等常量 $workspace = "E:\Java\Jenkins\jobs\Email\workspace" $logFile = "E:\Java\Jenkins\jobs\Email\workspace\eagle2.log" $wordFile = "$workspace\Eagle_V2.doc" $lastdate = (get-date).toString("yyyy-MM-dd") $nextDay = (get-date).addDays(1).toString("yyyy-MM-dd") #执行svn得到当天提交的日志 cmd /C "E:\Java\Subversion\bin\svn log $svnUrl -r{$lastdate}:{$nextDay} --username lichenglin --password 123 >""$logFile""" #复制模板文件为要生成的文件 cmd /C "copy /Y $workspace\Eagle_V2_2.doc $wordFile" # word操作要使用的变量 $ReplaceAll = 2 $FindContinue = 1 $MatchCase = $False $MatchWholeWord = $True $MatchWildcards = $False $MatchSoundsLike = $False $MatchAllWordForms = $False $Forward = $True $Wrap = $FindContinue $Format = $False #打开word $wordApp = New-Object -COM Word.Application $wordApp.Visible = $False #$file = (dir $wordFile).FullName $doc = $wordApp.Documents.Open($wordFile) $Selection = $wordApp.Selection #日期 $FindText = "%date%" $replaceText = get-date -format yyyy-MM-dd $Selection.Find.Execute( $FindText, $MatchCase, $MatchWholeWord , $MatchWildcards, $MatchSoundsLike, $MatchAllWordForms, $Forward, $FindContinue, $Wrap, $replaceText, $ReplaceAll ) #版本 $FindText = "%version%" #使用svnversion得到给定目录或文件的svn版本号 $replaceText = E:\Java\Subversion\bin\svnversion $projectPath $Selection.Find.Execute( $FindText, $MatchCase, $MatchWholeWord , $MatchWildcards, $MatchSoundsLike, $MatchAllWordForms, $Forward, $FindContinue, $Wrap, $replaceText, $ReplaceAll ) $Range = "" $ConfirmConversions= $False $Link = $False $Attachment = $False #显示的内容 $FindText = "%display%" #从日志文件中取[+]开始的行,并加上行号后,保存到mylog1.log文件中 cat $logFile | select-string -pattern \[\+\] |foreach-object -process {($num++).tostring() + ". " + $_}> $workspace\mylog1.log; #选中"%display%" $Selection.Find.Execute( $FindText, $MatchCase, $MatchWholeWord , $MatchWildcards, $MatchSoundsLike, $MatchAllWordForms, $Forward ) #用文件中的内容替换选中的内容 $Selection.InsertFile("""$workspace\mylog1.log""", $Range, $ConfirmConversions, $Link, $Attachment) #所有svn日志 $FindText = "%all%" cat $logFile | select-string -pattern \[.\] |foreach-object -process {($num++).tostring() + ". " + $_}> $workspace\mylog2.log; #clip|$replaceText #$replaceText $Selection.Find.Execute( $FindText, $MatchCase, $MatchWholeWord , $MatchWildcards, $MatchSoundsLike, $MatchAllWordForms, $Forward ) $Selection.InsertFile("""$workspace\mylog2.log""", $Range, $ConfirmConversions, $Link, $Attachment) #关闭word $doc.close() $wordApp.Quit() } #调用函数生成word文档 buildWord "http://192.168.0.123:8088/svn/honghe_V2/04Code/v2.0/<span style="font-family: Tahoma; text-align: -webkit-auto;">honghe</span><span style="text-align: -webkit-auto; font-family: Tahoma;">" "E:\Java\Jenkins\jobs\Eagle_V2.0\workspace"</span></strong>
说明:
1. 该脚本用户jenkins自动执行,前置操作是jenkins使用Svn更新了指定目录中的文件,后继操作是发送生成的文件给指定的人。
2. 如果 svn目录配置在系统path路径中,则可以不使用全路径。
相关文章推荐
- linux shell——命令之乐
- linux shell 快捷键
- Linux学习笔记-------shell基础
- shell练习一
- shell练习二
- shell练习三
- shell练习四
- linux添加用户切换后显示-bash4.1$的解决办法
- Linux Shell高级技巧
- linux shell 命令常用快捷键
- Linux学习日记--基础命令(7)--bash中的变量,配置文件
- linux shell bash 内置变量参考
- Windows中SSH Secure Shell Client 的使用方法
- linux shell——小试牛刀
- shell 语句的应用
- WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).
- 使用bash将csv文件数据读写到MySQL数据库的脚本之一
- 常用shell脚本命令
- 使用bash将csv文件数据读写到MySQL数据库的脚本之一
- 命令__shell数字-字符串比较