我遇到方法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}"
}
}
}
}
}
}
}
答案 0 :(得分:0)
这不是一个直接的答案,但错误的原因是,您调用的是自定义方法,甚至最初都没有加载它。加载具有该方法的groovy文件,jenkins抱怨dsl不存在...只有在加载groovy文件/类时,才可以实例化它。
如果不加载它就无法执行此操作... def qg = waitForQualityGate()
如果它是一个方法,你必须调用它,它应该返回一些东西......