2017-02-22 13 views
1

Jenkins версии = 2,19 Дженкинс многоотраслевая Pipeline версии плагина = 2,92Дженкинс трубопровода условный этап успешно, но Дженкинс показывает построить несостоявшимся

У меня есть Jenkinsfile с несколькими условных этапов, основанных на ветви.

Вот модифицированная для краткости версии моего Jenkinsfile:

node { 
    stage('Checkout') { 
     checkout scm 
    } 

    stage('Clean Verify') { 
     sh 'mvn clean verify' 
    } 

    if (env.BRANCH_NAME == "develop") { 
     stage('Docker') { 
      sh 'mvn docker:build -DpushImage' 
     } 
    } 
} 

Я использую плагин многоотраслевого трубопровода.

Он успешно обнаруживает и строит все мои ветви.

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

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

Jenkins failed build

я получаю тот же результат для разработки отрасли, а также - он успешно выполняет этап Docker но отчеты сборки не удалось.

Я ожидаю, что каждая ветка сообщит об успехе, так как пройденные этапы пройдены.

EDIT 1

Вот конец журнала сборки (я надеюсь, что это достаточно, поскольку я не хочу, чтобы выбрать все частные данные, но дайте мне знать, если это требуется)

[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 30.459 s 
[INFO] Finished at: 2017-02-21T15:13:02+11:00 
[INFO] Final Memory: 84M/769M 
[INFO] ------------------------------------------------------------------------ 
[Pipeline] } 
[Pipeline] // stage 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] sh 
Required context class hudson.FilePath is missing 
Perhaps you forgot to surround the code with a step that provides this, such as: node 
[Pipeline] End of Pipeline 
org.jenkinsci.plugins.workflow.steps.MissingContextVariableException: Required context class hudson.FilePath is missing 
    at org.jenkinsci.plugins.workflow.steps.StepDescriptor.checkContextAvailability(StepDescriptor.java:253) 
at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:179) 
at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:126) 
at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108) 
at groovy.lang.GroovyObject$invokeMethod.call(Unknown Source) 
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 
at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:151) 
at org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:21) 
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:115) 
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:103) 
at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:149) 
at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:146) 
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:16) 
at WorkflowScript.run(WorkflowScript:93) 
at ___cps.transform___(Native Method) 
at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57) 
at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109) 
at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82) 
at sun.reflect.GeneratedMethodAccessor501.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:498) 
at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72) 
at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21) 
at com.cloudbees.groovy.cps.Next.step(Next.java:58) 
at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:154) 
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18) 
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:33) 
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:30) 
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108) 
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:30) 
at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:163) 
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:328) 
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:80) 
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:240) 
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:228) 
at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:63) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112) 
at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) 
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 
+0

Можете ли вы показать нам, что находится в журнале построения? –

ответ

5

Итак, внимательно посмотрев файл журнала, он помог мне выявить проблему.

Стоит отметить, что щелчок на этапе сборки для просмотра журналов - это то, что меня бросило - это то, что я делал. Когда я на самом деле пошел на полный вывод журнала консоли я увидел ошибку о:

Required context class hudson.FilePath is missing 
Perhaps you forgot to surround the code with a step that provides this, such as: node 

Underneath секции узла {}, что у меня было у меня было заявление для развертывает:

def branch = readFile('branch').trim() 
if (branch == master) { 
    ... 
} 

Проблема заключалась в том инструкция readFile была определена вне узла.

Ответ заключался в том, чтобы поместить инструкцию readFile в узел {}.

+0

Тот факт, что это должно выполняться в контексте узла, является очень важной деталью. Вот что меня подтолкнуло. – Brandon

1

Команда sh не закрыта цитатой в конце.

+0

Спасибо, что указали это. Это была просто опечатка в моем сообщении SO, но не в самом файле Jenkins – wimnat

Смежные вопросы