What is Jenkins? What have you used it for?
Jenkins is an open source automation tool written in Java with plugins built for Continuous Integration purpose. Jenkins is used to build and test your software projects continuously making it easier for developers to integrate changes to the project, and making it easier for users to obtain a fresh build. It also allows you to continuously deliver your software by integrating with a large number of testing and deployment technologies.
Jenkins integrates development life-cycle processes of all kinds, including build, document, test, package, stage, deploy, static analysis and much more.
What are the advantages of Jenkins over its competitors? Can you compare it to one of the following systems?
- Travis
- Bamboo
- Teamcity
- CircleCI
What are the limitations or disadvantages of Jenkins?
This might be considered to be an opinionated answer:
- Old fashioned dashboards with not many options to customize it
- Containers readiness (this has improved with Jenkins X)
- By itself, it doesn’t have many features. On the other hand, there many plugins created by the community to expand its abilities
- Managing Jenkins and its piplines as a code can be one hell of a nightmare
Explain the following:
- Job – Job is an automation definition = what and where to execute once the user clicks on “build”
- Build – Build is a running instance of a job. You can have one or more builds at any given point of time (unless limited by confiugration)
- Plugin
- Node or Worker – A worker is the machine/instance on which the build is running. When a build starts, it “acquires” a worker out of a pool to run on it.
- Executor – An executor is variable of the worker, defining how many builds can run on that worker in parallel. An executor value of 3 means, that 3 builds can run at any point on that executor (not necessarily of the same job. Any builds)
What plugins have you used in Jenkins?
Have you used Jenkins for CI or CD processes? Can you describe them?
What type of jobs are there? Which types have you used?
How did you report build results to users? What ways are there to report the results?
You can report via:
Emails
Messaging apps
Dashboards
Each has its own disadvantages and advantages. Emails for example, if sent too often, can be eventually disregarded or ignored.
You need to run unit tests every time a change submitted to a given project. Describe in details how your pipeline would look like and what will be executed in each stage
The pipelines will have multiple stages:
- the project
- Install test dependencies (for example, if I need tox package to run the tests, I will install it in this stage)
- Run unit tests
- (Optional) report results (For example an email to the users)
- Archive the relevant logs/files
How to secure Jenkins?
Describe how do you add new nodes (agents) to Jenkins
You can describe the UI way to add new nodes but better to explain how to do in a way that scales like a script or using dynamic source for nodes like one of the existing clouds.
How to acquire multiple nodes for one specific build?
Whenever a build fails, you would like to notify the team owning the job regarding the failure and provide failure reason. How would you do that?
There are four teams in your organization. How to prioritize the builds of each team? So the jobs of team x will always run before team y for example
If you are managing a dozen of jobs, you can probably use the Jenkins UI. But how do you manage the creation and deletion of hundreds of jobs every week/month?
What are some of Jenkins limitations?
Testing cross-dependencies (changes from multiple projects together)
Starting builds from any stage (although cloudbees implemented something called checkpoints)
How would you implement an option of a starting a build from a certain stage and not from the beginning?
Do you have experience with developing a Jenkins plugin? Can you describe this experience?
Have you written Jenkins scripts? If yes, what for and how they work?
- Best AI tools for Software Engineers - November 4, 2024
- Installing Jupyter: Get up and running on your computer - November 2, 2024
- An Introduction of SymOps by SymOps.com - October 30, 2024