jenkinsci / scm-sync-configuration-plugin

Jenkins scm-sync-configuration plugin
https://plugins.jenkins.io/scm-sync-configuration/
MIT License
115 stars 123 forks source link

Overwrite main config file while reload from scm #57

Open arunssasidhar opened 7 years ago

arunssasidhar commented 7 years ago

Hi,

I am trying to automate reload Jenkins config from scm (git) using this plugin. I use a groovy script during Jenkins startup to download the latest config from scm. I use following actions to re-load the config

I am using groovy script from this gist - https://gist.github.com/gshively11/13dcdd61b78b7910923e#file-gistfile1-txt

....................trimmed............... .............. scmSyncPlugin.configure(mock, jsonObj) scmSyncPlugin.business.synchronizeAllConfigs(ScmSyncConfigurationPlugin.AVAILABLE_STRATEGIES) instance.doReload() instance.save()

It is working as expected but it overwrite the main config.xml and reset all my settings.

Any help would highly appreciated.

Thanks, Arun S

Deepakkothandan commented 7 years ago

@arunssasidhar I am facing the same issue.. Did you manage to resolve this issue ?

arunssasidhar commented 7 years ago

not yet.

Deepakkothandan commented 7 years ago

@arunssasidhar This is how I managed to do this.

The problem: SCM plugin overrides Jenkins start method, and the groovy script is executed only after the plugin initialises, so the config file is overwritten already.

The solution: (provisioning with ansible) 1) Install jenkins 2) two separate groovy files, one for plugin installation and one for scm config reload. 3) First, place the plugin installation script in the init.groovy.d and restart jenkins 4) Wait for jenkins to be online again 5) Now clone the actual config repo somewhere (may be in /tmp) 6) Replace /var/lib/jenkins/config.xml with the config.xml from the cloned repository. 7) Place the scm-configuration xml in jenkins 8) Place the groovy script for scm config reload in init.groovy.d 9) Restart jenkins