Jenkins SCM插件,如何获得自上次构建以来的每个更新文件的列表?
我有一个Jenkins管道构建,我想迭代自上次构建以来更新的所有文件。我环顾四周,认为当前构建对象的changeSets变量可能会起作用。所以我试了一下:Jenkins SCM插件,如何获得自上次构建以来的每个更新文件的列表?,jenkins,Jenkins,我有一个Jenkins管道构建,我想迭代自上次构建以来更新的所有文件。我环顾四周,认为当前构建对象的changeSets变量可能会起作用。所以我试了一下: def gitUrl = "git@gitlab.xxx.com:me/myrepo.git" def gitResponse = dir(".") { checkout([ $class: 'GitSCM', branches: [[name: '*/master']], userRemoteConfigs: [[url: gitU
def gitUrl = "git@gitlab.xxx.com:me/myrepo.git"
def gitResponse = dir(".") { checkout([
$class: 'GitSCM', branches: [[name: '*/master']],
userRemoteConfigs: [[url: gitUrl,credentialsId:'xxxkey']]
]) }
// don't do anything if nothing changed
if(gitResponse.GIT_COMMIT == gitResponse.GIT_PREVIOUS_COMMIT) {
echo "No changes detected."
return
}
def changeLogSets = currentBuild.changeSets
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]
echo "Change detected: ${entry}"
}
}
是否可以列出自上次生成以来每个更改的文件?我创建了脚本管道,用于打印当前生成中引入的更改:
node {
checkout([$class: 'GitSCM', branches: [[name: 'YOUR_BRANCH']],
userRemoteConfigs: [[url: 'YOUR_GIT_URL']]])
stage('TEST') {
def changeLogSets = currentBuild.changeSets
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]
entry.getAffectedPaths().each {
echo "Change detected: ${it}"
}
}
}
}
}
节点{
签出([$class:'GitSCM',分支:[[name:'YOUR_BRANCH']],
userRemoteConfigs:[[url:'YOUR\u GIT\u url']]
阶段(“测试”){
def changeLogSets=currentBuild.changeSets
对于(int i=0;i
我创建了脚本管道,用于打印当前版本中引入的更改:
node {
checkout([$class: 'GitSCM', branches: [[name: 'YOUR_BRANCH']],
userRemoteConfigs: [[url: 'YOUR_GIT_URL']]])
stage('TEST') {
def changeLogSets = currentBuild.changeSets
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]
entry.getAffectedPaths().each {
echo "Change detected: ${it}"
}
}
}
}
}
节点{
签出([$class:'GitSCM',分支:[[name:'YOUR_BRANCH']],
userRemoteConfigs:[[url:'YOUR\u GIT\u url']]
阶段(“测试”){
def changeLogSets=currentBuild.changeSets
对于(int i=0;i
要以更实用的方式解释Krzysztof的答案,您可以获得修改路径集,如下所示:
def paths = currentBuild
.changeSets.collectMany {
it.items.collectMany {
it.affectedPaths
}
}.unique()
然后可以使用
回显路径进行检查。加入('\n')
。您可以在脚本
步骤中的声明性管道中使用它。要以更实用的方式解释Krzysztof的答案,您可以获得修改路径集,如下所示:
def paths = currentBuild
.changeSets.collectMany {
it.items.collectMany {
it.affectedPaths
}
}.unique()
然后可以使用回显路径进行检查。加入('\n')
。您可以在脚本
步骤中的声明性管道中使用它