How to move Jenkins towards IAAC? - jenkins

We have got an old style Jenkins environment administration and managing Jobs using GUI . We are interested to move towards Infrastructure as a code. Could you please advise me on the transition plan and new tools required for this migration.
Any advise to choose between Jenkins builtin DSL or Groovy script to create pipelines?
Cheers,
Joseph

Write Declarative style Jenkins Pipeline
its easy and faat ro convert to IAC for jenkins job configuration.
I have mentioned link for your reference
https://www.jenkins.io/doc/book/pipeline/syntax/

Related

Groovy 3 and Jenkins Embedded Scripting?

I've just started playing around with Jenkins - and I'm looking at Pipelines.
I'm looking to brush-up on my Groovy skills to facilitate this.
The latest literature is all "Groovy 3" based and comes with some significant new features, but despite having the latest Jenkins install (Jenkins 2.249.2), the embedded scripting engine seems to be older - from Jenkins' script console on my master:
println GroovySystem.version
Gives 2.4.12.
My question - Is the version of Groovy easily/sensibly configurable in Jenkins or is it usual to stick with whatever ships with Jenkins?
You must choose system groovy if you want ready access to the Jenkins internals, jobs, etc. See Groovy Script vs System Groovy Script, and Known limitations; you get what is packaged.
If you use external groovy and don't need to access Jenkins internals, your choice. Lots of internal debate on upgrading as it's lots of work. You can follow JENKINS-51823 and Pipeline Groovy Epic

Query on Jenkins

I am new to Devops and started learning Jenkins. So could you please help me know, whether coding experience of any programming language is required to learn and have practice on Jenkins.
Thanks and Regards,
Srivatsasa
In my experience you will not need to program anything in order to perform task within Jenkins. You will need knowledge/experience with Maven, Ant, Git, SVN, etc, the particular technology will depend on what you want to do with Jenkins. When I use Jenkins I dont think that I have ever programmed anything.
To be truly effective and master Jenkins, you should learn Groovy. You can run any other types of programs from Jenkins, but any modifying or configuration of Jenkins will be done in Groovy.
That said, you don't have to know groovy at all to use Jenkins. You can do a LOT of what Jenkins can do and never write code. Just configure it in the UI.
Depends on what you want to do with Jenkins.
you can program in Jenkins in Groovy,Perl,Python and Bash and you can only perform simple builds ( mvn clean install )
it's all about what you want to do with Jenkins.

Jenkins Pipeline - Why does the Pipeline option not show up

I have Jenkins Jenkins ver. 2.82 running and would like to use the Pipeline function when creating a new job. But I dont see this listed as option. I can only choose between free-style Project, maven Project, external Project and multiconfigruation. How can I use the Pipeline option, as for example explained here: http://www.jhipster.tech/setting-up-ci-jenkins2/ . I tried to find a solution, but yet I was not successfull. Any help is very much appreciated.
You need to install the Pipeline plugin.

Is there an easy way to convert existing Jenkins freestyle job to New Jenkins 2.x pipeline view

I have tons of existing Freestyle Jenkins jobs in my old Jenkins Instance and now I would like to migrate them to New Jenkins 2.0 pipeline jobs using a Jenkins file.
I am following this page to create a Jenkins file: https://jenkins.io/doc/book/pipeline/jenkinsfile/
Can someone please suggest me if there is any easy way (or) plugin i can use to convert these existing job's to pipeline view.
I haven't tried the plugin but while searching for same i came across this post:
https://jenkins.io/blog/2017/12/15/auto-convert-freestyle-jenkins-jobs-to-coded-pipeline/
Maybe this can help. Will update more after actually giving it a ago. You can go through and try by yourself as well.
don't think there is an automatic tool to convert jobs.
We created all new jobs with Jenkins DSL plugin
for the Jenkinsfile - we created some good examples of our basic flows and each team convert the relevant jobs.

Can I store Jenkins configuration in the project repo (like Travis CI)?

How do you maintain the Jenkins job configuration in SCM along side the source code?
As source code evolves, so does the job configuration. It would be ideal to be able to keep the job configuration in SCM, for the following benefits:
easy to see who a history of the changes, including the author and the description
able to rebuild old branch/tag by checking out the revision and build just work
not having to scroll through the UI to find the appropriate section and make change
I see there is a Jenkins Job Builder plugin. I prefer a solution along the lines of Travis CI, where the job configuration is maintained in a YAML file (.travis.yml). Any good suggestions?
Note: Most of our projects are using Java & Maven.
Update 2016: Jenkins now provides a Jenkinsfile which provides exactly this. This is supported by the core Jenkins developers and actively developed.
Benefits:
Creating a Jenkinsfile, which is checked into source control, provides a number of immediate benefits:
Code review/iteration on the Pipeline
Audit trail for the Pipeline
Single source of truth for the Pipeline, which can be viewed and edited by multiple members of the project.
I've written a plugin that does this!
Other than my plugin, you have some (limited) options with existing Jenkins plugins:
Use a single test script
If you configure your Jenkins to simply run:
$ bash run_tests.sh
You can then check in a run_tests.sh file into your SCM repo and you're now tracking changes for how you run tests. However, this won't track configuration of any plugins.
Similarly, if you're using Maven, the Maven Project Plugin simply runs a specified goal for your repo.
The Literate Plugin does allow Jenkins to run the commands in your README.md, but it hasn't yet been released.
Track changes to Jenkins configuration
You can use the SCM Sync configuration plugin to write configuration changes to SCM, so you at least have a persistent record. This is global, across all projects on your Jenkins instance.
There's also the job config history plugin, which stores config history on the filesystem.
Write Jenkins configuration from SCM
The Jenkins job builder project you mentioned lets you check config changes into SCM and have them applied to your Jenkins instance. Again, this is across all projects on your Jenkins instance.
Write Jenkins configuration from another job
You can use the Job DSL Plugin with a repo of groovy scripts. Jenkins then polls that repo, executes the groovy scripts, which create job configurations.
Discussions
Issue 996 (now closed) discusses this, and it has also been discussed on the mailing list: 'Keeping track of Hudson's configuration changes', and 'save hudson config in svn'.
you can do this all with the workflow plugin and a lot more. Workflow is one of the most advanced technics to use jenkins and it has a very strong support.
It is based on a groovy DSL and allows you to keep the whole configuration in the SCM of your choise (e.g. GIT, SVN...).

Resources