Update docs
This commit is contained in:
		
							parent
							
								
									74db7aa6bb
								
							
						
					
					
						commit
						6ae7b3267a
					
				|  | @ -206,9 +206,116 @@ You can verify if deploy keys were successfully configured in Jenkins **Credenti | |||
| 
 | ||||
|  | ||||
| 
 | ||||
| You can verify if your pipelines were successfully configured in Jenkins Seed Job console output. | ||||
| 
 | ||||
|  | ||||
| 
 | ||||
| ## Jenkins Customisation | ||||
| 
 | ||||
| Jenkins can be customized using groovy scripts or configuration as code plugin. All custom configuration is stored in | ||||
| the **jenkins-operator-user-configuration-example** ConfigMap which is automatically created by **jenkins-operator**.  | ||||
| 
 | ||||
| ``` | ||||
| kubectl get configmap jenkins-operator-user-configuration-example -o yaml | ||||
| 
 | ||||
| apiVersion: v1 | ||||
| data: | ||||
|   1-configure-theme.groovy: |2 | ||||
| 
 | ||||
|     import jenkins.* | ||||
|     import jenkins.model.* | ||||
|     import hudson.* | ||||
|     import hudson.model.* | ||||
|     import org.jenkinsci.plugins.simpletheme.ThemeElement | ||||
|     import org.jenkinsci.plugins.simpletheme.CssTextThemeElement | ||||
|     import org.jenkinsci.plugins.simpletheme.CssUrlThemeElement | ||||
| 
 | ||||
|     Jenkins jenkins = Jenkins.getInstance() | ||||
| 
 | ||||
|     def decorator = Jenkins.instance.getDescriptorByType(org.codefirst.SimpleThemeDecorator.class) | ||||
| 
 | ||||
|     List<ThemeElement> configElements = new ArrayList<>(); | ||||
|     configElements.add(new CssTextThemeElement("DEFAULT")); | ||||
|     configElements.add(new CssUrlThemeElement("https://cdn.rawgit.com/afonsof/jenkins-material-theme/gh-pages/dist/material-light-green.css")); | ||||
|     decorator.setElements(configElements); | ||||
|     decorator.save(); | ||||
| 
 | ||||
|     jenkins.save() | ||||
| kind: ConfigMap | ||||
| metadata: | ||||
|   labels: | ||||
|     app: jenkins-operator | ||||
|     jenkins-cr: example | ||||
|     watch: "true" | ||||
|   name: jenkins-operator-user-configuration-example | ||||
|   namespace: default | ||||
| ```  | ||||
| 
 | ||||
| When **jenkins-operator-user-configuration-example** ConfigMap is updated Jenkins automatically runs the **jenkins-operator-user-configuration** Jenkins Job which executes all scripts. | ||||
| 
 | ||||
| ## Install Plugins | ||||
| 
 | ||||
| ## Configure Authorization | ||||
| To install a plugin please add **2-install-slack-plugin.groovy** script to the **jenkins-operator-user-configuration-example** ConfigMap: | ||||
| 
 | ||||
| ``` | ||||
| apiVersion: v1 | ||||
| data: | ||||
|   1-configure-theme.groovy: |2 | ||||
| 
 | ||||
|     import jenkins.* | ||||
|     import jenkins.model.* | ||||
|     import hudson.* | ||||
|     import hudson.model.* | ||||
|     import org.jenkinsci.plugins.simpletheme.ThemeElement | ||||
|     import org.jenkinsci.plugins.simpletheme.CssTextThemeElement | ||||
|     import org.jenkinsci.plugins.simpletheme.CssUrlThemeElement | ||||
| 
 | ||||
|     Jenkins jenkins = Jenkins.getInstance() | ||||
| 
 | ||||
|     def decorator = Jenkins.instance.getDescriptorByType(org.codefirst.SimpleThemeDecorator.class) | ||||
| 
 | ||||
|     List<ThemeElement> configElements = new ArrayList<>(); | ||||
|     configElements.add(new CssTextThemeElement("DEFAULT")); | ||||
|     configElements.add(new CssUrlThemeElement("https://cdn.rawgit.com/afonsof/jenkins-material-theme/gh-pages/dist/material-light-green.css")); | ||||
|     decorator.setElements(configElements); | ||||
|     decorator.save(); | ||||
| 
 | ||||
|     jenkins.save() | ||||
|   2-install-slack-plugin.groovy: |2 | ||||
|    | ||||
|     import jenkins.model.* | ||||
|     import java.util.logging.Level | ||||
|     import java.util.logging.Logger | ||||
| 
 | ||||
|     def instance = Jenkins.getInstance() | ||||
|     def plugins = instance.getPluginManager() | ||||
|     def updateCenter = instance.getUpdateCenter() | ||||
|     def hasInstalledPlugins = false | ||||
| 
 | ||||
|     Logger logger = Logger.getLogger('jenkins.instance.restart') | ||||
| 
 | ||||
|     if (!plugins.getPlugin("slack")) { | ||||
|         logger.log(Level.INFO, "Installing plugin: slack") | ||||
| 
 | ||||
|         updateCenter.updateAllSites() | ||||
|         def plugin = updateCenter.getPlugin("slack") | ||||
|         def installResult = plugin.deploy() | ||||
|         while (!installResult.isDone()) sleep(10) | ||||
|         hasInstalledPlugins = true  | ||||
|         instance.save() | ||||
|     } | ||||
| 
 | ||||
|     if (hasInstalledPlugins) { | ||||
|         logger.log(Level.INFO, "Successfully installed slack plugin, restarting ...") | ||||
|         // Queue a restart of the instance | ||||
|         instance.save() | ||||
|         instance.doSafeRestart(null) | ||||
|     } else { | ||||
|         logger.log(Level.INFO, "No plugins need installing.") | ||||
|     } | ||||
| ``` | ||||
| 
 | ||||
| Then **jenkins-operator** will automatically trigger **jenkins-operator-user-configuration** Jenkins Job again. | ||||
| 
 | ||||
| ## Configure Backup & Restore (work in progress) | ||||
| 
 | ||||
|  | @ -216,5 +323,17 @@ Not implemented yet. | |||
| 
 | ||||
| ## Debugging | ||||
| 
 | ||||
| Watch Kubernetes events: | ||||
| 
 | ||||
| ```bash | ||||
| kubectl get events --sort-by='{.lastTimestamp}' | ||||
| ``` | ||||
| 
 | ||||
| Verify Jenkins master logs: | ||||
| 
 | ||||
| ```bash | ||||
| kubectl logs -f jenkins-master-example | ||||
| ``` | ||||
| 
 | ||||
| [job-dsl]:https://github.com/jenkinsci/job-dsl-plugin | ||||
| [ssh-credentials]:https://github.com/jenkinsci/ssh-credentials-plugin | ||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 154 KiB | 
		Loading…
	
		Reference in New Issue