Дженкинс - можно ли использовать свойство parsedVersion в конвейерном скрипте? - PullRequest
0 голосов
/ 01 июля 2018

У меня есть проект проекта Jenkins Maven, который создает релиз SNAPSHOT и увеличивает версию POM. Внутри поля Цели и варианты у меня есть:

clean install build-helper: версии parse-версии: set -DnewVersion = $ {parsedVersion.majorVersion}. $ {ParsedVersion.minorVersion}. $ {ParsedVersion.nextIncrementalVersion} -snapshot версии: совершение

Работает, как и ожидалось, без проблем. Но отдельное конвейерное задание Jenkins завершается неудачно, когда я пытаюсь по существу сделать то же самое, используя:

sh mvn clean install build-helper: версии для разбора: set -DnewVersion = $ {parsedVersion.majorVersion}. $ {ParsedVersion.minorVersion}. $ {ParsedVersion.nextIncrementalVersion} -snapshot Варианты: совершить

Вывод консоли показывает:

groovy.lang.MissingPropertyException: Нет такого свойства: parsedVersion для класса: WorkflowScript в org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap (ScriptBytecodeAdapter.java:53) в org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty (ScriptBytecodeAdapter.java:458) в org.kohsuke.groovy.sandbox.impl.Checker $ 6.call (Checker.java:290) в org.kohsuke.groovy.sandbox.GroovyInterceptor.onGetProperty (GroovyInterceptor.java:68) в org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty (SandboxInterceptor.java:326) в org.kohsuke.groovy.sandbox.impl.Checker $ 6.call (Checker.java:288) в org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty (Checker.java:292) в org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty (Checker.java:268) в org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty (Checker.java:268) в org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty (Checker.java:268) в org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty (Checker.java:268) в com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty (SandboxInvoker.java:29) в com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet (PropertyAccessBlock.java:20) в WorkflowScript.run (WorkflowScript: 33) в cps.transform (собственный метод) в com.cloudbees.groovy.cps.impl.PropertyishBlock $ ContinuationImpl.get (PropertyishBlock.java:74) в com.cloudbees.groovy.cps.LValueBlock $ GetAdapter.receive (LValueBlock.java:30) в com.cloudbees.groovy.cps.impl.PropertyishBlock $ ContinuationImpl.fixName (PropertyishBlock.java:66) at sun.reflect.GeneratedMethodAccessor974.invoke (неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в com.cloudbees.groovy.cps.impl.ContinuationPtr $ ContinuationImpl.receive (ContinuationPtr.java:72) в com.cloudbees.groovy.cps.impl.ConstantBlock.eval (ConstantBlock.java:21) на com.cloudbees.groovy.cps.Next.step (Next.java:83) на com.cloudbees.groovy.cps.Continuable $ 1.call (Continuable.java:174) в com.cloudbees.groovy.cps.Continuable $ 1.call (Continuable.java:163) в org.codehaus.groovy.runtime.GroovyCategorySupport $ ThreadCategoryInfo.use (GroovyCategorySupport.java:122) в org.codehaus.groovy.runtime.GroovyCategorySupport.use (GroovyCategorySupport.java:261) в com.cloudbees.groovy.cps.Continuable.run0 (Continuable.java:163) в org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access $ 101 (SandboxContinuable.java:34) в org.jenkinsci.plugins.workflow.cps.SandboxContinuable.lambda $ run0 $ 0 (SandboxContinuable.java:59) в org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox (GroovySandbox.java:108) в org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0 (SandboxContinuable.java:58) в org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk (CpsThread.java:174) вorg.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run (CpsThreadGroup.java:332) в org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access $ 200 (CpsThreadGroup.java:83) в org.jenkinsci.plugins.workflow.cps.CpsThreadGroup $ 2.call (CpsThreadGroup.java:244) в org.jenkinsci.plugins.workflow.cps.CpsThreadGroup $ 2.call (CpsThreadGroup.java:232) в org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService $ 2.call (CpsVmExecutorService.java:64) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в hudson.remoting.SingleLaneExecutorService $ 1.run (SingleLaneExecutorService.java:112) в jenkins.util.ContextResettingExecutorService $ 1.run (ContextResettingExecutorService.java:28) в java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:511) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624) at java.lang.Thread.run (Thread.java:748)

Я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Я не смог заставить работать решение metalisticpain, но во время устранения неполадок я наткнулся на отличный сценарий GitHub с таким подходом:

sh '/ usr / local / maven / bin / mvn build-helper: parse-version версии: set -DnewVersion = \\\ $ {parsedVersion.majorVersion}. \\\ $ {parsedVersion.minorVersion}. \\\ $ {parsedVersion.nextIncrementalVersion} -snapshot версии: commit '

Отлично работает сейчас.

0 голосов
/ 02 июля 2018

Как говорит Хмарбайз, вам нужно просто заключить в одинарные кавычки.

В частности:

sh('mvn clean install build-helper:parse-version versions:set -DnewVersion=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.nextIncrementalVersion}-SNAPSHOT versions:commit')

Это пройдет без попытки оценить $ {var} как переменную Jenkins / Groovy. Если вы используете двойные кавычки, вы увидите ту же ошибку, что и GString в groovy. http://docs.groovy -lang.org / последний / html / API / заводной / языки / GString.html

Другой такт, Сначала прочитайте pom в память и извлеките необходимые данные, затем установите их через версии mvn: set

def pom = readMavenPom file: 'pom.xml'
String major = pom.parsedVersion.majorVersion
String minor = pom.parsedVersion.majorVersion
String nextIncremental = pom.parsedVersion.majorVersion
sh("clean install build-helper:parse-version versions:set -DnewVersion=${major}.${minor}.${nextIncremental}-SNAPSHOT versions:commit")
...