• Icon: New Feature New Feature
    • Resolution: Unresolved
    • Icon: Major Major
    • metadata-plugin
    • None

      Is there are way of accessing the metadata through the Jenkins API? All I see is 

      "property" : [ { "_class" : "com.sonyericsson.hudson.plugins.metadata.model.MetadataJobProperty", "children" : [ { "_class" : "com.sonyericsson.hudson.plugins.metadata.model.values.StringMetadataValue" }, { "_class" : "com.sonyericsson.hudson.plugins.metadata.model.values.StringMetadataValue" }, { "_class" : "com.sonyericsson.hudson.plugins.metadata.model.values.TreeNodeMetadataValue" } ] },

          [JENKINS-44067] Access metadata through API?

          Ioannis Moutsatsos added a comment - - edited

          Metadata associated with a Jenkins build can be accessed via the Java API. I use the following Groovy code.

          import hudson.model.*
          import com.sonyericsson.hudson.plugins.metadata.model.*
           
          def job = hudson.model.Hudson.instance.getJob('YOUR_JOB_NAME')
          def buildNumber = 97 //your buildNumber
          build=job.getBuildByNumber(buildNumber)
           
           
          def allActions = build.getAllActions()
          def metaBuildAction=build.getActions(MetadataBuildAction.class)
           
          if (metaBuildAction !=null){
          metaBuildAction.each{
            vals= it.getValues()
            vals.each{v->
              println v.class
              println v.name
              println v.value
              println '-'*10
           
            }
                                 }
          }
          

          and here is an example on how to add your own String value metadata to a build

          import hudson.model.*
          import com.sonyericsson.hudson.plugins.metadata.model.*
           
          def job = hudson.model.Hudson.instance.getJob('YOUR_JOB_NAME')
          def buildNumber = 97 //your buildNumber
          build=job.getBuildByNumber(buildNumber)
           
           
          def allActions = build.getAllActions()
          def metaBuildAction=build.getActions(MetadataBuildAction.class)[0]
            newChild=new com.sonyericsson.hudson.plugins.metadata.model.values.StringMetadataValue('Barcode', 'Plate unique ID', 'AD12435', true)
            metaBuildAction.addChild(newChild)
          build.save()
          

          Ioannis Moutsatsos added a comment - - edited Metadata associated with a Jenkins build can be accessed via the Java API. I use the following Groovy code. import hudson.model.* import com.sonyericsson.hudson.plugins.metadata.model.*   def job = hudson.model.Hudson.instance.getJob( 'YOUR_JOB_NAME' ) def buildNumber = 97 //your buildNumber build=job.getBuildByNumber(buildNumber)     def allActions = build.getAllActions() def metaBuildAction=build.getActions(MetadataBuildAction.class)   if (metaBuildAction != null ){ metaBuildAction.each{   vals= it.getValues()   vals.each{v->     println v.class     println v.name     println v.value     println '-' *10     }                        } } and here is an example on how to add your own String value metadata to a build import hudson.model.* import com.sonyericsson.hudson.plugins.metadata.model.*   def job = hudson.model.Hudson.instance.getJob( 'YOUR_JOB_NAME' ) def buildNumber = 97 //your buildNumber build=job.getBuildByNumber(buildNumber)     def allActions = build.getAllActions() def metaBuildAction=build.getActions(MetadataBuildAction.class)[0]   newChild= new com.sonyericsson.hudson.plugins.metadata.model.values.StringMetadataValue( 'Barcode' , 'Plate unique ID' , 'AD12435' , true )   metaBuildAction.addChild(newChild) build.save()

            rsandell rsandell
            gstupp greg Stupp
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated: