我希望能夠僅使用一個主 jenkinsfile 來執行我在存盤庫中的 Files 中組織的特定組件。
例如我有這個回購結構:

我有三個不同的組件:Topic_A、Topic_B、Topic_C(相同型別的組件,但將為不同的團隊創建)。我希望能夠只修改 Topic_A 和 C,并且在我推送分支后,我希望我的 jenkinsfile 能夠僅執行這些更改,而不是重新部署未修改的 Topic_B。
我的問題是這可能嗎?可以用詹金斯管道完成嗎?或任何其他組件?(腳本)
謝謝你。
uj5u.com熱心網友回復:
有一個變更集指令允許您檢查 Git 存盤庫中的檔案是否已更改。但它不支持檢查目錄,因此您可以執行以下操作。
pipeline {
agent any
stages {
stage('Cloning') {
steps {
// Get some code from a GitHub repository
git branch: 'main', url: 'https://github.com/xxxx/sample.git'
}
}
stage('TOPIC_A') {
when { expression { isChanged("Topic_A") } }
steps {
echo 'Doing something for Topic A'
}
}
stage('TOPIC_B') {
when { expression { isChanged("Topic_B") } }
steps {
echo 'Doing something for Topic B'
}
}
}
}
def isChanged(dirName) {
def changeLogSets = currentBuild.changeSets
def folderName = dirName
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
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/497284.html
