Jenkins部署与使用


一、Jenkins简介

1.1 Jenkins简介

Jenkins 是一个可扩展的持续集成引擎。

主要用于:

  • 持续、自动地构建/测试软件项目。
  • 监控一些定时执行的任务。

Jenkins拥有的特性包括:

  • 易于安装-只要把jenkins.war部署到servlet容器,不需要数据库支持。
  • 易于配置-所有配置都是通过其提供的web界面实现。
  • 集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知。
  • 生成JUnit/TestNG测试报告。
  • 分布式构建支持Jenkins能够让多台计算机一起构建/测试。
  • 文件识别:Jenkins能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。
  • 插件支持:支持扩展插件,你可以开发适合自己团队使用的工具

1.2 Jenkins的由来

目前持续集成(CI)已成为当前许多软件开发团队在整个软件开发生命周期内侧重于保证代码质量的常见做法。它是一种实践,旨在缓和和稳固软件的构建过程。并且能够帮助开发团队应对如下挑战:

  • 软件构建自动化 :配置完成后,CI系统会依照预先制定的时间表,或者针对某一特定事件,对目标软件进行构建。
  • 构建可持续的自动化检查 :CI系统能持续地获取新增或修改后签入的源代码,也就是说,当软件开发团队需要周期性的检查新增或修改后的代码时,CI系统会不断确认这些新代码是否破坏了原有软件的成功构建。这减少了开发者们在检查彼此相互依存的代码中变化情况需要花费的时间和精力。
  • 构建可持续的自动化测试 :构建检查的扩展部分,构建后执行预先制定的一套测试规则,完成后触发通知(Email,RSS等等)给相关的当事人。
  • 生成后后续过程的自动化 :当自动化检查和测试成功完成,软件构建的周期中可能也需要一些额外的任务,诸如生成文档、打包软件、部署构件到一个运行环境或者软件仓库。这样,构件才能更迅速地提供给用户使用。

部署一个CI系统需要的最低要求是,一个可获取的源代码的仓库,一个包含构建脚本的项目。

1.3 CI系统的基本结构

该系统的各个组成部分是按如下顺序来发挥作用的:

1. 开发者检入代码到源代码仓库。

2. CI系统会为每一个项目创建了一个单独的工作区。当预设或请求一次新的构建时,它将把源代码仓库的源码存放到对应的工作区。

3. CI系统会在对应的工作区内执行构建过程。

4. (配置如果存在)构建完成后,CI系统会在一个新的构件中执行定义的一套测试。完成后触发通知(Email,RSS等等)给相关的当事人。

5. (配置如果存在)如果构建成功,这个构件会被打包并转移到一个部署目标(如应用服务器)或存储为软件仓库中的一个新版本。软件仓库可以是CI系统的一部分,也可以是一个外部的仓库,诸如一个文件服务器或者像Java.NET、 SourceForge之类的网站。

6. CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。

Jenkins就是这么一个CI系统。之前叫做Hudson。

以下是使用Jenkins的一些理由:

  • 是所有CI产品中在安装和配置上最简单的。
  • 基于Web访问,用户界面非常友好、直观和灵活,在许多情况下,还提供了AJAX的即时反馈。
  • Jenkins是基于Java开发的(如果你是一个Java开发人员,这是非常有用的),但它不仅限于构建基于Java的软件。
  • Jenkins拥有大量的插件。这些插件极大的扩展了Jenkins的功能;它们都是开源的,而且它们可以直接通过web界面来进行安装与管理。

二、运行环境与常用组件安装

2.1 Java运行环境

  1. 安装合适的jdk版本,要求最低为JDK 5。
  2. 配置JAVA_HOME,JRE_HOME,CLASSPATH环境变量。

2.2 git的编译安装

  1. 安装可能缺失的依赖包yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
  2. 下载git软件包
  3. 解压软件包进入到解压目录执行:./congigure –prefix=”安装目录路径”
  4. 执行make && make install
  5. 配置环境变量

2.3 maven的安装

  1. 下载安装包
  2. 解压配置环境变量

2.4 Tomcat的安装

省略。

三、Jenkins的安装与配置

3.1 下载Jenkins

官方网站:https://jenkins.io/index.html,下载对应的war包。

3.2 运行方式

  1. 使用命令行运行:Java -jar jenkins.war
  2. Web容器运行:将下载的war包文件部署到 web容器,然后启动容器,在浏览器的URL地址栏中输入类似http://localhost:8080/jenkins/这样的地址即可。

完全启动后你会看到入下图所示的主界面:

3.3 常用系统全局配置

主界面点击系统管理、系统配置进入系统全局配置项

3.3.1 系统配置

主目录:Jenkins加载时候的主目录。

工作空间目录:存放job对应的工作空间的目录。

构建记录根目录:存放每一次构建的信息。

系统消息:此处的信息会在主页面顶部显示。

3.3.2 maven配置

全局MAVEN_OPTS: 在启动Maven时指定需要的JVM选项. 可以参阅MAVEN_OPT(Shttp://maven.apache.org/archives/maven1.x/reference/command-line.html)文档。要想在这里使用Shell环境变量,使用语法${VARIABLE}。

LocalMaven Repository:当jobs没有指定一个maven本地仓库时,使用这里指定的默认的本地仓库。

执行者数量:最大支持几个任务同时构建。

标记:分布式部署时用于对多节点分组。

用法:控制Jenkins如何在这台机器上安排构建.

      尽可能的使用这个节点:

          这是默认和常用的设置. 在这种模式下,Jenkins会尽可能的使用这个节点.任何时候如果一个构建能使用这个节点构建,那么Jenkins就会使用它.

      只允许运行绑定到这台机器的Job:

          这种模式下,Jenkins只会构建哪些分配到这台机器的Job. 这允许一个节点专门保留给某种类型的Job.例如,在Jenkins上连续的执行测试,你可以设置执行者数量为1,那么同一时间就只会有一个构建, 一个实行者不会阻止其它构建,其它构建会在另外的节点运行.

生成等待时间:如果设置此选项,一个计划中的构建在开始之前需要等待选项中设置的秒数。这会对下面的情况非常有用:

  • 合并多封CVS变更通知邮件为一封(当一次提交跨越多个目录时,一些CVS的变更日志邮件发生脚本会接二连三的生成多封通知邮件)。
  • 如果你的编码风格导致你更改一个逻辑需要几次cvs/svn操作,那么设置一个较长时间的等待会防止Jenkins过早的构建而失败。
  • 节省构建。如果你的Jenkins有太多并且高频率的构建,设置长时间的等待会舒缓这些构建。

如果没有在项目级别设置此项,则会使用系统默认值。

SCM签出重试次数:从远程仓库中拉取代码失败时的重试次数。

Restrictproject naming:限制工程的命名,可以设置为默认或者自己定制规则。

3.3.3 邮件通知

SMTP服务器:邮件服务器的名称.不填此项则使用默认服务器 (默认服务器通常是运行在本地)。Jenkins使用JavaMail发送e-mail,JavaMail允许使用容器系统参数进行附加设置. 请参阅 这个文档(https://javaee.github.io/javamail/#overview_description)查找可用到的值。

用户默认邮件后缀:如果用户邮件能够自动的指定后缀,那么在此处填写后缀.否则不用填写.注意,用户可以选择性的覆盖邮件地址. 例如,如果这里设定了@acme.org,那么用户foo的默认邮件地址为foo@acme.org

使用SMTP认证:当发送邮件时使用SMTP认证.如果你的环境需要使用SMTP认证,在这里指定其用户名和密码。

使用SSL协议:如论SMTP服务器是否使用SSL连接.默认端口都是465。更高级的配置可以通过设置系统参数来完成. 参考这个文档

(https://javaee.github.io/javamail/#overview_description)了解更多信息。

SMTP端口号:邮件服务器端口号.不填写此项将使用协议默认端口。

3.4 全局安全性配置

在已运行的Jenkins主页中,点击左侧的系统管理—>ConfigureGlobal Security进入如下界面:

3.4.1 启用安全

如果启动此项,你必须使用用户名/密码登录才能配置和执行构建,并且用户要具有"admin"权限(在页面的右上角会看到"login"链接). 配置用户账户取决于你使用哪种Web容器.(比如,在Tomcat中,默认在$TOMCAT_HOME/conf/tomcat-users.xml中配置)。

如果你的Jenkins在内网环境(或者是一个"可信任"的环境),通常会禁用此项,以便项目开发人员能够配置他们自己的项目,而不用麻烦你。

如果你的Jenkins暴露在公网环境,你最好启用此项.Jenkins如果在一个不安全的环境下必定会遭到黑客的攻击。

3.4.1 配置用户权限

选择授权策略中的安全矩阵或者项目矩阵授权策略。

说明:安全矩阵和项目矩阵授权策略的配置是一模一样的,唯一的区别是项目矩阵授权策略支持在Job的配置页面再次配置授权策略。

添加用户到矩阵中,如下图:

在配置页面将鼠标放到该权限上即可查看帮助。

其中有一些比较特别的权限:

       最大的权限是Overall的Administer,拥有该权限可以干任何事情。

       最基本的权限是Overall的Read,用户必须赋予阅读的权限,不然什么都看不到。

       Job的Discover权限是一个奇葩的权限,帮助说Discover比Read的级别更低。如果匿名用户(没有访问job的权限)直接访问一个Job的Url将重定向到登陆页面。

3.5 全局工具配置

点击系统配置Global Tool Configure进入配置选项。

3.5.1 JDK 配置

3.5.2 git配置

3.5.3 maven配置

三、新建一个项目

在主页面选择新建,输入项目名称,新建一个Maven项目。构建主要是通过pom.xml文件的配置进行的。如下图:

3.1 项目配置

3.1.1  General常用配置示例

3.1.2 源码管理

源码管理项选中git,Repository URL项填入要构建项目的远程仓库,Branch Specifier指定要构建的分支。

3.1.3  构建触发器

Buildwhenever a SNAPSHOT dependency is built:当job依赖的快照版本被build时,执行本job。

触发远程构建 (例如,使用脚本):通过一个远程url访问进行构建。

Buildafter other projects are built:当本job依赖的job被build时,执行本job。

buildperiodically:周期性构建,隔一段时间build一次,不管版本库代码是否发生变化,通常不会采用此种方式。

pollscm:隔一段时间比较一次源代码如果发生变更,那么就build。否则,不进行build,通常采用这种方式。

3.1.4 build选项

Goals and options:这个地方填写maven构建时maven执行的命令。

3.1.5 构建设置

主要设置email。

3.1.6 构建后操作

有一些可选项这里主要配置email

增加Editable Email Botification

ProjectRecipient List:这里填写构建后给哪些人发送邮件,邮件地址以逗号或者空格分开。

ContentType:发送邮件的格式,HTML或者text。

DefaultSubject:发送邮件的主题。

DefaultContent:默认发送邮件的内容。

邮件内容配置参考:

<!DOCTYPE html>
<html>
        <head>
               <meta charset="UTF-8">
                       <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
        </head>
 
        <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
               offset="0">
               <table width="95%" cellpadding="0" cellspacing="0"
                       style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
                       <tr>
                               <td>(本邮件是程序自动下发的,请勿回复!)</td>
                       </tr>
                       <tr>
                               <td>
                                      <h2>
                                              <font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>
                                      </h2>
                               </td>
                       </tr>
                       <tr>
                               <td>
                                      <br />
                                      <b>
                                              <font color="#0B610B">构建信息:</font>
                                      </b>
                                      <hr size="2" width="100%" align="center" />
                               </td>
                       </tr>
                       <tr>
                               <td>
                                      <ul>
                                              <li>项目名称&nbsp;:&nbsp;${PROJECT_NAME}
                                              </li>
                                              <li>构建编号&nbsp;:&nbsp;第${BUILD_NUMBER}次构建
                                              </li>
                                              <li>JAVA&nbsp;HOME:&nbsp;${JAVA_HOME}
                                              </li>
                                              <li>触发原因:&nbsp;${CAUSE}
                                              </li>
                                              <li>构建日志:&nbsp;
                                                     <a href="${BUILD_URL}console">${BUILD_URL}console</a>
                                              </li>
                                              <li>构建&nbsp;&nbsp;Url&nbsp;:&nbsp;
                                                     <a href="${BUILD_URL}">${BUILD_URL}</a>
                                              </li>
                                              <li>工作目录&nbsp;:&nbsp;
                                                     <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a>
                                              </li>
                                              <li>项目&nbsp;&nbsp;Url&nbsp;:&nbsp;
                                                     <a href="${PROJECT_URL}">${PROJECT_URL}</a>
                                              </li>
                                      </ul>
                               </td>
                       </tr>
                       <tr>
                               <td>
                                      <b>
                                              <font color="#0B610B">Changes Since Last
                                                      Successful Build:</font>
                                      </b>
                                      <hr size="2" width="100%" align="center" />
                               </td>
                       </tr>
                       <tr>
                               <td>
                                      <ul>
                                              <li>
                                                     历史变更记录 :
                                                     <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a>
                                              </li>
                                      </ul>
                                       ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for
                                      Build #%n:
                                      <br />
                                      %c
                                      <br />
                                       ",showPaths=true,changesFormat="
                                      <pre>
                                              [%a]
                                              <br />
                                              %m
                                       </pre>",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}
                               </td>
                       </tr>
                       <tr>
                               <td>
                                      <b>
                                              <font color="#0B610B">Failed Test Results:</font>
                                      </b>
                                      <hr size="2" width="100%" align="center" />
                               </td>
                       </tr>
                       <tr>
                               <td>
                                      <pre
                                              style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
                                      <br />
                               </td>
                       </tr>
                       <tr>
                               <td>
                                      <b>
                                              <font color="#0B610B">构建日志 (前 200行):</font>
                                      </b>
                                      <hr size="2" width="100%" align="center" />
                               </td>
                       </tr>
                       <!-- <tr> <td>Test Logs (if test has ran): <a href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a> 
                               <br /> <br /> </td> </tr> -->
                       <tr>
                               <td>
                                      <textarea cols="90" rows="30" readonly="readonly"
                                              style="font-family: Courier New">${BUILD_LOG, maxLines=200}</textarea>
                               </td>
                       </tr>
               </table>
        </body>
</html>
 

效果如下图:

3.2 执行构建

  1. 完成项目配置后点击保存,再进入项目工作空间中,如下图:

    2.点击立即构建按钮开始执行构建,下方可看到构建的执行过程,点选此次构建可查看详细信息如下:

 

   3.点击Console Output与Test Result查看控制台输出与测试结果输出:

   4.点选构建历史查看构建时间趋势:

5.在工作空间下还可查看详细的构建日志等信息。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Jenkins部署项目是一种自动化的构建和部署方法。首先,你需要安装Jenkins,并确保其正常运行。接下来,你可以按照以下步骤来使用Jenkins部署项目。 1. 准备项目代码:将项目代码上传到版本控制系统(如Git)中,并确保Jenkins可以访问该代码库。 2. 配置Jenkins项目:在Jenkins中创建一个新的项目,并选择适合你项目类型的构建方式(例如,针对Java项目可以选择Maven构建)。 3. 配置构建触发器:设置当有代码提交或定时执行时触发构建的条件。你可以选择在代码提交后自动触发构建,或者按计划定时执行构建。 4. 配置构建步骤:根据你的项目需求,配置构建步骤。这可以包括构建、测试、打包、部署等操作。例如,对于Java项目,你可以使用Maven进行构建和打包。 5. 配置构建后操作:在构建完成后,你可以选择执行一些后续操作,比如自动部署到服务器、发送构建结果通知等。你可以根据需要配置这些操作。 6. 执行构建:保存并触发构建。Jenkins将根据你的配置自动构建和部署你的项目。 使用Jenkins部署项目可以帮助你自动化构建和部署过程,提高工作效率,减少手动操作的繁琐。同时,Jenkins还提供了丰富的插件和扩展功能,可以根据不同项目的需求进行定制和扩展。引用<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [jenkins部署项目](https://blog.csdn.net/qq_47945825/article/details/120919948)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [使用jenkins进行项目部署](https://blog.csdn.net/m0_37572422/article/details/114284418)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [使用Jenkins部署React项目的方法步骤](https://download.csdn.net/download/weixin_38717896/12945396)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值