Ошибка компиляции Groovy для простого конвейера “неожиданный токен”

#jenkins #groovy #msbuild #jenkins-pipeline

#дженкинс #groovy #msbuild #дженкинс-конвейер

Вопрос:

У меня есть файл Jenkins для выполнения анализа кода с использованием Sonarcube. Когда я нажимаю фиксацию, сборка Jenkins запускается, но выдает исключение в следующей строке в файле Jenkins :

  -Dsonar.sources=. 
 

со следующей трассировкой стека :
Запуск на уровне долговечности: MAX_SURVIVABILITY
org.codehaus.groovy.control.Исключение MultipleCompilationErrorsException: сбой запуска:
WorkflowScript: 21: неожиданный токен: . @ строка 21, столбец 28.
-Dsonar.sources=.
^
1 ошибка

 at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:150)
at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:120)
at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:132)
at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:350)
at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:144)
at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:110)
at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:234)
at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:168)
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:943)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:605)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
 

Это мой файл Jenkins :

     pipeline {
            agent any
            stages {
                stage('Checkout'){
                    steps{
                        checkout([$class: 'GitSCM', branches: [[name: '*/develop']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'Golide', url: 'https://github.com/Username/MyRepo.git']]])
                    }
                }
                stage('Build') {
                        steps {
                            bat ""${tool 'MSBuild'}" PaySys.sln /p:DeployOnBuild=true /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p:SkipInvalidConfigurations=true /t:build /p:Configuration=Release /p:Platform="Any CPU" /p:DeleteExistingFiles=True /p:publishUrl=c:\inetpub\wwwroot\"
                        }
                }
                stage('Quality Gate') {
     steps {
       script {
       def MSBuildScannerHome = tool 'MSBuild_SonarScanner';
           withSonarQubeEnv("LocalSonar") {
           bat "${MSBuildScannerHome}\SonarQube.Scanner.MSBuild.exe end"
           -Dsonar.projectKey=PaySys 
           -Dsonar.sources=. 
           -Dsonar.css.node=. 
           -Dsonar.host.url=http://localhost:9000 
           -Dsonar.login=dgdhd6585gjgkgkfkfflf7584949"
               }
           }
       }
   }
            }
}
 

MSBuild_SonarScanner ссылается на SonarScanner Дженкинса для установки MSBuild, а LocalSonar ссылается на установку SonarQube Дженкинса.
Два вопроса :

  1. Что не так с моим скриптом groovy?
  2. Является ли моя конфигурация достаточной / правильной для запуска анализа кода

Комментарии:

1. Похоже, здесь вам нужно использовать синтаксис многострочного скрипта. Заключите ваш сценарий bat в ''' кавычки

2. ‘ bat «$ {MSBuildScannerHome} \ SonarQube. Сканер. MSBuild.exe конец» ‘

3. Или это: ‘ bat » $ {MSBuildScannerHome} \ SonarQube. Сканер. MSBuild.exe конец» -Dsonar.projectKey=PaySys -Dsonar.sources=. -Dsonar.css.node=. -Dsonar.host.url= localhost:9000 -Dsonar.login=dgdhd6585gjgkgkfkfflf7584949″ ‘

Ответ №1:

Похоже, здесь вам нужно использовать синтаксис многострочного скрипта. Заключите ваш сценарий bat в ''' кавычки:

 bat '''${MSBuildScannerHome}\SonarQube.Scanner.MSBuild.exe end
           -Dsonar.projectKey=PaySys 
           -Dsonar.sources=. 
           -Dsonar.css.node=. 
           -Dsonar.host.url=http://localhost:9000 
           -Dsonar.login=dgdhd6585gjgkgkfkfflf7584949'''