进大厂必须掌握的53个Jenkins面试题
简介:Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。
一、初级
1、Jenkins和Bamboo有什么区别?
2、Jenkins是什么?
Jenkins是一个用Java编写的开源自动化工具,带有为持续集成目的而构建的插件。Jenkins用于持续构建和测试您的软件项目,从而使开发人员更容易将更改集成到项目中,并使用户更容易获得全新的构建。它还允许您通过与大量测试和部署技术集成来持续交付软件。
3、定义Jenkins的过程。
首先,开发人员将代码提交到源代码存储库。同时,Jenkins服务器会定期检查存储库是否有更改。
提交后不久,Jenkins服务器检测到源代码存储库中发生的更改。Jenkins将撤消这些更改,并将开始准备新版本。
如果构建失败,则将通知相关团队。
如果构建成功,则Jenkins将构建部署到测试服务器中。
在测试之后,Jenkins生成反馈,然后将有关构建和测试结果的信息通知开发人员。
它将继续检查源代码存储库中是否对源代码进行了更改,并且整个过程不断重复。
4、使用Jenkins有什么好处?
在集成阶段,您可以缓存构建失败。
对于源代码中的每个更改,您都会生成一个自动生成报告通知。
为了通知开发人员构建报告的成功或失败,Jenkins与LDAP邮件服务器集成。
实现持续集成的敏捷开发和测试驱动的开发。
通过简单的步骤,您可以使Maven发布项目自动化。
在开发环境中比生产阶段更容易在早期阶段跟踪错误。
5、使用Jenkins的前提条件是什么?
可访问的源代码存储库,例如Git存储库。
一个有效的构建脚本(例如Maven脚本)签入到存储库中。
6、Hudson和Jenkins之间是什么关系?
您可以说Hudson是当前Jenkins的早期名称和版本。经过一些问题,他们将项目从Hudson重命名为Jenkins。
7、在Jenkins中提及一些有用的插件
下面我提到了一些重要的插件:
Maven 2 project Git Amazon EC2 HTML publisher Copy artifact Join Green Balls

我觉得这些插件是最有用的插件,如果您想包括上面未提到的任何其他插件,也可以添加它们,但请确保先提及上述插件,然后再添加自己的插件。
8、您如何安装Jenkins?
要安装Jenkins,您只需执行以下五个步骤:
(1)安装Java版本8 – Jenkins是基于Java的应用程序,因此必须使用Java。 (2)安装Apache Tomcat版本9 – Tomcat对于部署Jenkins war文件至关重要。 (3)下载Jenkins war文件–必须安装Jenkins进行此战争。 (4)部署Jenkins war文件–您可以使用Tomcat部署Jenkins war文件来运行Jenkins。 (5)安装建议的插件–安装Jenkins建议的插件列表。
安装完成后,您将能够看到Jenkins仪表板。
9、可以与Jenkins集成的两个组件是什么?
版本控制系统,例如GIT,SVN。
构建像Apache Maven这样的工具。
10、什么是Maven?将Maven与Jenkins集成有什么好处?
Maven是一个构建管理工具。它使用简单的pom.xml来配置构建,测试和运行代码所需的所有依赖项。Maven管理测试项目的整个生命周期。与Jenkins集成后,maven Webdriver将构建项目并有效执行所有测试。
11、提及可以用来手动启动Jenkins的命令是什么。
Start Jenkins: jenkins.exe start Stop Jenkins: jenkins.exe stop Restart Jenkins: jenkins.exe restart
12、Jenkins支持哪些SCM工具?
AccuRev CVS Subversion Git Mercurial Perforce Clearcase RTC
13、您将如何在Jenkins中定义Post?
Post是一个部分,其中包含在管道完成后可能要执行的几个其他步骤。条件块中所有步骤的执行取决于管道的完成状态。条件块包括以下条件- 成功,始终,失败,不稳定和中止的更改。
14、Jenkins中的参数是什么?
参数由“Agent”部分支持,它们用于支持各种用例管道。参数是在管道的顶级或单个阶段指令内定义的。
15、什么是Groovy?
Apache的Groovy是专为Java平台设计的语言。它是Jenkins的本地脚本语言。基于Groovy的插件通过出色的界面增强了Jenkins的功能,并构建了具有动态性和一致性的报告。
二、中级问题
16、您如何通过Jenkins克隆Git存储库?
如果要通过Jenkins克隆Git存储库,则必须输入Jenkins系统的电子邮件和用户名。切换到您的作业目录并为此执行“ git config”命令。
17、说明如何设置Jenkins工作。
我要回答这个问题的方法是首先提到如何创建Jenkins工作。
转到Jenkins主页,选择“新建作业”,然后选择“构建自由样式的软件项目”。
现在,您可以说出此自由式作业的元素:
源代码所在的可选SCM,例如CVS或Subversion。 可选触发器,用于控制Jenkins何时执行构建。 某种执行实际工作的构建脚本(ant,maven,shell脚本,批处理文件等)。 从构建中收集信息的可选步骤,例如,归档工件和/或记录javadoc和测试结果。 通知其他人员/系统构建结果的可选步骤,例如发送电子邮件,IM,更新问题跟踪器等。
18、如何在Jenkins中创建备份和复制文件?
这个问题的答案确实是直接的。
要创建备份,您需要做的就是定期备份Jenkins_HOME目录。这包含所有构建作业配置,从属节点配置以及构建历史记录。要创建您的Jenkins设置的备份,只需复制此目录。您还可以复制作业目录以克隆或复制作业或重命名目录。
19、您将如何保护Jenkins?
如果您除了提到Jenkins之外还有其他方法可以确保安全,请在下面提到:
确保全局安全性已启用。 使用适当的插件检查Jenkins是否已与我公司的用户目录集成。 确保已启用矩阵/项目矩阵以微调访问。 使用自定义版本控制脚本在Jenkins中自动设置权限/特权的过程。 限制对Jenkins数据/文件夹的物理访问。 定期对其进行安全审核。
20、解释如何部署核心插件的自定义版本?
以下是部署自定义构建核心插件的步骤:
停止Jenkins。 将自定义HPI复制到 $ Jenkins_Home / plugins。 删除以前扩展的插件目录。 制作一个名为 .hpi.pinned的空文件 。 启动Jenkins。
21、当您在Jenkins(Jenkins)项目中看到损坏的版本时,该怎么办?
这个问题可能有多个答案,我将通过以下方式处理此任务:
我将为损坏的版本打开控制台输出,并尝试查看是否丢失了任何文件更改。如果无法以这种方式找到问题,则将清理并更新本地工作区以在本地复制问题并尝试解决。
如果您采用其他方式,则只需在答案中提及即可。
22、在Jenkins中可以通过什么方式安排构建?
您可以通过以下方式在Jenkins中计划构建:
通过源代码管理提交 完成其他构建后 可以安排在指定时间运行(crons) 手动构建请求
23、Jenkins中管道的用途是什么?
Jenkins中使用Pipeline插件来制作Jenkins Pipeline,这使我们能够以阶段或任务的形式在管道表单中依次执行任务。它为一系列相关任务建模。管道可以帮助团队审查,编辑和迭代任务。管道是耐用的,它可以选择停止并等待人工批准,也可以开始下一个任务。管道是可扩展的,可以并行执行工作。它支持复杂的CD要求。
24、解释术语Agent,Post-section,Jenkinsfile
Agent:指示Jenkins以特定方式和顺序执行管道的指令。
Post-section:如果我们必须在管道的末尾添加一些通知并执行其他任务,则Post-section肯定会在每个管道的执行结束时运行。
Jenkinsfile:定义了管道的所有定义的文本文件称为Jenkinsfile。正在源代码控制存储库中检查它。
25、您了解云计算吗?Jenkins如何适应云计算环境?举例说明。
让我们以AWS云服务为例。云计算服务使用CI / CD模型,以便他们可以将工作推向客户并不断收到反馈。Jenkins用于使CI / CD管道自动化。例如,许多Jenkins插件可用于许多AWS服务,例如Amazon EC2和ECS。
26、什么是Kubernetes?您如何将Jenkins与Kubernetes集成?
Kubernetes是一个容器编排工具。使用Kubernetes,可以创建多个容器实例以实现更高的容错能力。您可以使用Kubernetes部署插件将其与Jenkins一起使用以进行连续部署。
27、您是否在Jenkins上运行自动化测试?怎么做?
是的,这很容易做到。自动化测试可以通过Selenium或maven之类的工具运行。开发人员可以安排测试运行。Jenkins显示测试结果并将报告发送给开发人员。
28、让我们说,您有一条管道。第一项工作成功,但是第二项失败。接下来您该怎么办?
您只需要通过执行“从阶段重新启动”就可以从发生故障的点重新启动管道。
29、Jenkins HOME目录的用途是什么?
所有设置,日志和配置都存储在Jenkins_HOME目录中。
30、什么是备用插件?为什么使用它?
这是一个有用的插件,可备份将来要使用的所有关键设置和配置。如果发生故障,这样我们就不会丢失设置,这很有用。
31、什么是触发器?举例说明检测到新提交时如何轮询存储库。
触发器用于定义何时以及如何执行管道。
当Jenkins与SCM工具(例如Git)集成时,每次提交时都可以轮询存储库。
应该先安装并设置Git插件。
之后,您可以构建一个触发器,该触发器指定何时应开始新的构建。例如,您可以创建一个作业,该作业将轮询存储库并在提交更改时触发构建。
32、您如何在Jenkins中定义构建的参数?
构建可以采用多个输入参数来执行。例如,如果您有多个测试套件,但只想运行一个。您可以设置一个参数,以便能够决定应运行哪个参数。要在作业中包含参数,则在定义参数时需要指定相同的参数。该参数可以是任何东西,例如字符串,文件或自定义。
33、配置Jenkins节点Agent以与Jenkins master通信的方式有哪些?
有两种方法可以启动节点代理–
浏览器–如果从浏览器启动Jenkins节点代理,则将下载JNLP(Java Web Start)文件。该文件在客户端计算机上启动新进程以运行作业。
命令行–要使用命令行启动节点代理,客户端需要可执行的agent.jar文件。运行此文件时,它仅在客户端上启动一个进程以与Jenkins主服务器通信以运行构建作业。
34、Jenkins如何验证用户身份?
有3种方法
默认方式是将用户数据和凭据存储在内部数据库中。
将Jenkins配置为使用由部署它的应用程序服务器定义的身份验证机制。
配置Jenkins以针对LDAP服务器进行身份验证。
35、您如何在Jenkins中使用第三方工具?
首先安装第三方软件
下载支持第三方工具的插件。
在管理控制台中配置第三方工具。
然后使用Jenkins构建作业中所需的插件。
对于不同的第三方工具,由于配置设置的不同,此过程可能会略有不同。
36、Jenkins的管道类型是什么?
CI CD管道(持续集成,持续交付)
脚本管道
声明式管道
37、Jenkins使用什么语法来计划构建作业或SVN轮询?
cron语法。
Cron语法使用五个星号表示,每个星号之间用空格隔开。语法如下– [分钟] [小时] [每月的某天] [月份] [一周的某天]。例如,如果您想为每个星期一的11.59 pm设置cron,则为59 11 * * 1
38、什么是DevOps,Jenkins处于哪个阶段?
DevOps是一种软件开发实践,它将软件开发(Dev)与IT运营(Ops)融合在一起,通过不断交付构建,修复,更新和功能,使整个开发生命周期变得更简单,更短。Jenkins扮演了至关重要的角色,因为它通过自动化构建,测试和部署过程来帮助实现这种集成。
39、您知道其他持续集成工具吗?Jenkins比其他任何人都更好吗?
还有许多其他CI工具,其中最突出的是–
TeamCity Bamboo Perforce Circle CI Go ThoughtWorks Integrity Travis CI
还有更多。我们不能说Jenkins是否比每个人都要好,因为每个人都有自己独特的特征。例如,TeamCity提供了出色的.NET支持,但又复杂又昂贵,Travis CI与Jenkins一样免费,并且文档也不错。Bamboo也提供了高效,快速的构建,但并不是完全免费的,依此类推。
40、命名您在Shell脚本或批处理文件中使用过的Jenkins环境变量。
在任何Jenkins构建作业中,默认情况下都有许多环境变量可用。一些常用的包括:
$JOB_NAME $NODE_NAME $WORKSPACE $BUILD_URL $JOB_URL
请注意,随着新Jenkins插件的配置,更多的环境变量变得可用。例如,配置Jenkins Git插件后,新的Jenkins Git环境变量(例如$ GIT_COMMIT和$ GIT_URL)就可以在脚本中使用。
41、在Jenkins中,什么是持续集成?
在软件开发中,多个开发人员或团队在同一个Web应用程序的不同部分上工作。因此,在这种情况下,您必须通过集成所有模块来执行集成测试。为了做到这一点,每天都要对每段代码进行自动化处理,以便对所有代码进行测试。此过程称为连续集成。
42、您如何使用Jenkins实现持续集成?
所有开发人员都将其源代码更改提交到共享的Git存储库。
Jenkins服务器按指定的时间间隔检查共享的Git存储库,然后将检测到的更改纳入构建。
构建结果和测试结果共享给各个开发人员
生成的应用程序显示在Selenium等测试服务器上,并运行自动化测试。
干净且经过测试的内部版本已部署到生产服务器。
43、什么是DSL Jenkins?
Jenkins的“作业DSL /插件”由两部分组成-第一部分,域特定语言(DSL)本身,它允许用户使用基于Groovy的语言来描述工作,其次,是一个Jenkins插件,用于管理脚本和结果是更新并创建并维护了Jenkins工作。
44、如何在Jenkins中创建多分支管道?
多分支管道项目类型使您可以为同一项目的不同分支实现不同的Jenkinsfile。在Multibranch Pipeline项目中,Jenkins自动发现,管理和执行在源代码管理中包含Jenkinsfile的分支的管道。
45、Jenkins的工作或项目类型是什么?
Freestyle project Maven project Pipeline Multibranch pipeline External Job Multi-configuration project Github organization
46、Jenkins的蓝色海洋是什么?
这个项目的最初目的是重新思考Jenkins的用户体验,通过提供对开发团队重要的信息来建模和展示软件交付过程。只需尽可能少的点击即可完成此操作,同时仍然忠于Jenkins的核心可扩展性。虽然此项目处于开发的Alpha阶段,但目的是让Jenkins用户可以通过插件与Jenkins Classic UI并排安装Blue Ocean。
三、高级问题
47、什么是连续测试?
连续测试是您在软件交付管道中执行自动化测试的过程。这样做是为了使您尽早获得有关与软件相关的业务风险的反馈。它包括不断发展和扩展的测试自动化,以解决现代应用程序开发和交付日益增加的复杂性和步伐。
连续测试是指连续进行测试而不会发生任何形式的中断。在持续的DevOps流程中,软件变更从开发到测试再到部署都在不断变化。该代码经过不断的开发,交付,测试和部署。
48、解释如何将Jenkins从一台服务器移动或复制到另一台服务器?
我将通过将作业目录从旧服务器复制到新服务器来完成此任务。有多种方法可以做到这一点,我在下面提到了它:
您可以:
只需复制相应的作业目录,即可将作业从Jenkins的一个安装移至另一安装。 通过使用不同的名称克隆作业目录来复制现有作业。 通过重命名目录来重命名现有作业。请注意,如果您更改作业名称,则将需要更改任何其他尝试调用重命名作业的作业。
49、您如何将Git与Jenkins集成?
这些是将Git与Jenkins集成的步骤
(1)单击 Jenkins仪表板上的Manage Jenkins按钮:

(2)单击管理插件。

(3)在插件页面中
选择GIT插件
单击不重新启动就 安装。 根据您的互联网连接情况,该插件将需要一些时间才能完成下载,并且会自动安装。
您还可以选择选项 立即下载并在重新启动后安装。
如果您已经安装了Git插件,现在将看到“无可用更新”消息。
(4)安装插件后,转到Jenkins仪表板上的Manage Jenkins 。您将在其余列表中看到您的插件。

50、如果管理用户已将自己锁定在管理控制台之外,那么如何暂时关闭Jenkins安全性?
Jenkins_HOME文件夹包含一个名为config.xml的文件。启用安全性后,此文件包含一个名为useSecurity的XML元素,该元素将更改为true。如果将此设置更改为false,则下次重新启动Jenkins时将禁用安全性。
false
但是,我们必须了解,禁用安全性始终应该是万不得已和临时措施。解决身份验证问题后,请确保重新启用Jenkins安全性并重新启动CI服务器。
51、您可以定义连续交付工作流程吗?
下面的流程图显示了持续交付工作流程。希望通过视觉更容易理解。

52、持续交付和持续部署之间有什么区别?
连续交付:(手动部署到生产。不涉及要部署的每个变更。)

持续交付是一种软件开发实践,在这种实践中,您可以以可以随时将其发布到生产中的方式构建软件。通过持续集成开发团队构建的产品,对这些构建的产品运行自动测试以检测问题,然后将这些文件推送到类似于生产的环境中,以确保软件可以在生产环境中运行,可以实现持续交付。
连续部署:(自动部署到生产。涉及自动部署每个更改)

持续部署意味着您所做的每项更改都会通过管道,并且如果通过所有测试,则会自动部署到生产中。因此,使用这种方法,您可以自动完成所有工作,因此软件版本的质量完全取决于测试套件的质量。
53、您将管道作为代码是什么意思?
流水线代码 描述了一组功能,这些功能允许Jenkins用户使用源存储库中存储和版本化的代码定义流水线作业流程。这些功能使Jenkins可以发现,管理和运行多个源存储库和分支的作业,从而无需手动创建和管理作业。
要将 管道用作代码,项目必须包含在存储库根目录中命名的文件,该文件包含“管道脚本”。Jenkinsfile
此外,需要在Jenkins中配置启用工作之一:
多分支管道:自动构建单个存储库的多个分支
组织文件夹:扫描GitHub组织或Bitbucket团队以发现组织的存储库,自动为其创建托管的多分支管道作业
原文链接:https://www.jsdaima.com/blog/224.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现