jenkins快速开始

第一部分 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
    在这里插入图片描述
    在这里插入图片描述
    经过测试: 至此,按照网上方法配置完成,这样设置后,还是没有中文显示!

再安装插件:
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选项,可快速定位
    在这里插入图片描述
    在这里插入图片描述
    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选项,可快速定位:
    在这里插入图片描述
    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

在这里插入图片描述
当我们需要部署自动发布java代码时,就需要使用创建一个maven projent功能,默认是不支持构建maven 项目的,需要安装插件。

4.1 安装ssh、maven相关插件

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

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

在这里插入图片描述
全局工具配置–配置jdk
如下图配置jdk
在这里插入图片描述
全局工具配置–配置maven
在这里插入图片描述
在全局配置里面配置东西,是全局的会影响到所有新建的Job,当然新Job可以基本都可以覆盖配置的全局配置。

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

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

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

配置 Build参数
往下找到Buid选项卡
配置项目中的构建(使用maven构建包)
在这里插入图片描述

然后点击“高级”

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要下载源码编译构建的路径,它会往这个目录里面下载源码,并编译。
在这里插入图片描述

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

  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路径

在这里插入图片描述
maven配置中填写,maven setting.xml地址
在这里插入图片描述

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

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

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

-Dmaven.test.skip=true 表示在打包时不执行测试用例
在这里插入图片描述

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
在这里插入图片描述
3. 重启jenkins
查看jenkin 系统管理–>系统参数,查看是否ok
在这里插入图片描述
系统属性
在这里插入图片描述
环境变量
在这里插入图片描述

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

如下,进入 系统配置
在这里插入图片描述
配置 Publish over SSH,下ssh servers配置

使用账号密码,填写一下配置即可
在这里插入图片描述
参数说明

  • 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”
在这里插入图片描述
配置如下图
在这里插入图片描述

参数说明

  • 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标签

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArgs>
                        <!--<arg>-verbose</arg>-->
                        <arg>-Xlint:unchecked</arg>
                        <arg>-Xlint:deprecation</arg>
                        <arg>-bootclasspath</arg>
                        <arg>${env.JAVA_HOME}/jre/lib/rt.jar</arg>
                        <arg>-extdirs</arg>
                        <arg>${project.basedir}/src/main/lib</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>

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 实际上就是一个流程(通常形象地表述为管道),用于在更大程度上实现应用开发的持续自动化和持续监控。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值