Jenkins入门实践

Jenkins入门实战

本文整理了一些在日常工作中经常用到的 Jenkins 功能和插件,在此分享给大家。

概念

Jenkins,最早被称为Hudson,是一个Java语言编写的开源的、提供友好操作界面的持续集成(CI,Continuous integration)工具。何为持续集成?就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,自动执行各种检查和测试。而Jenkins就可以比较轻松的完成这一需求。

特征

  • 开源的Java语言持续集成工具,支持持续集成、持续部署;
  • 易于安装部署配置,可通过Yum或者War包以及Docker容器等快速实现安装部署,可方便Web界面配置管理;
  • E-mail消息通知及测试报告输出;
  • 分布式构建,Jenkins支持多台计算机一起构建/测试;
  • 支持丰富的插件安装。

准备工作

在开启Jenkins实践之前,我们需要做一些准备工作:

  • 安装JDK;
  • 安装Git;
  • 创建Github账号;
  • 配置SSH密钥,建立计算机和GitHub服务器之间的连接;
  • 安装Jenkins。

入门实践

Jenkins提供了多种项目类型,本文以freestyle类型为例。在新建一个项目之后,我们会看到下面的页面:
Jenkins入门实践_第1张图片

主要包含五大功能模块,下面一一展开描述:

  • General:设置全局性的选项,比如项目名、描述信息等,在此列举两个经常使用的功能。

    • Discard old builds:丢弃旧的构建,构建Job会消耗大量的磁盘空间,尤其是存储的构建产物,所以该项允许我们限制在构建历史记录的作业数。可以告诉Jenkins只保留最近的构建或者保留不超过指定数量大构建,如果某个构建有特殊价值,则在构建细节页面右上角点击 Keep this build forever,意思是告诉Jenkins永远保留这个构建。

    • This project is parameterized:设置一些参数(包括String、Boolean、Choice、Git参数等),这部分的内容可以参考小编的笔记:Jenkins参数的使用

  • Source Code Managemant,配置源码管理,持续集成服务器最基本的作用就是监控版本控制系统,定期检出并构建源码的最新版本,输入想要构建的Git 仓库和Credentials,在Branches specifier中,默认值为*/master,如果为空,则所有的分支都会被构建,该语法支持通配符或者特定分支书写,下面列举两个例子:

    • refs/heads/BranchName:根据分支进行构建
    • **/tags/**:通过GitHub中的Tag进行触发Jenkins构建,

    Jenkins入门实践_第2张图片

  • Build Triggers,构建触发器。

    • Build after other projects are built:另一个构建job完成之后,触发本次构建job
    • Build periodically,不管版本库代码是否发生变化都周期性执行构建。
    • Poll SCM:仅当SCM收到变化时,才会触发Jenkins构建。

    注意:Build periodically和Poll SCM的语法是相同的,

    结构:* * * * *
    第一颗:分钟(0~59)
    第二颗:小时(0~23)
    第三颗:一个月的第几天(1~31)
    第四颗:第几月(1~12)
    第五颗:一周的第几天(0~7),其中0和7代表的都是周日
    例如:
    半小时查询一次:H/30 * * * *
    每分钟查询一次:*/1 * * * *
    
    • Github hook trigger for GITScm polling

      通过Webhook进行触发,该操作需要在GitHub中设置Webhook,以及勾选触发条件。

  • Build Environment,设置构建环境,在此列举两个常见的小功能

    • Delete workspace before build starts,在开启本次构建之前,先删除现有的工作空间。这种情况要视情况而定。如果项目改动比较大的时候,需要进行删除操作。
    • Add timestamps to the Console Output:在控制台最左侧一列添加输出日志的时间。
  • Build:构建步骤,告诉Jenkins想要如何构建项目,Jenkins提供了多种方式:

    • Execute shell:执行特定的shell脚本,注意:只需要填写相对于工作目录的脚本名称,不过在构建步骤中尽量避免使用系统级别的脚本,这样可以减少对机器配置的依赖,一个方便的替代方式是使用Groovy或者Gant执行系统脚本。

    • Copy artifacts from another project:可以拷贝其他项目中的Artifact产物,作为本次项目文件使用。

    • Trigger/call builds on other projects:当本次Jenkins项目触发时,可以触发另一个Jenkins项目,当有多个项目时,可以使用英文逗号隔开。

      Jenkins入门实践_第3张图片

  • Post-build Actions,构建后操作,在构建完成之后,可能需要归档某些生成的构建产物,报告测试结果,并把相关结果通知给相关人员。

    • Archive the artifacts
      可以使用通配符结构归档构建产物,例如 */.zip,如果有多个文件进行归档,可以使用逗号进行分隔。

    • Editable Email Notification
      邮件通知,在Project Recipient List中输入相关人员的邮箱,发送的内容可在“Default Content”中以HTML的语法结构输入。

系统环境变量

  • WORKSPACE
    工作空间的绝对路径。
  • BUILD_NUMBER
    当前的构建号,例如“8”.
  • JOB_NAME
    当前job的名字,例如Test-demo.
  • BUILD_TAG
    为了便于识别当前构建的job,例如jenkins-Test-demo-8.
  • NODE_NAME
    如果构建运行在slave上,则输出该节点的名字,如果构建运行在master上,则输出master.
  • NODE_LABELS
    运行该构建节点标签列表。
  • JENKINS_HOME
    主节点上为Jenkins存储数据分配目录的绝对路径,例如/Users/xxxx/.jenkins.
  • JENKINS_URL
    jenkins服务器完整的URL。
  • JOB_URL
    当前构建job完整的URL。
  • BUILD_URL
    当前构建完整的URL。

你可能感兴趣的:(Jenkins实战教程,1024程序员节,Jenkins入门实践,Jenkins教程,Jenkins介绍)