Hi Kirill,
I am now sure, if all of these will work in your particular use case, but I
was able to achieve all three points mentioned programatically with Groovy
script in init.groovy.d. Although I'm using Jenkins 2.x, I expect it also
should work with older versions.
1. I use Job DSL plugin for this. Just place following script to
init.groovy.d:
import javaposse.jobdsl.dsl.DslScriptLoader
import javaposse.jobdsl.plugin.JenkinsJobManagement
def workspace = new File('.')
def jobManagement = new JenkinsJobManagement(System.out, [:], workspace)
new DslScriptLoader(jobManagement).runScript("job('test')")
2. One option would be to try Jenkins.instance.reload(). I achieve this by
running following script in init.groovy.d:
def locationConfig =
Jenkins.instance.getDescriptor('JenkinsLocationConfiguration')
locationConfig.setUrl("<YOUR_LOCATION>")
3. Again, Jenkins.instance.reload() might help. Jenkins actually uses
master key (which is different for every setup) to encode passwords. If you
configure RabbitMQ programatically, you can put a proper hash right away
with:
new hudson.util.Secret("<PLAIN_TEXT_PASSWORD>")
Hope it helps.
Cheers,
Petr
On Wednesday, October 19, 2016 at 6:21:56 PM UTC+2, Kirill wrote:
>
> Hi noble Jenkins developers,
>
> I am trying to fully automate my Jenkins-based job execution environment
> and facing some issues there. I still have to do some steps manually :(
> My base image is 1.651.3.
>
> 1. I need to have a job preconfigured. Tried different ways, the best one
> seems to be creating one programmatically from XML via Jenkins API, in
> Groovy script placed in *init.groovy.d*. However, even if job was created
> (no errors given, and object hash is available in debug), sometimes Jenkins
> needs to be reloaded in order for it to appear :(
> 2. I have slaves populated via Swarm plugin. The problem is that slaves do
> not connect until I go to the global Jenkins config and press "Save" -
> otherwise slaves complain about Jenkins not having the URL configuration
> available yet. I cannot think of a way to make it fully automated. How is
> it possible to define this URL before Jenkins start?
> 3. I have a hashed password for RabbitMQ connection set in my config.xml.
> When this XML is used to create a job, RabbitMQ rejects the attempts to
> connect with the password provided saying it's "plaintext". However,
> connection validation in a job UI config form works fine. All that is
> needed is to open the config and save it. Looking at the config.xml I see
> that the password hash has changed. How to get around this without the
> manual config saving? Programmatic .save() doesn't help :(
>
> Regards,
> Kirill.
>
--
You received this message because you are subscribed to the Google Groups
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jenkinsci-dev/b44c8456-43ae-47ab-b855-44ba58354cd7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.