我正在為我的微服務使用 monorepo,并且每個服務都有一個管道。我有一個 webhook,只要在存盤庫中進行更改,就會通知 jenkins。所以現在的問題是我想檢查存盤庫中的特定檔案夾是否在某些操作之前發生更改。謝謝
uj5u.com熱心網友回復:
方案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-
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/488089.html
