Jenkins面试系列-01

2022年7月17日
大约 7 分钟

Jenkins面试系列-01

1. Jenkins 是什么?

Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。

2. 为什么使用 Jenkins?

Jenkins是一种使用Java编程语言编写的开源持续集成软件工具,用于实时测试和报告较大代码库中的孤立更改。 Jenkins软件使开发人员能够快速找到并解决代码库中的缺陷,并自动进行构建测试。

3. Jenkins 中 CI/CD 是什么?

CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。

CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。

4. 常见的 CI 持续集成工具都有哪些?

Jenkins、TeamCity、Travis、CIGo、CDBamboo、GitLabCI、CircleCI、Codeship

5. 什么是 Jenkins pipeline?

Pipeline,简而言之,就是一台运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。

Jenkins Pipeline是一组插件,让Jenkins可以实现持续交付管道的落地和实施。

6. 为什么在 Jenkins 中使用管道?

Pipeline在Jenkins上添加了一套强大的自动化工具,支持从简单的持续集成到全面的持续交付管道的用例。通过对一系列相关任务进行建模,用户可以利用Pipeline的许多功能:

代码:流水线是用代码实现的,通常会检查到源代码管理中,从而使团队能够编辑,查看和迭代其交付流水线。

耐用:管道可以在Jenkins主服务器的计划内和计划外重启中生存。

可暂停:管道可以选择停止并等待人工输入或批准,然后再继续管道运行。

多功能:管道支持复杂的现实世界中的连续交付需求,包括加入,循环和并行执行工作的能力。

7. 什么是 Blue Ocean?

Blue Ocean是pipeline的可视化UI。同时他兼容经典的自由模式的job。Jenkins Pipeline从头开始设计,但仍与自由式作业兼容,Blue Ocean减少了经典模式下的混乱并为团队中的每个成员增加了清晰度。Blue Ocean的主要特点包括:

连续交付(CD)管道的复杂可视化,可以让您快速直观地理解管道状态。

管道编辑器 - 通过引导用户通过直观和可视化的过程来创建管道,从而使管道的创建变得平易近人。

个性化以适应团队中每个成员的基于角色的需求。

在需要干预和/或出现问题时确定精确度。Blue Ocean显示的标注了关键步骤,促进异常处理和提高生产力。

8. 什么是 jenkinsfile?为什么使用 jenkinsfile?

Jenkinsfile是一个文本文件,其中包含Jenkins Pipeline的定义,并已签入源代码管理。

虽然用于定义管道的脚本语法和jenkinsfile类似,但通常认为在项目中定义管道Jenkinsfile并检查源代码管理是最佳实践。

  • 为所有分支和请求自动创建一个管道构建过程。

  • 管道上的代码审查/迭代。

  • 审核追踪管道。

9. 如何在 Jenkins 中备份和复制文件?

创建备份,需要做的就是定期备份JENKINS_HOME目录。这包含所有构建作业配置,从属节点配置以及构建历史记录。要创建Jenkins设置的备份,只需复制此目录。

10. Jenkins 中都有哪些优势?

Jenkins的优势包括:

在开发环境的早期阶段, 错误跟踪很容易。

提供大量的插件支持。

对代码的迭代改进。

构建失败会在集成阶段进行缓存。

对于每个代码提交更改, 都会生成一个自动生成报告通知。

为了将构建报告的成功或失败通知开发人员, 它与LDAP邮件服务器集成在一起。

实现持续集成的敏捷开发和测试驱动的开发。

通过简单的步骤, 即可自动完成maven发布项目。

11. Jenkins 主要整合了两个组成部分?

Jenkins与以下两个组件集成在一起:GIT,SVN等版本控制系统并构建诸如Apache Maven之类的工具。

12. Jenkins 中都有哪些重要插件?

Jenkins中重要插件包括:Maven 2 project、Amazon EC2、HTML publisher、Copy artifact、Join、Green Balls等。

13. 定义 Jenkins 的过程?

首先,开发人员将代码提交到源代码存储库。同时,Jenkins服务器会定期检查存储库是否有更改。

提交后不久,Jenkins服务器检测到源代码存储库中发生的更改。Jenkins将撤消这些更改,并将开始准备新版本。

如果构建失败,则将通知相关团队。

如果构建成功,则Jenkins将构建部署到测试服务器中。

在测试之后,Jenkins生成反馈,然后将有关构建和测试结果的信息通知开发人员。

它将继续检查源代码存储库中是否对源代码进行了更改,并且整个过程不断重复。

14. 使用 Jenkins 的前提条件是什么?

1)可访问的源代码存储库,例如Git存储库。

2)一个有效的构建脚本(例如Maven脚本)签入到存储库中。

15. 如何安装 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建议的插件列表。

16. Jenkins 支持哪些 SCM 工具?

AccuRev

CVS

Subversion

Git

Mercurial

Perforce

Clearcase

RTC

17. Jenkins 中的参数是什么?

Jenkins中参数由“Agent”部分支持,它们用于支持各种用例管道。参数是在管道的顶级或单个阶段指令内定义的。

18. 解释术语Agent,Post-section,Jenkinsfile

Agent:指示Jenkins以特定方式和顺序执行管道的指令。

Post-section:如果我们必须在管道的末尾添加一些通知并执行其他任务,则Post-section肯定会在每个管道的执行结束时运行。

Jenkinsfile:定义了管道的所有定义的文本文件称为Jenkinsfile。正在源代码控制存储库中检查它。

19. Jenkins HOME目录的用途是什么?

所有设置、日志和配置都存储在Jenkins_HOME目录中。

20. 什么是触发器?举例说明检测到新提交时如何轮询存储库。

触发器用于定义何时以及如何执行管道。

当Jenkins与SCM工具(例如Git)集成时,每次提交时都可以轮询存储库。

应该先安装并设置Git插件。

之后,您可以构建一个触发器,该触发器指定何时应开始新的构建。例如,您可以创建一个作业,该作业将轮询存储库并在提交更改时触发构建。