Jenkins详细教程

Jenkins详细教程

 

Jenkins简述

1.Jenkins是什么?

Jenkins是一款基于Java开发的持续集成工具,它是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能, 主要可用于持续、自动地构建/测试软件项目,如CruiseControl与DamageControl;监控一些定时执行的任务。
Jenkins为用户提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更重要的业务逻辑实现上。同时Jenkins能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象的展示项目构建的趋势和稳定性

2.Jenkins能干什么?

Jenkins的主要功能是:

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

但不局限于这两点,例如Jenkins还能远程部署、异常处理监控等。

Jenkins入门配置

1. 准备工作

Jenkins是用Java开发的项目,这使得它拥有良好的跨平台性,但是出于篇幅的考虑,这里只介绍最为简单的windows平台下安装的流程。 需求:

  • svn(Jenkins已集成相关功能)
  • java(略过不提)
  • maven(略过不提)
  • Jenkins

这里简单提一下,Jenkins目前版本中已集成了svn,所以安装Jenkins的平台没有安装svn也是可以迁出代码的(此为本人实测,但不确认所有版本都有,测试版本为十二周更新的稳定版本 Long-term Support (LTS)

2. windows平台下安装Jenkins

  1. 下载Jenkins
  2. 解压、安装
  3. 在.msi安装完成后,会弹出该服务首页,即http://localhost:8080(默认8080端口)
  4. 在安装目录下找到.\secrets\initialAdminPassword(无后缀),使用文本编辑器打开(密码一般是32位数字+字母混合)复制到页面进行用户登录
  5. 登录成功后,选择安装推荐插件,等待安装完成
  6. 设置管理员信息,可跳过,跳过则继续使用initialAdminPassword中的密码

注意事项:

  • 默认端口冲突:
    • 起因:Jenkins安装成功后,Jenkins项目在会以服务的形式在后台运行,但是默认端口容易与其他项目冲突,此时Jenkins将无法启动,并无任何提示,表现为安装成功后不弹出Jenkins主页。
    • 解决方式:
      • 在Jenkins的安装目录下找到.\jenkins.xml
      • 在第41行找到--httpPort=8080,修改为不冲突,打开/重启 服务即可 image.png

3.配置

  • 权限配置:
    • 匿名访问权限
      当需要使用批处理或其他方式启动Jenkins构建任务时,必须先在
      系统管理-->全局安全配置-->选择登录用户可以做任何事-->勾选Allow anonymous read access
      此时便支持匿名构建任务
      这种方式存在风险,但是可以在脚本或其他方式远程触发Jenkins Job项目构建时省去认证环节,这里我不推荐开启匿名构建,后面会介绍插件来远程认证并触发Job构建
  • 全局环境搭建

    • JDK配置

      • Jenkins-->系统管理-->全局工具配置-->JDK-->新增JDK
      • 别名:别名尽量注明版本号,方便识别
      • JAVA_HOME:Jdk配置参数,填写jdk根目录位置(如果已存在JDK,不要勾选自动安装)

      image.png

    • Maven配置

      • Jenkins-->系统管理-->全局工具配置-->Maven-->新增Maven
      • Name:识别,注明版本号
      • MAVEN_HOME:Maven配置参数,填写Maven根目录位置(如果已存在Maven,不要勾选自动安装)

      image.png

4.插件安装

联网情况下安装

  1. Jenkins-->系统管理--->管理插件进入插件下载、安装界面
  2. 搜索
    Subversion Plug-in实现svn的功能
  3. 选择下载待重启后安装或直接安装

断网情况下安装

  1. 下载插件
    http://updates.jenkins-ci.org/download/plugins
    http://mirror.xmission.com/jenkins/plugins/
    https://wiki.jenkins.io/display/JENKINS/Plugins
  2. Jenkins-->系统管理-->管理插件-->高级-->选择插件并上传
  3. 如果因为缺少依赖包安装失败,在失败信息中找到依赖包,重复1、2步骤提前安装依赖包
  4. 重启服务生效

在存在已安装好的Jenkins时,复制根目录下plugins文件夹到新安装的Jenkins根目录下覆盖,可以直接安装上个Jenkins的插件

5.创建基本功能项目

就简单的持续集成一个项目,Jenkins集成了svn和windows batch等功能,所以基本简单迁出代码、编译、测试、发布这个流程基本上不需要插件的帮助。

流程:

  1. 创建项目:新建项目,选择Jenkins-->新建项目-->命名-->构建一个自由风格的软件项目-->确认
  2. 基本配置:
    • 参数化构建过程:接收参数,并用于构建
    • 重试次数:Jenkins从代码库迁出代码失败时,会重试的次数(默认间隔十秒重试一次)
    • 使用自定义的工作空间:设置工作空间位置 image.png
  3. 迁出代码设置
    • Repository URL:填项目的svn地址
    • Credentials:选择svn的账号与密码,如果没有,选择Add新建一个,User为svn账号,password为svn密码,其他如非需要可以选择不填
    • Local module directory:可不改动(默认为根目录.,如果已经自定义了工作空间,这里为工作空间的根目录,否则为默认工作空间)
    • Check-out Strategy:看情况选择,如果Jenkins处于几乎不会被关闭,构建对源代码无修改时可使用Use 'svn update' as much as possible,放Jenkins有可能被强制重启或构建会修改源代码时,应使用Use 'svn update' as much as possible,with 'svn revert' before update,可以有效避免svn更新失败 image.png
  4. 代码编译

    • 构建-->增加构建步骤-->Invoke top-level Maven targets
    • Maven Version:选择在全局配置中配置的版本
    • Goals:maven编译指令,这里填clean install -DskipTests
    • POM:这里为编译时使用的pom.xml在目录下的相对位置
    • Settings file:该选项可以选择自定义maven的配置文件,
      • 选择Settings file in filesystem
      • 需要使用的settings.xml的绝对路径,如D:\apache-maven-3.5.0\conf\settings.xml

    image.png

  5. 文件迁移、发布

    • 构建-->增加构建步骤-->Execute Windows batch command
    • 命令:windows批处理指令,写在这里运行的指令不会有新的窗口,即使使用startcmd等指令,这里推荐使用start指令,否则只有当批处理运行结束时该构建才会被当做结束,例如

      copy D:\workspace\jenkins_Test\target\jenkins_test-0.0.1-SNAPSHOT.jar D:\Test\jar\jenkins_test-0.0.1-SNAPSHOT.jar
      start java -jar D:\Test\jar\jenkins_test-0.0.1-SNAPSHOT.jar
      

      先拷贝出去再进行部署可以避免代码迁出时或maven编译时遇到文件占用异常导致构建失败,并且使用批处理发布可以不依赖插件和tomcat

Jenkins进阶

插件安装

联网情况下安装

  1. Jenkins-->系统管理--->管理插件进入插件下载、安装界面
  2. 搜索
    Parameterized Remote Trigger(负责不同服务器上的Jenkins进行远程触发)
    HTTP Request(负责发送http请求,这里用来关闭springBoot项目)
    pre scm buildstep(负责在svn或其他代码库迁出代码时执行构建操作)
    Deploy to container(负责将项目远程部署到tomcat上面,但是tomcat必须已启动)
  3. 选择下载待重启后安装或直接安装

插件使用

  • 远程触发Jenkins Job

    • 主服务器环境配置:

      • 选择一个Jenkins服务器作为主要的触发启动其他Jenkins的任务的Jenkins,在该Jenkins中安装插件Parameterized Remote Trigger Plugin,其他服务器可以选择不装。
      • 插件安装成功后,在系统管理-->系统设置中找到Parameterized Remote Trigger Configuration,选择增加
      • Display name:远程服务器名称;随意
      • Enable 'build token root support:使用插件进行认证;勾选此选项后,需安装插件激活此功能
      • Authentication:证书;选择Username + API TokenRemote Username为远程服务器的账号,API Token为远程服务器的密码
      • Remote address and port:远程服务器的url;此处应填写协议和端口,例如http://192.168.18.100:1209
      • 点击Validate Address进行访问测试
        image.png
    • 主服务器Job配置

      • job中,构建-->增加构建步骤-->Trigger a remote parameterized job(这里可将此模块拖动至Invoke top-level Maven targets上面,方便同步部署)
      • Select a remote host:选择需要触发的服务器名称
      • Override credentials:覆盖证书;无需勾选,默认使用预设的该服务器的账号密码,勾选则覆盖(单独此Job使用的证书)
      • Do not fail if remote fails:在远程项目失败时此构建继续;勾选,在远程项目失败时此项目仍旧能够继续运行,但如果不能连接远程服务器,则该项目仍旧会失败
      • Wait to trigger remote builds until no other builds are running:等到远程项目构建完成之后才结束此构建;可勾选,不用去寻找哪个尚未构建完成,此构建结束就代表所有构建都结束(这里不区分构建成功与失败,需要区分得配合Do not fail if remote fails使用)
      • Poll Interval (seconds):当连接远程服务器失败时重新请求的时间,单位:秒 ;随意,但不要太小
      • Block until the remote triggered projects finish their builds:阻塞当前构建,等到远程服务构建结束时继续构建;不勾选,除非远程需要先运行完毕,一般配合Do not fail if remote fails使用
      • Remote Job Name:远程服务器上job的名称
      • Token:远程触发令牌
        下面三项如非项目需求可使用默认 image.png
    • 从服务器配置
      • 勾选参数化构建过程,随意选择字符类型,但是得要能接受int数值
      • 名称:接受参数的名称,填delay
      • 默认值:无参或未获取参数时的值,这里随意
      • 描述:参数描述
        此参数功能为接受Parameterized Remote Trigger插件触发式自带的参数,不影响构建 ParameterizedConstruction.png
      • 构建触发器勾选触发远程构建 (例如,使用脚本),当选择这种触发方式时,需要自定义一个密匙token,访问http://ip+Jenkins项目url + /build?token=自定义密匙token即可触发(这种方式适合跨平台触发不同的项目),例如:localhost:8080/job/test/build?token=test image.png
  • 提前执行编译等行为
    • 构建环境-->Run buildstep before SCM runs image.png
  • http请求
    • URL:http请求地址
    • HTTP mode:请求方式
    • Ignore Ssl errors?忽略无效证书
    • Http Proxy:请求代理 image.png
    • Connection timeout:超时时间;0为不存在超时时间
    • Response codes expected:忽略错误代码匹配 image.png
  • 远程部署至tomcat
    • 构建后操作-->增加构建后操作步骤-->Deploy war/ear to a container
    • WAR/EAR files:包位置,支持ant-style匹配;一般填写**/*.war,用ROOT文件夹启动项目时也填写此表达式
    • Context path:项目在Tomcat URL的位置;例如:/test对应http://localhost:8080/test
    • Containers-->Add Container-->Tomcat 7.x
      • Credentials:Tomcat证书
      • Tomcat URL:Tomcat的Url;例如http://localhost:8080 image.png

猜你喜欢

转载自blog.csdn.net/A1229451567/article/details/87694306