脚本管道中的条件是什么?

Mug*_*ugz 5 jenkins jenkins-pipeline

在声明式管道中,我们有以下条件:

pipeline {
    agent any
    stages {
        stage('Example Build') {
            when {
                changeset 'service1\**'
            }
            steps {
                echo 'Building'
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以在脚本管道中做一些事情吗?

小智 3

您可以像这样检查与特定模式匹配的文件(未测试)

创建一个函数来检查所需目录中的更改...

@NonCPS
boolean isMyDirChanged() {
  for (changeLogSet in currentBuild.changeSets) { 
    for (entry in changeLogSet.getItems()) { // for each commit in the detected changes
      for (file in entry.getAffectedFiles()) {
        if (file.getPath() ==~ /^service1/) {
          return true
        }
      }
    }
  }
  return false
}
Run Code Online (Sandbox Code Playgroud)

...然后使用该函数来确定是否应该执行某些代码

if (isMyDirChanged()) {
  print ('Building')
}
Run Code Online (Sandbox Code Playgroud)