目录
友情提醒:
先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。有用记得关注
第一章、快速了解Jenkins
1.1)Jenkins中一些概念介绍
① Jenkins是什么?
Jenkins是一个强大的持续集成(CI)工具,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。它通常与版本管理工具(如Git、Maven、Ant、Gradle)结合使用,也可以与构建工具结合使用。可在Tomcat等流行的servlet容器中运行,也可独立运行。
**②组件概念:**在Java中,组件主要通过类、接口和包来实现。这些组件是用于构建复杂的应用程序和软件系统的基本模块,能够提高代码的可重用性,降低开发的复杂度。
**③集成的概念:**Jenkins的集成是指将不同的软件组件、模块或服务通过Jenkins这个持续集成工具集中在一起,产生联系,使不同的软件组件或模块能够相互协作,从而构成一个完整的软件系统。
**④CI:持续集成的概念,**实现自动化构建、自动化测试、发布部署等功能的过程。核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。持续集成并不能消除Bug,而是让它们非常容易发现和改正。
⑤CD:(Continuous Delivery持续交付/Continuous Deployment持续部署)
持续交付指的是频繁地将软件的新版本交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续部署是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。持续部署的目标是,代码在任何时刻都是可部署的,可以进入生产阶段。持续部署的前提是能自动化完成测试、构建、部署等步骤。
1.2)Jenkins和maven用途上的区别
Maven作用是什么
① Maven 是工具,专注服务于 Java 平台的项目自动化构建和依赖管理。
②可以整合多个项目之间的引用关系,我们可以根据业务和分层需要任意拆分一个项目。
③提供规范的管理各个常用jar包及其各个版本,并且可以自动下载和引入项目中。
④可以根据指定版本自动解决jar包版本兼容问题。
⑤可以把jar包所依赖的其它jar包自动下载并引入项目。
Jenkins作用是什么
①自动化构建:Jenkins可以根据代码仓库的变化自动触发构建过程,包括编译、打包和生成构建报告等。
②自动化测试:Jenkins可以自动运行各种测试工具和测试框架,如JUnit、Selenium等
③自动化部署:Jenkins可以自动化部署软件到各个环境,如开发环境、测试环境和生产环境等。
④持续集成/持续部署:Jenkins可以将不同的开发分支自动合并,并进行编译、测试和部署等流程,以确保代码的集成和交付的质量和稳定性。
1.3)为什么使用Jenkins
曾经的打包部署:
提交代码,拉取代码并打包,上传到服务器,确认程序是否在运行,关闭运行的程序启动新的jar包,查看是否启动新程序成功,确认成功测试人员测试。
使用Jenkins后:
将代码提交到git后就自动打包部署
1.4)学习过程中的疑问
这里是我学习过程中产生的几个疑问:
①Jenkins如何安装
②Jenkins如何使用
③Jenkins插件安装是啥
第二章、安装Jenkins
2.1)安装之前的准备
①windowsJDK安装教程: jdk1.8安装教程及环境变量配置(含jdk8,11,13安装文件)
②git下载和安装使用教程: 代码托管/版本控制工具:Git的安装和使用
③maven下载和安装教程: Idea整合Maven安装及配置教程(图文详解)
④windowsTomcat服务器安装: Tomcat服务器下载安装及配置教程
⑤如果使用Linux系统看这个: Linux操作系统学习,Linux基础命令大全
⑥如果使用docker安装Jenkins看这篇: Docker部署Jenkins
2.2)Windows中Jenkins下载安装教程
①官网下载安装包:
官网链接:点击跳转:https://www.jenkins.io/
跳转到这个页面,点这里下载 .war安装包。Linux和Windows都是这个安装包
②把下载好的jenkins.war 放文件夹下。在这个目录使用Java -jar jenkins.war
命令启动
③安装成功显示如下界面,
④浏览器输入:localhost:8080/ 登录Jenkins,C:\Users\86130.jenkins\secrets\initialAdminPassword文件里找到密码。密码复制进来,点击继续
2.3)Jenkins安装插件,修改密码和汉化
①选择默认安装插件
②创建用户,点击使用admin账号继续
③保存后点击开始使用Jenkins
④修改密码:admin-->设置-->下拉找到Password-->修改后点击保存
⑤汉化:找到Mange Jenkins选项进入后选择 Plugins,在plugins installed选项查找到这两个插件 Locale plugin 和 Localization: Chinese查看是否安装
回到Mange Jenkins选项system,下拉找到Locale,输入zh_CN
,点击保存
汉化失败就用英文吧,我找了半天也没找到解决办法。
第三章、Jenkins配置
吐槽一下这个汉化,一塌糊涂。Jenkins这不同版本的页面也是乱七八糟,产品脑子秀逗了。
3.1)配置
①在Security里配置一下允许注册
②工具设置
maven配置
JDK设置
git设置
maven设置
3.2)创建Jenkins任务关联Git项目
①在IDEA中创建SpringBoot项目并且传到github
②新增任务
输入项目名称,选择第一项,确定
②设置github项目地址
②登录git,复制项目http地址
③设置源码管理
④输入git账号密码
选择刚刚的配置,保存
解决报错:Failed to connect to repository : Error performing git command: F:\Git\Git ls-remote -h https://github.com/baomingshu/money.git HEAD:
这是Tools那边git的安装路径写错了,在Tools那边修改一下安装路径为
java
F:\Git\Git\bin\git.exe
解决报错:SSL certificate problem: unable to get local issuer certificate
这是因为服务器上的SSL证书未经过第三方机构认证,git就会报错。原因是因为未知的没有签署过的证书意味着可能存在很大的风险。解决办法就是通过下面的命令将git中的sslverify关掉:在git bash里输入命令
java
git config --global http.sslverify false
3.3)构建远程触发器
①什么是触发器:
Jenkins触发器是一种机制,用于自动或手动启动Jenkins项目的构建过程。触发器可以根据不同的条件和事件来触发构建,例如源代码的变更、定时调度、其他项目的构建完成等。
**Jenkins内置了多种触发器:
触发远程构建:**通过访问一个特定的URL并带上身份验证令牌来触发构建。这种方式常用于在其他系统中集成Jenkins,并通过链接远程触发项目的构建。
**定时构建:**按照设定的时间周期进行构建,例如每天、每周或每月的特定时间进行构建。这种方式适用于需要定期执行构建任务的项目。
**Webhooks构建:**一些SCM(如GitHub和Bitbucket)允许Jenkins作为Webhook的接收者。当源代码库发生变化时,SCM会自动向Jenkins发送一个请求,触发相应的构建。
**Post-commit hook构建:**当源代码库发生提交时,可以设置一个钩子自动触发Jenkins构建。例如,在Git中,可以在.git/hooks/post-commit中设置一个脚本,当提交发生时,该脚本将自动运行并触发Jenkins构建。
②构建远程触发:
下面这个就是项目的回调地址,可以在浏览器访问这个URL地址触发构建项目,即拉取代码打包部署操作。但是实际上我们不会去访问而是由git来执行回调这个地址
java
http://localhost:8080/job/jenkinsDemo/build?token=token_demo
构建环境无需配置,需要配置下面的build steps(构建):
选择最上层maven目标后,设置maven版本和需要执行的命令:
3.4)构建后操作
构建后操作的意思是,jar打包好后,要将jar发送到哪里去,发送后去和启动等
设置构建后操作,发现没有Post Build task插件
去插件管理安装Post Build task插件
选择Post Build task插件,在红框里放需要执行的脚本内容(这个内容自己改,不会改就得百度去学一下)
脚本的内容大致为:把xxx.jar包从仓库复制到某个地方,获取正在运行的xxx.jar的进程ID,关闭进程后运行java -jar xxx.jar
java
#!/bin/bash
cp /root/.m2/repository/com/example/jkdemo/0.0.1-SNAPSHOT/jkdemo-0.0.1-SNAPSHOT.jar /opt/cbeann/jkdemo-0.0.1-SNAPSHOT.jar
your_name=$(ps -ef | grep jkdemo-0.0.1-SNAPSHOT.jar | grep -v grep)
#echo ${your_name}
array=(${your_name// / })
process_id=${array[1]} ##获得进程ID
kill -9 ${process_id}
java -jar /opt/cbeann/jkdemo-0.0.1-SNAPSHOT.jar &
3.5)尝试手动构建
点击JenkinsDemo
点击马上构建
点击红框
跳转后点击控制台查看构建进度
3.6)GitHub服务器配置
登录GitHub,配置github的webhooks:关联jenkins触发器
payload URL处填入回调地址
到这里凉了。后面一段我不会花生壳,不会外网映射,后面的都是搬运的了
搬运地址:Jenkins详细教程
特别注意:为了保证回调地址网可以使用,
我已经将地址:http://localhost:8080/job/jenkinsDemo/build?token=token_demo,
通过花生壳进行外网映射为:http://zhishidi.imwork.net/job/jenkinsDemo/build?token=token_demo
所以,下面配置的是外网映射地址。