jenkins快速开始

目录

  • 第一部分 jenkins认识
    • 一、什么是jenkins
  • 第二部分 jenkins的插件以及配置
    • 一、jenkins安装插件两种方式
    • 二、jenkins使用
      • 1. Jenkins插件镜像下载加速
      • 2. Jenkins如何设置为中文
      • 3. 配置Jenkins使用Gitlab的代码库进行构建
        • 3.1 安装相关插件并配置
        • 3.2 新建 jenkins item(项目、任务)
      • 4. Jenkins 新建一个maven项目
        • 4.1 安装ssh、maven相关插件
        • 4.2 系统管理--全局工具配置
        • 4.3 新建maven项目,配置项目配置
      • 5. jenkins指定maven仓库地址
      • 6. 配置maven的settings.xml路径
      • 7. jenkins编译构建过程跳过单元测试
      • 8. Jenkins的console控制台中文乱码
      • 9. jenkins通过SSH Publishers自动构建发包到远程服务器
      • 10. 使用maven编译,又使用lib下的Jar包
      • 11. Jenkins构建Maven多模块项目时,单独编译子模块,并且不触发构建其它模块
      • 12. Jenkins利用GitLab Webhook触发代码提交自动构建任务
    • 三、Window10下开启/停止jenkins服务
  • 第三部分 其他参考
    • 1. 什么是 CI/CD?
      • CI 持续集成(CONTINUOUS INTEGRATION)
      • 持续交付
      • 持续部署(CD)

第一部分 jenkins认识

一、什么是jenkins

Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。

Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。

第二部分 jenkins的插件以及配置

官方插件下载Jenkins Plugins https://plugins.jenkins.io

jenkins的插件以及配置

jenkins系统管理比较重要的就是插件管理了 ,因为jenkins的工作全部是由插件来完成。

在插件管理中,有可更新、可选插件、已安装,日常的插件安装都是在这个界面上完成的。比如为了和gitlab协同,我们需要安装gitlab的插件。

一、jenkins安装插件两种方式

jenkins安装插件的两种方式
参考URL: https://www.jianshu.com/p/3b5ebe85c034

  1. 第一种方式:插件管理-搜索自己需要的插件,然后安装

Manage Jenkins -> Manage Plugins --> Avialable 菜单下 搜索直接安装。

  1. 第二种方式:官网搜索自己需要的插件,然后上传插件
  • 进入https://plugins.jenkins.io/,搜索自己需要的插件,然后下载。
  • 会下载一个.hpi的文件
  • Manage Jenkins -> Manage Plugins -> Advanced 菜单下选择上传 插件

总结:经过测试,发现jenkins 安装一些插件时,发现很多插件又依赖其它插件,因此,强烈推荐采用第一种方式安装,它会自动帮你安装依赖的插件。

二、jenkins使用

1. Jenkins插件镜像下载加速

Jenkins系列-Jenkins插件下载镜像加速
参考URL: https://www.cnblogs.com/zhuochong/p/10082498.html

我这里配置为 清华站点
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

2. Jenkins如何设置为中文

  1. Jenkins,设置成中文,需要Locale Plugin插件
  2. 然后在jienkins->【系统管理】->【系统设置】->【Locale】,输入:zh_CN,然后Apply
    jenkins快速开始_第1张图片
    jenkins快速开始_第2张图片
    经过测试: 至此,按照网上方法配置完成,这样设置后,还是没有中文显示!

再安装插件:
Localization: Chinese (Simplified)
在这里插入图片描述
安装完成后,重启jekins,再登录发现已经变成中文了。

3. 配置Jenkins使用Gitlab的代码库进行构建

jenkins + Git 搭建持续集成环境
参考URL: https://www.cnblogs.com/Leo_wl/p/5125855.html
Jenkins 配置GitLab插件和Git插件
参考URL: https://cloud.tencent.com/developer/article/1360527
gitlab创建个人访问令牌(personal access token)
参考URL: https://blog.csdn.net/NGU2028070003/article/details/86634474

3.1 安装相关插件并配置

我们的产品使用Git作为版本管理工具,而jenkins需要git插件来支持git,所以我们需要为jenkins添加git插件。

  1. 安装 GitLab 插件,(GitLab 依赖 Git插件 安装GitLab即可)
    插件关键字 GitLab

  2. 配置GitLab
    浏览器登录Jenkins Web UI,点击 Manage Jenkins(系统管理),再点击 Confinure System(系统设置), 点击左上角导航 配置 下拉框,点击Gitlab选项,可快速定位
    jenkins快速开始_第3张图片
    jenkins快速开始_第4张图片
    a, Connection Name随便填;
    b, Git Host URL填GitLab的域名地址,例如http://gitlab.yourdomain.com/;
    c, Credentials配置;
    点击Add下拉框,点击jenkins;弹出框里,
    类型支持多种gitLab认证,账号密码/API token等。

这里我们使用gitLab API token方式:
打开GitLab(例如公司内网的GitLab网站),点击个人设置菜单下的setting,再点击Account Tokens菜单,创建API token,复制Private token
关于创建API token可以参考如下链接:
gitlab创建个人访问令牌(personal access token)
参考URL: https://blog.csdn.net/NGU2028070003/article/details/86634474

kind选择GitLab API Token,将之前复制备用的Private token粘贴到API token输入框中,然后点击添加。

选择刚刚新建的Credentials,测试一下能否连接成功,点击Test connection,正常应该返回Success

d, 完成后点击页面底部的应用,再点击保存。

  1. 配置Git插件
    浏览器登录Jenkins Web UI,点击系统设置,再点击系统设置,点击左上角导航配置下拉框,点击Git plugin选项,可快速定位:
    jenkins快速开始_第5张图片
    a, 设置user.name和user.email:
    b, 完成后点击页面底部的应用,再点击保存。

3.2 新建 jenkins item(项目、任务)

Jenkins–创建自己的第一个Jenkins任务
参考URL: https://blog.csdn.net/pcaiyue/article/details/80340699

至此,我们应该是可以利用git,下载代码了。

进入Jenkins,点击左侧新建任务,点击构建一个自由风格的软件项目,点击确定。

注意:默认是不支持构建maven 项目的,需要安装插件。因为我们java项目大多是maven管理构建的,所以我们需要安装maven插件(Maven Integration)。请参考文件后面部分。

4. Jenkins 新建一个maven项目

[推荐-文章质量比较高]Jenkins的安装和构建一个Maven项目
参考URL: https://blog.51cto.com/13581826/2095876
jenkins 构建一个maven项目
参考URL: https://www.cnblogs.com/kakaln/p/9821900.html
Jenkins配置(Jenkins如何与maven项目进行连用)
参考URL: https://www.cnblogs.com/chongyou/p/8603950.html
Jenkins Maven安装设置
参考URL: https://www.yiibai.com/jenkins/jenkins_maven_setup.html
[推荐-全面]使用Jenkins来自动打包和部署Maven工程【持续集成】
参考URL: https://blog.csdn.net/pucao_cug/article/details/82531681

jenkins快速开始_第6张图片
当我们需要部署自动发布java代码时,就需要使用创建一个maven projent功能,默认是不支持构建maven 项目的,需要安装插件。

4.1 安装ssh、maven相关插件

如下内容显示安装插件
jenkins快速开始_第7张图片
Maven Integration
在这里插入图片描述
注意:Jenkins创建项目时没有maven项目是因为缺少插件 Maven Integration plugin。
安装Maven Integration提醒失败,说是缺少javadoc
因此,javadoc就在其依赖插件列表中,猜测是下载javadoc插件失败导致,因此,单独再搜索一次javadoc,先安装javadoc确定安装ok,再次搜索 Maven Integration安装即可。

4.2 系统管理–全局工具配置

jenkins快速开始_第8张图片
全局工具配置–配置jdk
如下图配置jdk
jenkins快速开始_第9张图片
全局工具配置–配置maven
jenkins快速开始_第10张图片
在全局配置里面配置东西,是全局的会影响到所有新建的Job,当然新Job可以基本都可以覆盖配置的全局配置。

在加入一些插件后,全局配置就会多一些内容,根据自己需要查看后面章节学习。如添加了Publish over SSH插件后,全局配置里面就会有关Publish over SSH的配置。

4.3 新建maven项目,配置项目配置

配置项目中的 源码管理
jenkins快速开始_第11张图片
注意:今天因为这里的凭证没有选对,浪费很多时间。 没有选对,这个界面给的打印信息有限,有一个技巧,就是你保存这个任务,然后手动点击构建,查看构建日志错误信息,非常详细,认证错误会打印出来!
我这里错误的原因是:我之前下jekins插件配置了一个代理,这里给git下载代码也会走 jekins插件那里配置的代理,请注意!

配置 Build参数
往下找到Buid选项卡
配置项目中的构建(使用maven构建包)
jenkins快速开始_第12张图片

然后点击“高级”

root pom:表示执行jenkins项目构建的时候,会从pom.xml文件开始执行

在Root POM处填写自己工程的pom.xml文件名称,我这里填写“pom.xml”在Goals and options处填写自己要执行的maven命令,我这里填写“clean install”,MAVEN_OPTS处可以填写一些JVM参数,例如可以指定对内存大小,指定maven使用的字符编码等,我这里使用JVM默认的内存大小,只指定字符编码为UTF-8,所以只填写“-Dfile.encoding=UTF-8”。

在往下,勾选上“使用自定义的工作空间”,如图
目录这个地方,填写你git要下载源码编译构建的路径,它会往这个目录里面下载源码,并编译。
jenkins快速开始_第13张图片

至此,基本的操作都完了。
不过还有以下内容需要做完了,下面对一些细节分类整理,完成这些细节,才算比较完整,参考下面子标题内容

  1. jenkins指定maven仓库地址
  2. jenkins指定maven setting.xml地址
  3. 构建完,使用sfp copy指定文件到指定路径
  4. 替换完成jar包后,在对应服务器上执行执行命令 重启服务
  5. jenkins 配置周期性构建
  6. jenkins配置提交代码时,构建

5. jenkins指定maven仓库地址

假设自定义的仓库路径为“/opt/repository”,那么在“系统管理-系统设置”中,修改“全局MAVEN_OPTS”的值为如下的内容:
强制指定本地仓库的路径.
-Dmaven.repo.local=/opt/repository

6. 配置maven的settings.xml路径

jenkins快速开始_第14张图片
maven配置中填写,maven setting.xml地址
jenkins快速开始_第15张图片

7. jenkins编译构建过程跳过单元测试

Jenkins构建项目的时候,有时候执行大量的单元测试用例需要浪费很多时间,又或者测试环境与其他dubbo,zookeeper服务器环境不通执行失败,

为了更快速的构建,可在build选项中使用如下命令不执行单元测试用例

-Dmaven.test.skip=true 表示在打包时不执行测试用例
jenkins快速开始_第16张图片

8. Jenkins的console控制台中文乱码

Jenkins的console控制台中文乱码
参考URL: https://blog.csdn.net/duzilonglove/article/details/78908562

一般来说,所有的乱码都是编码问题造成的。

解决方案:

一、将Jenkins部署到linux服务器下面;

二、如果非要在windows下部署:

请参考下面步骤:

1、Jenkins->系统管理->系统设置,在全局属性新建变量

键为:LANG

值为:zh_CN.UTF-8
2、你的电脑添加环境变量

键=JAVA_TOOL_OPTIONS

值=-Dfile.encoding=UTF-8
jenkins快速开始_第17张图片
3. 重启jenkins
查看jenkin 系统管理–>系统参数,查看是否ok
jenkins快速开始_第18张图片
系统属性
jenkins快速开始_第19张图片
环境变量
jenkins快速开始_第20张图片

9. jenkins通过SSH Publishers自动构建发包到远程服务器

Jenkins——应用篇——插件使用——Publish over SSH
参考URL: https://blog.csdn.net/houyefeng/article/details/51027885
Publish over SSH插件安装
参考URL: https://www.cnblogs.com/dadonggg/p/8350472.html
Jenkins Publish over ssh部署(学习笔记十四)
参考URL: https://www.jianshu.com/p/dd2eb30c4a63

如下,进入 系统配置
jenkins快速开始_第21张图片
配置 Publish over SSH,下ssh servers配置

使用账号密码,填写一下配置即可
jenkins快速开始_第22张图片
参数说明

  • Passphrase:SSH的密码
    使用用户名/密码登录时为用户名的密码,使用私钥登录时为私钥的密码。

  • Path to key:SSH私钥的文件路径
    私钥文件的路径,可以是绝对路径,也可以是相对$JENKINS_HOME的相对路径

  • Key:私钥
    私钥导出后的文本内容

    如果“Key”和“Path to key”都设置,则“Key”的优先级较高,私钥的密码是“Passphrase”中设置的内容。

  • Disable exec:禁止在目标机上执行命令
    勾选后将会忽略在Job配置中“Exec command”选项中设置的命令。Jenkins的说明文档中的“The Disable exec in the advanced settings for individual configurations will be ignored.”没有完全理解,从实际效果来看,只要“Disable exec”被勾选后,不管SSH Server中是否勾选“Disable exec”,Job中设置的命令都将补忽略。

在Jenkins中配置Job,
在Job设置中“增加构建步骤”里选择“Send files or execute commands over SSH”
jenkins快速开始_第23张图片
配置如下图
jenkins快速开始_第24张图片

参数说明

  • Name
    “系统管理>系统设置”设置的SSH Sverver的名字列表。之前配过了,这里直接选择!
  • Source files
    复制到运程机上的文件,运行表达式,如上图中的“**/*.war”。
    *Remove prefix
    文件复制时要过滤的目录,如上图中的target目录。
    Remote directory
    文件得到到远程机上的目录,此目录是相对于“SSH Server”中的“Remote directory”的,如果不存在将会自动创建。

Exec command
在这里可以填写在运程机器上执行的脚本,如:应用部署脚本。

10. 使用maven编译,又使用lib下的Jar包

使用maven编译,又使用lib下的Jar包
参考URL: https://www.jianshu.com/p/994ce061c9d4

在项目开发中,项目用maven管理,是一个maven项目。
一般情况下jar包都可以使用pom.xml来配置管理,但也有一些时候,我们项目中使用了一个内部jar文件,但是这个文件我们又没有开放到maven库中。

使用compilerArgs标签

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    1.8
                    1.8
                    UTF-8
                    
                        
                        -Xlint:unchecked
                        -Xlint:deprecation
                        -bootclasspath
                        ${env.JAVA_HOME}/jre/lib/rt.jar
                        -extdirs
                        ${project.basedir}/src/main/lib
                    
                
            
        
    

maven的目录约定:
pom.xml所在的目录应为项目的根目录,假设该目录为${proj-dir},那么Maven有以下假设:

${proj-dir}/src/main/java —— 存放项目的.java文件。

${proj-dir}/src/main/resources —— 存放项目资源文件,如spring, hibernate配置文件。

${proj-dir}/src/test/jave —— 存放所有测试.java文件,如JUnit测试类。

${proj-dir}/src/test/resources —— 测试资源文件。

${proj-dir}/target —— 项目输出位置。

11. Jenkins构建Maven多模块项目时,单独编译子模块,并且不触发构建其它模块

Jenkins构建Maven多模块项目时,单独编译子模块,并且不触发构建其它模块
参考URL: https://www.cnblogs.com/EasonJim/p/8350578.html
Maven单独构建多模块项目中的单个模块
参考URL: https://www.cnblogs.com/EasonJim/p/8350560.html

说明:

1、可能存在的场景,多模块项目没有互相引用,那么此时可以单独构建单个项目,指定到子模块的pom.xml文件即可完成编译。

2、如果多模块项目各自都引用了,那么单独编译子模块的pom.xml文件会直接报错,解决方法就是编译父项目pom.xml。

3、如果编译父项目,那么可能会造成编译时间很慢,其中有些项目也不需要编译,解决方法如下:

解决方法:

Maven选项:

-pl, --projects
        Build specified reactor projects instead of all projects
-am, --also-make
        If project list is specified, also build projects required by the list
-amd, --also-make-dependents
        If project list is specified, also build projects that depend on projects on the list

首先切换到工程的根目录

单独构建模块jsoft-web,同时会构建jsoft-web模块依赖的其他模块

mvn install -pl jsoft-web -am

单独构建模块jsoft-common,同时构建依赖模块jsoft-common的其他模块

mvn install -pl jsoft-common -am -amd

12. Jenkins利用GitLab Webhook触发代码提交自动构建任务

Jenkins利用GitLab Webhook触发代码提交自动构建任务
参考URL: https://blog.csdn.net/z8414/article/details/78363260
Gitlab自动触发Jenkins构建打包
参考URL: https://mp.csdn.net/mdeditor/92831511

三、Window10下开启/停止jenkins服务

  1. 按下WIN+R,然后在运行中输入 services.msc 回车;
  2. 打开本地服务后,在服务中找到Jenkins 双击打开;

第一次打开查看的时候是禁用模式

选择该条服务,右键-属性,点击服务状态下的启动(启动类型选择自启动),点击确认按钮

当jenkins服务显示正在运行中时,才表示jenkins服务启动成功

第三部分 其他参考

1. 什么是 CI/CD?

什么是 CI/CD?
参考URL: https://www.redhat.com/zh/topics/devops/what-is-ci-cd
[推荐]DevOps 不等于 CI,也不等于 CI /CD
参考URL: http://www.sohu.com/a/219547745_151779
详解CI、CD相关概念
参考URL: https://blog.csdn.net/sinat_35930259/article/details/79429743
持续集成(CI)、持续部署(CD)、持续交付(CD)需要经历那些过程
参考URL: https://blog.csdn.net/cdbdqn001/article/details/85787281

常见开发工作流程分为以下几个阶段:

编码 --> 构建 --> 集成 --> 测试 --> 交付 --> 部署

CI 持续集成(CONTINUOUS INTEGRATION)

持续集成指的是,频繁地(一天多次)将代码集成到主干。将软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。

它的好处主要有两个:

  1. 快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易;

  2. 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。

CI/CD 中的“CI”始终指持续集成,它属于开发人员的自动化流程。成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。

持续交付

持续交付(Continuous delivery)指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。

持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。持续交付优先于整个产品生命周期的软件部署,建立在高水平自动化持续集成之上。

持续部署(CD)

持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。

持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。

持续部署的前提是能自动化完成测试、构建、部署等步骤。

持续部署(另一种“CD”)指的是自动将开发人员的更改从存储库发布到生产环境,以供客户使用。

归根结底,纠缠于这些语义其实并无必要,您只需记得 CI/CD 实际上就是一个流程(通常形象地表述为管道),用于在更大程度上实现应用开发的持续自动化和持续监控。

你可能感兴趣的:(jenkins快速开始)