ElevenHeart

粗缯大布裹生涯,腹有诗书气自华。

--------------------------------------------------------------------

本文参考多篇文章结合自身情况完成,可自由转载,需保留本文出处!

博主:ElevenHeart

http://www.cnblogs.com/elevenheart/p/7216587.html                    

--------------------------------------------------------------------

备注:
env.BRANCH_NAME 分支名
env.JOB_NAME 工程名
env.BUILD_NUMBER 构建次数
env.BUILD_URL 构建网址
 
node {
   //  checkout()      用来读取源码,若已配置了源码链接则不需要写,若要添加,则再()里加上代码链接,具体格式可查看:

 

     checkChange()
 
}
 
@NonCPS
def void checkChange() {
def changeLogSets = currentBuild.rawBuild.changeSets    /*currentBuild.rawBuild.changeSets表示获取最新修改里的内容*/
def flag = false
def strChange = "以下文件发生了变化:\n"
for (int i = 0; i < changeLogSets.size(); i++) {
         def entries = changeLogSets[i].items
         for (int j = 0; j < entries.length; j++) {
                    def entry = entries[j]
                    def files = new ArrayList(entry.affectedFiles)
                    for (int k = 0; k < files.size(); k++) {
                               def file = files[k]
                               echo "strChange + ${file.editType.name} ${file.path}\n"                     
                                }
                      }
             }
 }
 
//以上可获取每次构建后最新修改里的所有文件 
 
若想从最新修改里选择出某些特定文件,并加已邮件报警则请查看下面的代码:
 
import java.util.regex.*
 
node { 
   //    checkout()
      checkChange()
}
 
@NonCPS
def void checkChange() {
def changeLogSets = currentBuild.rawBuild.changeSets
def flag = false
def strChange = "以下文件发生了变化:\n"
for (int i = 0; i < changeLogSets.size(); i++) {
           def entries = changeLogSets[i].items
           for (int j = 0; j < entries.length; j++) {
                      def entry = entries[j]
                      def files = new ArrayList(entry.affectedFiles)
                      for (int k = 0; k < files.size(); k++) {
                                 def file = files[k]
                                 Pattern p = Pattern.compile("/想要匹配的正则表达式/")
                                 Matcher m = p.matcher("${file.path}")
                                 if (m.find()) {                                                                               /*若不需要正则表达式匹配,则可直接使用  if (file.path.contains('/xxx/xxx/xxxxx'))*/
                                            flag = true
                                            strChange += "${file.editType.name} ${file.path}\n"
                                 }
                    }
           }
}
if (flag == true) {
          notifySCMChanged(strChange)
       }
}
 
def notifySCMChanged(def files) {
                emailext(
                            subject: '某些文件发生变化',
                            body: """${files}
查看文件变化: ${env.BUILD_URL}changes
""",
                            to: 'XXX@xxxxx.com'
              )
}
 
posted on 2017-07-21 10:57  ElevenHeart  阅读(3436)  评论(0编辑  收藏  举报