Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-59760

"Fields" parameter does not work with jiraJqlSearch

    XMLWordPrintable

Details

    Description

      It seems that "fields" parameter does not work with jiraJqlSearch or at least it's unclear how it should be used properly.

      Here is the query to get 3 issues with key and summary fields only

      def issues = jiraJqlSearch(
          jql: "project='AM'",
          fields: 'key,summary',
          site: 'jira',
          maxResults: 3
      )
      

      and this snippet returns the following error

      [Pipeline] jiraJqlSearch
      JIRA: Site - jira - Search JQL: project='AM' startAt: 0 maxResults: 3
      Error Code: 400
      Error Message: {"errorMessages":["Can not deserialize instance of java.util.ArrayList out of VALUE_STRING token\n at [Source: org.apache.catalina.connector.CoyoteInputStream@2e4bdc21; line: 1, column: 51] (through reference chain: com.atlassian.jira.rest.v2.search.SearchRequestBean[\"fields\"])"]}
      

      Trying to pass fields as array like the following

      def issues = jiraJqlSearch(
          jql: "project='AM'",
          fields: ['key','summary'],
          site: 'jira',
          maxResults: 3
      )
      

      leads to the following error

      [Pipeline] End of Pipeline
      java.lang.ClassCastException: class org.thoughtslive.jenkins.plugins.jira.steps.JqlSearchStep.fields expects class java.lang.String but received class java.util.ArrayList
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:492)
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.injectSetters(DescribableModel.java:429)
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:331)
      	at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:269)
      	at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:179)
      	at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:122)
      	at groovy.lang.MetaClassImpl.invokeMethodOnGroovyObject(MetaClassImpl.java:1278)
      	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1172)
      	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
      	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:810)
      	at groovy.lang.GroovyObjectSupport.invokeMethod(GroovyObjectSupport.java:46)
      	at groovy.lang.MetaClassImpl.invokeMethodOnGroovyObject(MetaClassImpl.java:1278)
      	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1172)
      	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
      	at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)
      	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
      	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
      	at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:20)
      Caused: java.lang.IllegalArgumentException: Could not instantiate {jql=project='AM', fields=[key, summary], site=jira, maxResults=3} for org.thoughtslive.jenkins.plugins.jira.steps.JqlSearchStep
      	at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:334)
      	at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:269)
      	at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:179)
      	at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:122)
      

      At the same time this curl sample works as expected without any errors

      $ curl -XGET -H'Accept:application/json' -u 'user:pass' 'https://company.atlassian.net/rest/api/2/search?jql=project%3DAM&maxResults=3&fields=key,summary' | jq .
      {
        "expand": "schema,names",
        "startAt": 0,
        "maxResults": 3,
        "total": 2857,
        "issues": [
          {
            "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
            "id": "52769",
            "self": "https://company.atlassian.net/rest/api/2/issue/52769",
            "key": "AM-2889",
            "fields": {
              "summary": "Issue 1"
            }
          },
          {
            "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
            "id": "52768",
            "self": "https://company.atlassian.net/rest/api/2/issue/52768",
            "key": "AM-2888",
            "fields": {
              "summary": "Issue 2"
            }
          },
          {
            "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
            "id": "52753",
            "self": "https://company.atlassian.net/rest/api/2/issue/52753",
            "key": "AM-2887",
            "fields": {
              "summary": "Issue 3"
            }
          }
        ]
      }
      

      Attachments

        Activity

          Released with 1.5.3, pass fields as array or similar to how it has been sent in REST API, it should work.

          PR: https://github.com/jenkinsci/jira-steps-plugin/pull/100

          nrayapati Naresh Rayapati added a comment - Released with 1.5.3, pass fields as array or similar to how it has been sent in REST API, it should work. PR: https://github.com/jenkinsci/jira-steps-plugin/pull/100

          People

            nrayapati Naresh Rayapati
            szhem Sergey Zhemzhitsky
            Votes:
            2 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: