Jenkins

一、简介

这里介绍持续集成工具Jenkins,Jenkins 是一个可扩展的持续集成引擎,用于持续、自动地构建/测试/发布软件项目。Jenkins的主要目标是监控软件开发流程,提高开发人员的工作效率。Jenkins通过插件扩展其功能,目前可用插件丰富,基本上可以满足用户个性化的需求。正因为如此,jenkins的配置不可能完全讲到,但是大部分的配置都是有说明的,只要点击输入框后面的问号就可以了解使用的方法。

二、安装

Jenkins需要运行在Java 5及以上版本。 Jenkins可以从http://jenkins-ci.org/获取,通过直接运行jenkins.war包或者将war包部署到tomcat中启动,建议后者。 建议在catalina.sh中设置JAVA_OPTS Jenkins建议在tomcat中使用utf-8编码,配置tomcat下conf目录的server.xml文件。找到URIEncoding并设置为”UTF-8”

三、系统设置

  1. 主目录:Jenkins默认会是用户主目录下的.jenkins文件夹。如要修改,必须先停止jenkins服务。设置环境变量JENKINS_HOME
  2. 执行者数量:本机可以同时执行的构建数目
  3. 标记:给本节点加上标记,用于构建时可以人为指定到该节点
  4. 用法:尽可能的使用这个节点/只允许运行绑定到这台机器的Job
  5. 生成前等待时间:在一个构件开始前等待的秒数
  6. SCM签出重试次数:在签出失败时可以重试的次数
  7. Restrict project naming:命名规范,非必需
  8. 全局属性-Environment variables:添加环境变量,键值对形式 全局属性-Tool Locations:指定本机上某些工具的位置
  9. Maven Configuration-Default settings provider:Use default /Settings file
    Maven Configuration-Default settings provider:Use default /Global Settings file
    分别设置Maven的用户和全局的settings.xml文件位置,默认在${user.dir}/.m2/下和$MAVEN_HOME/conf/下
  10. JDK/Git/Ant/Maven等安装:按相关描述填写即可
  11. Maven项目配置-全局MAVEN_OPTS:Maven命令的参数,如-Xms512m -Xmx1g等 Maven项目配置-Local Maven Repository:本地maven仓库,一般默认即可
  12. Jenkins Location-Jenkins URL:可填写访问jenkins的url,如http://ip:port/jenkins/,为可选项,用于在邮件中生产Jenkins链接 Jenkins Location-系统管理员邮件地址:其实就是jenkins邮件通知的发件人
  13. 邮件通知-SMTP服务器:如smtp.XXX.com 邮件通知-使用SMTP认证:勾选”使用SMTP认证",输入用户名与密码
  14. SCM Polling-Max # of concurrent polling:定时检查源码并构件的最大并行数量

四、安全设置

Jenkins平台供许多用户共同使用,所以需要设置相应的权限来保证安全性。默认情况下所有用户都有管理员权限,没有任何限制。目前暂时设置成登录用户拥有任何权限,之后可根据需要做安全性限制。

  1. 启用安全:勾选”启用安全”,在访问控制的安全域选择”Jenkins专有用户数据库”,并勾选”允许用户注册”,在”授权策略”项选择合适的安全策略。
  2. 任何用户可以做任何事:没有任何限制,也是默认级别
  3. 安全矩阵:Jenkins安装以后,会有一个匿名用户,通过该匿名用户进入系统后,创建一个admin用户,分配它系统所有的权限,同时限制匿名用户的权限。
  4. 登录用户可以做任何事:即注册并登录之后具备任何权限
  5. 遗留模式:admin用户拥有系统的所有权限,其他所有用户只有只读权限。
  6. 项目矩阵授权策略:配置于安全矩阵是一模一样的,唯一的区别是项目矩阵授权策略支持在Job的配置页面再次配置授权策略。

五、管理节点

Jenkins支持分布式构建,目前只搭建了一台机器。 对于较大的代码集,可以将资源分摊在多个节点上,从而加速构建。Jenkins也能够让同一套代码在不同的环境中编译、测试等。 进入”新建节点”:

  1. of executors:最大同时构建数量
  2. 远程工作目录:节点的工作目录,该新建节点作为在分布式下的一个slave。如果目录不存在,会自动创建
  3. 标签:可以给slave加上一个或多个标签,通过标签选择slave
  4. 用法:尽可能的使用这个节点:这是默认和常用的设置。在这种模式下,Jenkins会尽可能的使用这个节点。 只允许运行绑定到这台机器的Job: 这种模式下,Jenkins只会构建分配到这台机器的Job
  5. 启动方法:Launch slave agents on Unix machines via SSH【推荐】:通过SSH通道连接节点。 Launch slave agents via Java Web Start:通过Java Web Start连接节点
  6. Availability:Keep this slave on-line as much as possible【推荐】:尽可能保持节点在线 Take this slave on-line according to a schedule:根据时间表在线(类似于Linux的定时任务) Take this slave on-line when in demand and off-line when idle:让Jenkins根据需求自动连接或者离线

六、构建项目

填写名称,这里以”构建一个自由风格的软件项目”为例进行介绍。其它的如maven项目等就更简单了。

  1. 勾选”丢弃旧的构建”:可以降低master节点的存储和Job的构建历史记录,根据自己需要进行设定
  2. ”参数化构建过程”:本质是在构建前让你和Job有个交互过程,交互结果以环境变量的方式参与到Job的构建中
  3. 关闭构建:重新开启构建前不允许进行新的构建,一般用于一些临时情况
  4. 在必要的时候并发构建:略
  5. Restrict where this project can be run:指定项目构建在指定的节点,填写节点的标签即可指定
  6. 如果有多个版本的工具,如jdk版本,此处可选择
    高级项目选项:

  7. 安静期:项目级别的在构建之前等待的秒数

  8. 重试次数:项目级别的签出重试次数

  9. 使用自定义的工作空间:可以自定义构建的工作目录
    源码管理-Git:

  10. Repository URL:项目地址

  11. Credentials:访问凭证,对于私有的项目可以通过ssh或者用户/密码访问

  12. Branches to build:构建的分支,可以是,等等

  13. Additional Behaviours:一些git相关的额外设置
    构建触发器:

  14. Build whenever a SNAPSHOT dependency is built:当此项目所依赖的项目在jenkins中被构建

  15. 触发远程构建:通过身份令牌出发构建。可以通过远程附加token来触发构建

  16. Build after other projects are built:在某个项目被构建后,构建此项目

  17. Build periodically:按照指定的时间间隔进行自动构建,不管代码有没有变更。

  18. Poll SCM:按照指定的时间间隔对SCM进行检测,如果代码库有更新则拉取后进行构建
    增加构建步骤:

  19. Execute shell:通过shell命令构建

  20. Invoke Ant:Ant脚本

  21. Invoke top-level Maven targets:Maven构建,如clean install assembly:assembly

  22. sbt:这里可以选择安装的sbt以及需要执行的命令
    构建后操作:

  23. Archive the artifacts:将指定构建后的文件到jenkins的构建仓库中,当前路径为workspace,多项用逗号分隔

  24. Build other projects:在本次构建完成之后执行的其它项目

  25. 邮件通知:这里建议选择Editable Email Notification,并在Triggers中选择触发的情景以及需要发送的对象

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐