Groovy save project does not always work

42 views
Skip to first unread message

Sverre Moe

unread,
Apr 13, 2016, 3:47:23 AM4/13/16
to Jenkins Users
I am not sure what I am doing wrong with my groovy script.
I have written a groovy update script to bulk update all my projects.
Sometimes it does not take affect when I call project.save()
I can open that project configuration page and everything looks right. The updated content is there.
However when I write a groovy read script to print out that information I updated, not all projects show the updated information.
If I then open those projects configuration page, do nothing and just press save then that information is available when I run the read script again.

Do I need to perform some other action than just project.save()

Sverre Moe

unread,
Apr 14, 2016, 2:04:31 AM4/14/16
to Jenkins Users
Making a change in Script console using Groovy and then envoke project.save(), why is it that when I try to read the value again it does not show the changed value, but the old one.

For instance given this groovy script to add some environment variables.
#!/usr/bin/env groovy

import java.lang.StringBuilder
import hudson.matrix.MatrixProject
import org.jenkinsci.plugins.envinject.EnvInjectJobProperty
import org.jenkinsci.plugins.envinject.EnvInjectJobPropertyInfo

def jenkinsInstance = jenkins.model.Jenkins.getInstance()
def developmentView = jenkinsInstance.getView("myView")
developmentView.getItems().each { project ->

    StringBuilder builder = new StringBuilder()
    builder.append("NO_CPPCHECK=true")
    builder.append("\n")
    builder.append("NO_INSTALL=true")
    final def propertiesContent = builder.toString()

    def info = new EnvInjectJobPropertyInfo(null, propertiesContent, null, null, null, false)
    def property = new EnvInjectJobProperty()
    property.setOn(true)
    property.setKeepJenkinsSystemVariables(true)
    property.setKeepBuildVariables(true)
    property.setInfo(info)

    project.addProperty(property)
    project.save()
}

Trying to read the same environment variables
#!/usr/bin/env groovy

import org.jenkinsci.plugins.envinject.EnvInjectJobProperty
import org.jenkinsci.plugins.envinject.EnvInjectJobPropertyInfo

def jenkinsInstance = jenkins.model.Jenkins.getInstance()
def developmentView = jenkinsInstance.getView("myView")
developmentView.getItems().each { project ->
  def EnvInjectJobProperty property = project.getProperty(EnvInjectJobProperty.class)
  if (property != null) {
    def info = property.getInfo()
    println info.getPropertiesContent()
  }
}

Not all projects now shows the environment variables.
Reply all
Reply to author
Forward
0 new messages