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 afterwards 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.
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.
Do I need to perform some other action than just project.save()
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.