Jenkins 没有这种DSL方法';waitForQualityGate';在台阶间找到的
我对方法Jenkins 没有这种DSL方法';waitForQualityGate';在台阶间找到的,jenkins,sonarqube,jenkins-pipeline,quality-gate,Jenkins,Sonarqube,Jenkins Pipeline,Quality Gate,我对方法waitForQualityGate()有问题。我得到了一个错误“没有这样的DSL方法‘waitForQualityGate’在步骤中找到”。另一件奇怪的事情是,我必须为声纳扫描仪使用参数-DX。我不知道怎么了。谢谢你的帮助 pipeline { agent { label 'builders' } tools { maven 'maven 3.3.9' } stages { stage ('Checkout'){ steps {
waitForQualityGate()
有问题。我得到了一个错误“没有这样的DSL方法‘waitForQualityGate’在步骤中找到”。另一件奇怪的事情是,我必须为声纳扫描仪使用参数-DX
。我不知道怎么了。谢谢你的帮助
pipeline {
agent { label 'builders' }
tools {
maven 'maven 3.3.9'
}
stages {
stage ('Checkout'){
steps {
git branch: 'develop', credentialsId: 'credential', url: 'ssh://repository'
}
}
stage ('Build'){
steps {
withMaven (
maven: 'maven 3.3.9',
mavenSettingsConfig: 'cc86690e-095d-4714-92b2-b61861241c7a'){
sh 'mvn -U clean package -DskipTests'
}
}
}
stage ('SonarQube Scan'){
steps {
withSonarQubeEnv('SonarQube') {
withMaven (
maven: 'maven 3.3.9',
mavenSettingsConfig: 'cc86690e-095d-4714-92b2-b61861241c7a'){
sh 'mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar ' +
'-DX' +
'-Dsonar.login=login' +
'-Dsonar.password=password' +
'-Dsonar.issuesReport.json.enable=true' +
'-Dsonar.report.export.path=sonar-report.json'
}
} // SonarQube taskId is automatically attached to the pipeline context
}
}
stage ('Quality Gate') {
steps {
timeout(time: 1, unit: 'HOURS') { // Just in case something goes wrong, pipeline will be killed after a timeout
script {
def qg = waitForQualityGate() // Reuse taskId previously collected by withSonarQubeEnv
if (qg.status != 'OK') {
error "Pipeline aborted due to quality gate failure: ${qg.status}"
}
}
}
}
}
}
}这不是一个立即的答案,但出现错误的原因是,您在调用自定义方法时甚至没有先加载它。加载具有该方法的groovy文件,jenkins抱怨dsl不存在。。。只有在加载groovy文件/类时,才能实例化它 无法在不加载的情况下执行此操作<代码>定义qg=waitForQualityGate()
如果它是一个方法,你必须调用它,它应该返回一些东西…这看起来比。例如,在质量门步骤中是否需要
脚本{…}
?另外,参数之间没有空格时,'-Dsonar.login=login'+'-Dsonar.password=password'
看起来不正确。顺便说一句,您不需要指定sonar.login
和sonar.password
,因为它们应该来自和sonarqubeenv
。我建议创建尽可能小的工作示例,然后一步一步地丰富配置,找出它是如何中断的,以及在什么时候需要“script{}”,因为我使用声明性管道。是的,我删除了“sonar.login,sonar.password”。也许,重要的一点是,我使用的是从属代理。