--------------------------------------------------------------------
本文参考多篇文章结合自身情况完成,可自由转载,需保留本文出处!
博主: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'
)
}