我在 git 存储库中有应用程序及其代码。还有 jenkinsfiles 用于在另一个存储库中构建应用程序和这些文件。问题是詹金斯构建了变更日志。詹金斯添加 jenkinsfiles 变更日志来构建变更集,我不想那样做。因为这些更改是根据与应用程序无关的基础架构进行的。如何防止这种情况?我没有找到任何解决方法或解决方案。
1 回答
1
如果我很好地回答了您的问题...我认为您不能从 Jenkins 从 git 读取的更改集中删除 Jenkinsfile 更改,但是,如果 Jenkinsfile 只有更改,则可以跳过构建管道。
如果有帮助...首先,您需要阅读更改集:
def changedFiles = []
for (changeLogSet in currentBuild.changeSets) {
for (entry in changeLogSet.getItems()) {
for (file in entry.getAffectedFiles()) {
changedFiles.add(file.getPath())
}
}
}
然后,您可以检查它是否只有 Jenkinsfile:
if (changedFiles.size() == 1 && changedFiles[0] == "Jenkinsfile"){
println "Only Jenkinsfile has changed... Skipping build..."
currentBuild.getRawBuild().getExecutor().interrupt(Result.SUCCESS) // this skips your build prematurely and makes the rest of the stages green
sleep(1) // you just need this
}else{
println "There are other changes rather than only Jenkinsfile, build will proceed."
}
PS您有几种方法可以提前终止作业而不会导致构建失败,但这是我的经验中最干净的方法,即使您需要在 Jenkins 上允许一些管理员签名权限(前段时间我在另一个线程中看到过它) ,虽然现在找不到)
于 2020-04-24T21:40:31.723 回答