Как передать параметр jq в Jenkinsfile - PullRequest
0 голосов
/ 13 марта 2020

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

steps {

            sh "curl -s -L https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 > ./jq"
            sh "chmod +x ./jq"
            sh "curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'X-API-Token: xxxxxxxx' 'https://api.appcenter.ms/v0.1/apps/raghu/${app_name}/release_uploads' >> output_file.json"
            sh "cat output_file.json"

            script{
                upload_id=$(cat output_file.json | jq -r '.upload_id')
                echo "${upload_id}"
            }
        }

[Pipeline] Конец конвейера groovy .lang.MissingPropertyException: Нет такого свойства: вывод для класс: groovy .lang.Binding в groovy .lang.Binding.getVariable (Binding. java: 63) в org.jenkinsci.plugins.scriptsecurity.sandbox. groovy .SandboxInterceptor.onGetProperty (SandboxInterceptor. java: 264) в org.kohsuke. groovy .sandbox.impl.Checker $ 6.call (Checker. java: 289) в org.kohsuke. groovy .sandbox.impl.Checker.checkedGetProperty (Checker. java: 293) в org.kohsuke. groovy .sandbox.impl.Checker.checkedGetProperty (Checker. java: 269) в org.kohsuke. groovy .sandbox.impl.Checker.checkedGetProperty (Checker. java: 269) в org.kohsuke. groovy .sandbox.impl.Checker.checkedGetProperty (Checker. java: 269) в com.cloudbees. groovy .cps.sandbox.SandboxInvoker.getProperty (SandboxInvoker. java: 29) в com.cloudbees. groovy .cps.impl.PropertyAccessBlock.rawGet (PropertyAccessBlock. java: 20) в WorkflowS cript.run (WorkflowScript: 25) в 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) в sun.reflect.GeneratedMethodAccessor8670.invoke (неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl. java: 43) в java .lang.reflectMho . 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 (продолжение). java: 174) в com.cloudbees. groovy .cps.Continuable $ 1.call (продолжение. java: 163) в org.codehaus. groovy .runtime.GroovyCategor ySupport $ ThreadCategoryInfo.use (GroovyCategorySupport. java: 129) в org.codehaus. groovy .runtime.GroovyCategorySupport.use (GroovyCategorySupport. java: 268) в com.cloudbees. groovy. run0 (продолжение. java: 163) в org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access $ 101 (SandboxContinuable. java: 34) в org.jenkinsci.plugins.workflow.cps.SandboxContinuable.lambda $ 0 (SandboxContinuable. java: 59) в org.jenkinsci.plugins.scriptsecurity.sandbox. groovy .GroovySandbox.runInSandbox (GroovySandbox. java: 136) в org.jenkinsci.plugins.workflow.contin.box. run0 (SandboxContinuable. java: 58) в org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk (CpsThread. java: 174) в org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run C ( java: 347) в org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access $ 200 (CpsThreadGroup. java: 93) в org.jenkinsci.plugins.workflow.cps.CpsThreadGroup $ 2.call (CpsThreadGroup. java: 259) в org.jenkinsci.plugins.workfl ow.cps.CpsThreadGroup $ 2.call (CpsThreadGroup. java: 247) в org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService $ 2.call (CpsVmExecutorService. java: 64) в java .util.conur FutureTask.run (FutureTask. java: 266) по адресу hudson.remoting.SingleLaneExecutorService $ 1.run (SingleLaneExecutorService. java: 131) по адресу jenkins.util.ContextResettingExecutorService $ 1.run * ContextResettingExecerSecure $ 10. .security.ImpersonatingExecutorService $ 1.run (ImpersonatingExecutorService. java: 59) в java .util.concurrent.Executors $ RunnableAdapter.call (Executors. java: 511) в java .util.concurrent.FutureTask. запустите (FutureTask. java: 266) в java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. java: 1149) в java .util.concurrent. ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java: 624) в java .lang.Thread.run (Тема. java: 748) Завершено: ОТКАЗ

1 Ответ

0 голосов
/ 13 марта 2020
script{
    sh """
        upload_id=\$(cat output_file.json | jq -r '.upload_id')
        echo "\${upload_id}"
    """
}

Вам необходимо изменить блок скрипта, как указано выше, а также экранировать $ -sign, чтобы избежать этой ошибки. Но не знаю, где вы используете upload_id и где вы получаете release_url

...