Configuratorimplementation FTR. If a plugin maintainer is fine AND if it is really need to resolve an issue, why not?
My second attempt that I'm currently working on is using a custom Configurator, that would probably make it possible to have a bit more nice looking yaml, but it would mean adding an optional dependency to jcasc in the git-client plugin. And the Configurator API in jscasc is badly documented to say it mildly :) so the work is going slow on that approach.
Far too nice, the API really needs some docs improvements :(
The Jenkins installation methods directly maintained by the Jenkins project are described as:
In addition to those installers maintained by the Jenkins project, there are also installers for:
As far as I can tell, they are all able to use JCasC.
@burnsjake as far as I know, there is not a
good howto on how to bootstrap a brand new jenkins installation (without docker) with the configuration as code plugin?"
Most of the Jenkins installations that I've managed with a package manager (Linux, Windows) do not attempt to automate the bootstrap process. In my case, I didn't attempt to automate the bootstrap process because I was running very few of them and could perform the initial installation tasks interactively much faster than I performed them with automation. I did automate the recording of the configuration of those systems, their backup, and their disaster recovery processes, but not their initial installation.
If I were automating the initial installation on my favorite Linux (Debian) or one of its derivative, I think I would probably use the following steps:
1 - Add the Jenkins repository to sources.list
2 - Update the repository contents with
3 - Install Jenkins with
apt-get install -y jenkins
4 - Stop the newly installed Jenkins service with
systemctl stop jenkins
5 - Change to the Jenkins user and clone the git repo that I use to track Jenkins configuration into the JENKINS_HOME directory
6 - Start the Jenkins server
I'm sure others have better ways of doing that. I'm a git user, so every time I need to remember the content of files, I immediately think that git is the answer.
If you'd like to see an example of that technique in action, refer to https://github.com/MarkEWaite/docker-lfs/tree/lts-with-plugins/ref . That subdirectory is a git copy of the contents of JENKINS_HOME, with a few modifications to make it portable between computers with different hostnames.
curl -X POST -u user:api-token https://<jenkins-url>/configuration-as-code/reload
curl -X POST "https://<jenkins-url>/reload-configuration-as-code/?casc-reload-token=123456789