jenkins2pipeline中使用groovy语言获取最新修改里的文件

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

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

博主: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'
              )
}
 

转载于:https://www.cnblogs.com/elevenheart/p/7216587.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值