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
|
## 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)
|
## Configure Backup & Restore (work in progress)
|
||||||
|
|
||||||
|
|
@ -216,5 +323,17 @@ Not implemented yet.
|
||||||
|
|
||||||
## Debugging
|
## 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
|
[job-dsl]:https://github.com/jenkinsci/job-dsl-plugin
|
||||||
[ssh-credentials]:https://github.com/jenkinsci/ssh-credentials-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