Jenkins在构建之前检查存储库中的更改



我正在为我的微服务使用单线程,并且每个服务都有一个管道。我有一个webhook,每当在存储库中进行更改时都会通知jenkins。所以现在的问题是,我想检查一个特定的文件夹在仓库中,如果有一个变化之前,一些操作。由于

解决方案01处理Webhook请求

当Webhook通知Jenkins时,它会发送一堆细节给Jenkins。包括变更日志。您应该收到以下详细信息。因此,作为第一步,您可以处理来自Github的详细信息,并确定您正在寻找的文件夹是否被更改。

"added": [ ],
"removed": [ ],
"modified": ["test/testfile.yaml"]

你可以把这个作为参考。

解决方案02不处理Webhook

似乎您无法通过简单的模式匹配完成此操作,因为目前不支持目录名称检查。但作为一种变通方法,您可以使用如下所示的方法。您可以指定要检查的目录名,如folderName = "DIR_NAME">

pipeline {
agent any
stages {
stage('Cloning') {
steps {
// Get some code from a GitHub repository
git branch: 'main', url: 'https://github.com/yasassri/sample.git'
}
}

stage('Example Deploy') {
when { expression {
def changeLogSets = currentBuild.changeSets
def folderName = "testdir2"
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]
if(file.path.contains(folderName)){
return true
}
}
}
}
return false
}

}
steps {
echo 'Deploying==================='
}
}
}
}

引用:https://support.cloudbees.com/hc/en-us/articles/217630098-How-to-access-Changelogs-in-a-Pipeline-Job-

最新更新