Неуказанная ошибка нулевого указателя Jenkinsfile в шагах рабочего процесса - PullRequest
0 голосов
/ 25 января 2019

Я столкнулся со следующей ошибкой в ​​конвейере Jenkinsfile, который я строил:

java.lang.NullPointerException
    at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:80)
    at org.jenkinsci.plugins.workflow.steps.CoreStep$Execution.run(CoreStep.java:67)
    at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Finished: FAILURE

Проблема здесь, прежде всего, заключается в том, что я точно не знаю, что происходит.Поскольку все, что он упоминает, это ошибка нулевого указателя, я точно не могу быть уверен, и не могу найти ничего более конкретного.

Вот мой Jenkinsfile:

#!groovy
node {
    withEnv(["WORKSPACE=${pwd()}"]) { //Setting Workspace to the current directory
        stage('Clone repository...') {
            checkout scm //Let checkout automagically handle pulling in all the names we need and whatnot
        }
        stage('Building WAR...') {
            step(withMaven(
                    // Maven installation declared in the Jenkins "Global Tool Configuration"
                    maven: 'Maven 3.6.0') {
                // Run the maven build
                sh 'mvn clean install' //Same as running on local
                sh 'mv ${WORKSPACE}/target/QUserService.war ${WORKSPACE}/target/QUserService_War-QUserService-${BRANCH_NAME}-${BUILD_NUMBER}.war'
                //For above line, 'mv' is the Linux command to rename/move files, which is needed for the UCD script
            }
            // withMaven will discover the generated Maven artifacts, JUnit Surefire & FailSafe & FindBugs reports...
        )
        }
     }
}

1 Ответ

0 голосов
/ 26 января 2019

Итак, во-первых, вам не нужно определять рабочее пространство.Это определено для вас Дженкинс.Вы можете убедиться в этом, запустив sh 'set' на агенте linux.

Далее вам не нужно проверять проект.Он уже будет там (при условии, что вы используете конвейерный проект).

Далее вам не нужно помещать withMaven в шаговый вызов.В сценарии с конвейером материал на этапе - это отличный сценарий.Шаг не обязателен.

node {
        stage('Building WAR...') {
            withMaven(
                    maven: 'Maven 3.5.0') {
                // Run the maven build
                sh 'mvn clean install' //Same as running on local
        }
}

Я убрал шаг и прокомментировал, чтобы сделать его более понятным.

Я не получил ошибку нулевого указателя.Посмотрите, удаляет ли NPE удаление вызова шага и удаление шага вызова.Если нет, я бы предложил подключить вывод консоли, чтобы попытаться увидеть, где это происходит.

...