Jenkins学习

Jenkins主要用于持续集成,将项目部署的过程自动化,减少人工干预的同时也能提高工作效率,减少工作量。

持续集成概述

什么是持续集成

随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。

持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。

持续集成的核心价值在于:

  • 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
  • 持续集成保障了每个时间点上团队成员提交的代码是能成功集成的。换言之,任何时间点都能第一时间发现软件的集成问题,使任意时间发布可部署的软件成为了可能;
  • 持续集成还能利于软件本身的发展趋势,这点在需求不明确或是频繁性变更的情景中尤其重要,持续集成的质量能帮助团队进行有效决策,同时建立团队对开发产品的信心。

持续集成的原则

业界普遍认同的持续集成的原则包括:

  • 需要版本控制软件保障团队成员提交的代码不会导致集成失败。常用的版本控制软件有 IBM Rational ClearCase、CVS、Subversion 等;
  • 开发人员必须及时向版本控制库中提交代码,也必须经常性地从版本控制库中更新代码到本地;
  • 需要有专门的集成服务器来执行集成构建。根据项目的具体实际,集成构建可以被软件的修改来直接触发,也可以定时启动,如每半个小时构建一次;
  • 必须保证构建的成功。如果构建失败,修复构建过程中的错误是优先级最高的工作。一旦修复,需要手动启动一次构建。

持续集成系统的组成

由此可见,一个完整的构建系统必须包括:

  • 一个自动构建过程,包括自动编译、分发、部署和测试等。
  • 一个代码存储库,即需要版本控制软件来保障代码的可维护性,同时作为构建过程的素材库。
  • 一个持续集成服务器。本文中介绍的 Jenkins 就是一个配置简单和使用方便的持续集成服务器。

以上当然是我从其他地方拷贝过来的,因为这篇草稿我放了很长时间,所以忘记源地址是什么了,如果如果源作者看到这些内容,还请联系我加上出处

Jenkins的下载和安装

下载就不说了,说下安装。安装有两种方式:

  • 一种是放到servlet容器中,例如tomcat,启动后访问:http://localhost:8080/jenkins;
  • 一种是直接在命令行启动,输入:java -jar jenkins.war

如果用第二种方式,可以写一个脚本,方便启动和停止。这里将我写的linux上的脚本贴出来,供大家参考: 首先是start.sh

#!/bin/bash
#jenkins.war和脚本是在同一个目录下的,而且jdk也已经装好并且加入PATH中
#命令最后的“&”是用于将该进程作为后台进程处理
./java -jar jenkins.war --httpPort=9090 &

然后是shutdown.sh

#!/bin/bash
ps -ef | grep '[j]enkins' | awk '{print $2}' | xargs kill -9

全局设置

点击进入“系统管理”,可以看到以下各项: 这里只是简单说下我比较熟悉的.

  1. 系统设置
    在系统设置中可以看到主目录,设置工作空间根目录、构建记录根目录、执行者数量等
    • 主目录 这个目录是jenkins除了运行war包外只要存放文件的地方,工作空间和配置文件等都在该目录下(如果你设置了忘记了用户名密码,可以到该目录下删除config.xml,然后就会恢复到匿名登录的状态)
    • Maven项目配置 在这里可以指定全局性的maven选项和本地的maven库地址
    • 如果你装了一些插件,也是在这里设置该插件的全局配置。例如Publish over SSH,可以指定要链接服务器地址,用户名密码。这样在构建项目过程中可以直接使用
  2. Configure Global Security
    • 在这里可以设置全局性的安全设置,例如管理用户权限等。 启用安全后,在安全域中选择用户的来源,例如 Jenkins专有用户数据库;在授权策略中可以规定用户的权限,例如选择安全矩阵,可以指定用户具有哪些权限
  3. 插件管理

    jenkins有品目繁多的插件可供使用,功能强大的同时使用也很方便。在构建项目的过程中,会用到各种各样的插件,会面会说。

  4. Manage Credentials

    在这里管理各种证书,例如svn的用户名和密码等等。这里设置好之后,就可以在使用的时候直接调用了

插件

好用的几个插件:

Publish over SSH

这个插件可以方便的往服务器上传文件和执行命令,好处不言而喻。在“系统设置”中需要设置链接服务器的地址,用户名密码以及服务器上地址。在使用时可以直接选择。
在使用时需要指定:

  • 源文件
    以工作空间为当前位置,指定相对路径,和ant的路径匹配规则是一样的
  • 移除的前缀
    例如源文件的路径是info-user/info-user-provider/target/**/*,如果不写移除的前缀,那么就会在服务器上创建路径info-user/info-user-provider/target
  • 远程路径
    这用来指定文件在服务器上的位置。
  • Exec command
    在这里可以写上要执行的脚本,很方便。但有个坑,有次我在服务器上更改了JAVAHOME,但构建执行脚本时,拿到的JAVAHOME还是原来那个,为此我大费周章,总以为服务器哪出了问题。最后快绝望的时候,我想把jenkins重启一下试试吧,想不到竟然可以了。万万没想到,jenkins会缓存这些内容,所以在遇到类似的问题时,不妨重启一下试试。
Deploy to container Plugin

这个可以很方便的将工程部署在web容器中,包括tomcat,jboss等等。

创建项目并构建

Jenkins启动后,点击“新建”,出现:

  1. 构建一个自由风格的软件项目。该项用于构建比较灵活的项目,可以按照项目自由配置构建方式
  2. 构建一个maven项目。该项主要针对maven项目,方便maven项目的构建
  3. 构建一个多配置项目。没有深入研究过,暂不说
  4. 监控一个外部的任务。没有深入研究过,暂不说
  5. 复制已有的Item。该项可以复制已有的项目,方便创建

以创建一个maven项目为例:

  • 源码管理。选择svn(当然也可以选择其他的,方式几乎一样),输入地址和Credentials,其他的默认选项。注意:在你输入了正确的地址和用户名密码后,可能它还会警告你说地址不存在,不用纠结,其实是正常的。
  • 构建触发器
    • Build whenever a SNAPSHOT dependency is built。这个是默认选项,意思是依赖已经构建的快照进行构建。
    • 触发远程构建 (例如,使用脚本)。这个没有研究过。
    • Build after other projects are built。这个表示在指定的其他项目完成后进行构建。选择这个选项会让你输入触发这个项目构建的其他的项目名称和构建结果。
    • Build periodically。周期进行项目构建(它不care源码是否发生变化)。
    • Poll SCM。定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作。
  • build
    • 指定pom文件和需要执行的任务
    • 如果需要指定settings.xml,可以点开"高级",指定Settings file和 Global Settings file
    • 在构建之前和之后可以加入预处理(add pre-build step)和后续处理(add post-build step),方便构建的过程。
  • 构建设置
    • 主要是用于邮件通知,暂且略过
  • 构建后操作。主要做一些构建之后的操作,例如把jar包放到maven库等。

总之,Jenkins非常的灵活和好用,需要学习和注意的地方也非常多。希望这篇文章可以给大家带来帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值