What Exactly is JCasC ?
This is a plugin that encodes all Jenkins settings and allows us to manage Jenkins settings without clicking on the GUI. This is quite advantageous when we have a fairly extensive configuration of our Jenkins, and it is especially useful in the case of a restore.
Setting up Jenkins is a complex process, as both Jenkins and its plugins require some tuning and configuration, with…
Run sample full environment which can be found at this link
λ git clone https://github.com/spy86/jenkins-as-code-docker-demo.gitC:\Temp
λ cd jenkins-as-code-docker-demo\C:\Temp\jenkins-as-code-docker-demo (master -> origin)
λ vagrant up
After a while, the ready environment should start with Jenkins, and we can login into Jenkins. Open URL http://192.168.123.123:8089/ you should see one job SeedJob on the dashboard, and access for all options.
Jenkins configuration explanation
The configuration of Jenkins based on the jcasc plugin is divided into individual sections that are responsible for the configuration of individual functionalities in Jenkins. Below there are few important sections:
- jenkins: The main element of the configuration in which we configure most of the options
systemMessage: "Jenkins configured automatically by Jenkins Configuration as Code plugin\n\n"
- key: VARIABLE1
- key: VARIABLE2
- tool: The element that is for the tool configurations that are used globally by all jobs/pipelines
- name: default-git
- credentials: The element that is used for the credentials configuration (RSA keys, Logini, password, secret string etc.)
description: "GitHub Token"
How trigger configuration reload ?
After changes in the configuration file, you should reload the configuration, otherwise the changes will not be visible. This can be done in several ways
- From GUI go to: Manage Jenkins -> Configuration -> Reload existing configuration
- From http POST to http://192.168.123.123:8089/configuration-as-code/reload
⚠️ It must contain valid CRUMB and authentication information like username + token of a user with administrator privileges.
- From Jenkins-cli
- From Jenkins pipeline with using simple groovy script
I think the best solution is to create a freestyle job that will checkout our configuration to the directory from which we load the yml file and the reload configuration. This job will be required plugin Groovy ,job configuration below:
I think that jcasc is a feature that is worth applying because it makes Jenkins management much easier, and the need to quickly restore or go back to the previous configuration is trivial because we have everything in the git repository.