Jenkins is a tool that allows users to automate multi-step processes that involve dependencies across multiple servers. It can be used to continuously build, test, and deploy code by triggering jobs that integrate code, run tests, deploy updates, and more. Jenkins provides a web-based interface to configure and manage recurring jobs and can scale to include slave agents to perform tasks on other machines. It offers many plugins to support tasks like testing, deployment, and notifications.
3. The Big IDEA
Get something done automatically (hands-free) that involves:
Multiple Steps
Steps have dependencies
May have to execute multiple things on multiple servers
4. One Example of What You Can do with Jenkins
At 3:21 on Sunday
Get token from Vault using predefined authentication
variables (inserted by OPS)
Login to Google Cloud using that token
Copy 2TB of data from HDFS
Process that data using a Python program
Copy output to Google Dataflow
If it fails or takes more than 60 minutes, page on-call using
Pagerduty plugin
If it succeeds, send our team an email.
Delete the token, because security does not allow tokens
to live outside Vault.
Keep detailed logs for 30 last runs.
Keep other metadata like run-times, also.
5. Another Example
Grab new version of code from git repo
Integrate it with maven or some other tool
Deploy it to 500 servers
Do some automated testing
Decided if this new version is good or not
If automated testing fails, roll the whole thing
back and page on-call
9. Jenkins Architecture
You can have many slaves
Each slave can have labels
Nothing except java is needed on
slaves
Just a jar file that the master pushes
during agent installation