У меня есть настройки Мастер-Раб Дженкинс.В одном из заданий jenkins мне нужно отправлять электронную почту через плагин Editable Email Notification
, только когда переменная окружения имеет определенное значение.Поэтому я устанавливаю значение переменной среды в команде Execute Shell
, как показано ниже
echo "SHOULD_SEND_EMAIL=$should_send_email" > $WORKSPACE/build/env.properties
В действии после сборки у меня есть шаг для отправки электронной почты с триггером Script-After Build
и имеетсценарий ниже триггера
def workspace = build.getWorkspace()
println "Value of workspace is ${workspace}"
filename = workspace.toString() + "/build/env.properties"
println "Value of filename is ${filename}"
def logs = readFile("${filename}")
println "Value of logs is ${logs}"
Но он не работает ниже ошибки
15:05:54 Value of workspace is /Users/jenkins/workspace/experiment-job
15:05:54 Value of filename is /Users/jenkins/workspace/experiment-job/build/env.properties
15:05:54 ERROR: Build step failed with exception
15:05:54 groovy.lang.MissingMethodException: No signature of method: Script1.readFile() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl) values: [/Users/jenkins/workspace/experiment-job/build/env.properties]
15:05:54 at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58)
15:05:54 at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:81)
15:05:54 at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
15:05:54 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
15:05:54 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
15:05:54 at Script1.run(Script1.groovy:7)
15:05:54 at groovy.lang.GroovyShell.evaluate(GroovyShell.java:585)
15:05:54 at groovy.lang.GroovyShell.evaluate(GroovyShell.java:623)
15:05:54 at groovy.lang.GroovyShell.evaluate(GroovyShell.java:594)
15:05:54 at hudson.plugins.emailext.plugins.trigger.AbstractScriptTrigger.trigger(AbstractScriptTrigger.java:55)
15:05:54 at hudson.plugins.emailext.ExtendedEmailPublisher._perform(ExtendedEmailPublisher.java:269)
15:05:54 at hudson.plugins.emailext.ExtendedEmailPublisher.perform(ExtendedEmailPublisher.java:253)
15:05:54 at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
15:05:54 at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779)
15:05:54 at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:720)
15:05:54 at hudson.model.Build$BuildExecution.cleanUp(Build.java:195)
15:05:54 at hudson.model.Run.execute(Run.java:1788)
15:05:54 at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
15:05:54 at hudson.model.ResourceController.execute(ResourceController.java:98)
15:05:54 at hudson.model.Executor.run(Executor.java:410)
15:05:54 Build step 'Editable Email Notification' marked build as failure
Я попытался передать жестко закодированное значение файла, учитывая, что readFile будет готов из рабочей области вместо абсолютного пути, как показано ниже
def logs = readFile("/build/env.properties")
println "Value of logs is ${logs}"
Но все равно происходит ошибка ниже ошибки
14:55:32 Value of workspace is /Users/jenkins/workspace/experiment-job
14:55:32 Value of filename is /Users/jenkins/workspace/experiment-job/build/env.properties
14:55:32 ERROR: Build step failed with exception
14:55:32 groovy.lang.MissingMethodException: No signature of method: Script1.readFile() is applicable for argument types: (java.lang.String) values: [build/env.properties]
14:55:32 at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58)
14:55:32 at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:81)
14:55:32 at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)
14:55:32 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)
14:55:32 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
14:55:32 at Script1.run(Script1.groovy:7)
14:55:32 at groovy.lang.GroovyShell.evaluate(GroovyShell.java:585)
14:55:32 at groovy.lang.GroovyShell.evaluate(GroovyShell.java:623)
14:55:32 at groovy.lang.GroovyShell.evaluate(GroovyShell.java:594)
14:55:32 at hudson.plugins.emailext.plugins.trigger.AbstractScriptTrigger.trigger(AbstractScriptTrigger.java:55)
14:55:32 at hudson.plugins.emailext.ExtendedEmailPublisher._perform(ExtendedEmailPublisher.java:269)
14:55:32 at hudson.plugins.emailext.ExtendedEmailPublisher.perform(ExtendedEmailPublisher.java:253)
14:55:32 at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
14:55:32 at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779)
14:55:32 at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:720)
14:55:32 at hudson.model.Build$BuildExecution.cleanUp(Build.java:195)
14:55:32 at hudson.model.Run.execute(Run.java:1788)
14:55:32 at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
14:55:32 at hudson.model.ResourceController.execute(ResourceController.java:98)
14:55:32 at hudson.model.Executor.run(Executor.java:410)
14:55:32 Build step 'Editable Email Notification' marked build as failure
Я не могу использовать Файл, как указано в https://stackoverflow.com/a/50503979/1465536.Может кто-нибудь помочь мне понять, в чем здесь проблема?Если у вас есть какое-либо другое решение для отправки электронного письма в зависимости от условий, я тоже рад это знать.Спасибо.