jenkins
是一个持续集成、自动测试、持续部署的超级引擎,支持自定义工具集、多种交付通道
安装部署jenkins
jenkins与java对应版本要求
![](https://img-blog.csdnimg.cn/direct/15302e59274e42ebae8ae7e4421ea0a0.png)
此次所用系统版本:
bash
root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
安装java
java下载地址:https://www.oracle.com/java/technologies/downloads/
bash
#卸载自带java
yum -y remove java
rm -rf /usr/bin/java
#安装java
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.rpm
rpm -ivh jdk-21_linux-x64_bin.rpm
java -version
安装git:https://mp.csdn.net/mp_blog/creation/editor/138207360
jenkins三种部署方法
jenkins官方下载地址:https://www.jenkins.io/download/
jenkins的rpm包镜像源地址:https://mirrors.jenkins-ci.org/
1.jenkins的rpm包部署
bash
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
yum install fontconfig
yum -y install jenkins
vim /usr/lib/systemd/system/jenkins.service #修改Jenkins配置文件运行用户为root
User=root
Group=root
systemctl daemon-reload
systemctl enable jenkins
service jenkins start
默认端口:8080
相关目录:
/var/lib/jenkins #主目录
/var/lib/jenkins//workspace/job_NAME #构建工程目录
/usr/lib/systemd/system/jenkins.service #配置文件
User=jenkins #设置启动用户
Group=jenkins #设置启动用户组
#设置启动java容器配置
JAVA_OPTS="-XX:MaxPermSize=512m -Djava.awt.headless=true"
JENKINS_PORT="8000" #设置端口
/usr/bin/jenkins #启动文件
/var/cache/Jenkins #程序文件
/usr/share/java/jenkins.war #jenkins的war包
2. jenkins的war包部署
所有版本war包下载地址:https://updates.jenkins-ci.org/download/war/
(此时数据存放在当前目录的.jenkins隐藏文件)
bash
wget https://get.jenkins.io/war-stable/2.452.2/jenkins.war
yum install fontconfig
nohup java -jar jenkins.war --httpPort=10000 > jenkins.log 2>&1 &
启动参数:
--httpPort=8080 #设置监听端口,默认为8080
-DJENKINS_HOME=/path/to/your/jenkins_home #默认情况下,Jenkins会将其数据存储在用户主目录下的.jenkins
文件夹中。但你可以通过-DJENKINS_HOME
参数指定一个不同的目录。
-Xms512m -Xmx1024m #设置JVM的堆内存大小
--prefix=jenkins #指定 Jenkins 的 URL 路径前缀如本示例的url:http://yourserver.com/jenkins/
3.tomcat部署
jenkins的基础用法
jenkins系统全局设置
![](https://img-blog.csdnimg.cn/direct/23a77e32f5b5450e970cdc9e5ad6a94c.png)
设置中文
-
安装插件:Localization: Chinese (Simplified) 、 Locale
-
jenkins界面设置
![](https://img-blog.csdnimg.cn/direct/566b2e84f2ba4e42813ac8ca9a79752d.png)
用户账号密码设置
![](https://img-blog.csdnimg.cn/direct/0764812b977f4035afa497e5adb65940.png)
创建与其他服务器或代码仓库等相关的认证信息
1.安装Git plugin插件
2.创建保存相关信息,例如代码仓库的密钥:jenkins上配置私钥,gitlab配置公钥
![](https://img-blog.csdnimg.cn/direct/84806580c40b4720be4ef00d1611f863.png)
插件管理
插件下载地址: https://updates.jenkins-ci.org/download/plugins/
两种安装方法:
- 手动导入插件,可从官网下载插件包解压移动或覆盖到插件目录
mv plugins /var/lib/jenkins/
chown -R jenkins.jenkins plugins/
service jenkins restart
- web图形界面的插件管理界面上联网安装或上传插件
常用插件:
git parameter #可以选择tag发布
subversion plugin #SVN项目 项目时使用
ssh plugin #远程管理
LDAP plugin #接入统一身份认证系统接口
jenkins 升级版本
-
rpm -ql jenkins 找到jenkins的war包
-
备份后替换为挂网下载的war包
3.重启jenkins
备份jenkins
因为jenkins的所有数据都保存在目录/var/lib/jenkins/下,所以可以直接备份目录
bash
tar -zxvf jenknis.tar.gz /var/lib/jenkins/
maven
作用:
作为Apache的开源项目,是一个项目管理和综合工具。Maven提供给开发人员构建一个完整的生命周期框架。
开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生命周期。
主要服务于JAVA平台的构建、依赖管理、项目管理。
POM
POM(Project Object Model):项目对象模型,通过xml格式保存的pom.xml文件。
作用: 类似ant的build.xml文件功能更强大,该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权、项目的url、项目的依赖关系等等
安装:
下载地址:https://archive.apache.org/dist/maven/maven-3/
bash
wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
tar -xvf apache-maven-3.5.4-bin.tar.gz
echo 'export PATH=$PATH:/root/apache-maven-3.5.4/bin' >>/etc/profile
source /etc/profile
mvn -v
配置文件:
/root/apache-maven-3.5.4/conf/settings.xml
MAVEN命令:
- 创建Maven的普通java项目:
mvn archetype:create
-DgroupId=packageName
-DartifactId=projectName
- 创建Maven的Web项目:
mvn archetype:create
-DgroupId=packageName
-DartifactId=webappName
-DarchetypeArtifactId=maven-archetype-webapp
- 清除后再编译
mvn clean install
jenkins的计划任务
在构建任务重配置定时构建时间
![](https://img-blog.csdnimg.cn/direct/4e84767f63cd4b88a6eddb3765f75b3c.png)
按角色授权
-
安装 Role-based Authorization Strategy 插件
-
设置授权策略为:Role-Based Strategy
![](https://img-blog.csdnimg.cn/direct/1d432c7d52d348c6b6e125e1b19fddb1.png)
3.1创建全局角色
![](https://img-blog.csdnimg.cn/direct/73df2babcc2d4995aa4ac6e7638ff3f6.png)
3.2也可以创建匹配项目权限的项目角色
注意pattern的项目名字匹配模式是xxx.*(正则表达式)
![](https://img-blog.csdnimg.cn/direct/d78ba1c0cdcc479680a540b8d8efe642.png)
4.最后管理用户和角色
![](https://img-blog.csdnimg.cn/direct/b69f1513b248477f84f1262af345ae3b.png)
jenkins主从配置
- 主从服务器都安装上jenkins配置好时间同步
2.添加从节点
![](https://img-blog.csdnimg.cn/direct/a4cb20d0188442dda6fa82b56d7c0fc4.png)
3.查看配置成功后的显示节点状态
![](https://img-blog.csdnimg.cn/direct/fa2163d18107425099dd7f960cea034d.png)
4.创建任务并绑定运行节点
![](https://img-blog.csdnimg.cn/direct/5eab8b605b784e75a0a59c753ae319a5.png)
URL调用jenkinsAPI
1.获取jenkins服务器上所有jobs列表
用法:
curl -u 用户名:密码 'http://JENKINS_URL/api/json?pretty=true'
示例:
curl -u root:123456 'http://192.168.0.11:8080/api/json?pretty=true'
2.构建一个指定的job
第一步:配置job的身份验证令牌
![](https://img-blog.csdnimg.cn/direct/3228c107e2aa46e1ab0b5f560b44d653.png)
第二步:通过curl命令调用jenkinsAPI
用法:
curl -u 用户名:密码 'JENKINS_URL/job/test/build?token=TOKEN_NAME'
示例:
curl -u root:123456 'http://192.168.0.11:8080/job/test/build?token=1111111'
jenkins视图的创建
![](https://img-blog.csdnimg.cn/direct/93bde52cd24043bc81a7f11c3f7ed6d4.png)
![](https://img-blog.csdnimg.cn/direct/c7e0bd268a3b4ca5821b785d340c08d1.png)
3.配置视图,可以根据任务进行选择,也可以使用正则表达式
![](https://img-blog.csdnimg.cn/direct/fc7c49c2f8d54a75958a22e5a13a0f2a.png)
4.最终效果
![](https://img-blog.csdnimg.cn/direct/9aaa1016329f44a3b483bae52d3d6886.png)
jenkins三种常见构建类型
Jenkins中自动构建项目的类型有很多,常用的有以下三种:
- 自由风格项目(FreeStyle Project)
- Maven项目(Maven Project)
- 流水线项目(Pipeline Project)
其实每种构建类型都可以完成一样的构建过程与结果,只是在操作方式、灵活度等方面有所区别。使用哪种构建类型可以根据自己的需求和习惯来选择。(PS:个人推荐使用流水线类型,因为灵活度高)
1、自由风格项目类型
1、创建项目
- Jenkins --> New Item
![](https://img-blog.csdnimg.cn/img_convert/5d377a11c9f28ec028cbcf9560eac431.png)
2、拉取源代码
![](https://img-blog.csdnimg.cn/img_convert/d5864bf51331156d2d5d4f783d0bd155.png)
3、构建
- Build(构建) --> Add build step(添加构建步骤) --> Executor Shell
- 执行shell命令
![](https://img-blog.csdnimg.cn/img_convert/a6c0ed38f1928b9b5f4e03227dd2ef6c.png)
- 执行两次的结果
|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 | ]# ls -l /data/jenkins/workspace/test-project-free
total 12
-rw-r--r-- 1 jenkins jenkins 39 Aug 31 03:02 free01.txt
-rw-r--r-- 1 jenkins jenkins 14 Aug 31 02:55 project01-rel.txt
-rw-r--r-- 1 jenkins jenkins 19 Aug 31 02:55 README.md
]# cat /data/jenkins/workspace/test-project-free/free01.txt
2023-08-31 03:02:00 部署中......
2023-08-31 03:02:33 部署中......
|
2、Maven项目类型
2、创建项目
- Jenkins --> New Item
![](https://img-blog.csdnimg.cn/img_convert/830790360aa09a2d64152cbb5ec4be97.png)
3、拉取源代码
![](https://img-blog.csdnimg.cn/img_convert/99e2c3421c06bea6133ad7e6db69751a.png)
4、构建
- 拉取代码和远程部署的过程和自由风格项目一样,只是"构建"部分不同。
![](https://img-blog.csdnimg.cn/img_convert/d1162b7584d1cbb925e714df677b7d87.png)
3、流水线项目类型
1、安装Pipeline插件
2、创建项目
- Jenkins --> New Item
![](https://img-blog.csdnimg.cn/img_convert/7b04b92ff1c372acdd1310f2ea062b7d.png)
3、简单的pipeline语法
![](https://img-blog.csdnimg.cn/img_convert/c6a25a432f8cdefabaeb6629a6782ef8.png)
jenkins的参数化构建
参数类型
jenkins的参数类型有多种,也可以根据插件增加类型,如下图
![](https://img-blog.csdnimg.cn/direct/72ba223ba35f4f2793ba7219d14693e9.png)
参数的引用
-
根据所配置的参数类型,每个参数都有一个Name和Value。当构建开始时,这些信息被导出为环境变量,从而允许构建配置的后续部分访问这些值。
-
注意:不同的操作环境变量引用方式不同
Shell -- $dstversion
Windows -- %dstversion%
Git源码管理-- ${dstversion}
配置参数
选项参数
1.pipeline语法配置:
parameters { choice(name: 'CHOICES', choices: ['one', 'two', 'three'], description: '') }
2.web界面配置
![](https://img-blog.csdnimg.cn/direct/3aa873928e2a425fa827c636513e9c3f.png)
最终效果
![](https://img-blog.csdnimg.cn/direct/5d058eae726145a88b375cabbe90f8b3.png)
git参数
web界面配置:
![](https://img-blog.csdnimg.cn/direct/2dfbe09ed4494aa5a7811618a98d2ab0.png)
- 最终效果
![](https://img-blog.csdnimg.cn/direct/6ee86989f36346e7a04f698679b1af00.png)
字符参数
1.pipeline语法配置:
parameters { string(name: 'DEPLOY_ENV', defaultValue: 'staging', description: '') }
2.web界面配置:
![](https://img-blog.csdnimg.cn/direct/609ca72b891046d5bac771a955b0e433.png)
最终效果
![](https://img-blog.csdnimg.cn/direct/b0613cda4e764f0ea26e8eda30ef998b.png)
文本参数
1.pipeline语法配置:
parameters { text(name: 'DEPLOY_TEXT', defaultValue: 'One\nTwo\nThree\n', description: '')
2.web界面配置:
![](https://img-blog.csdnimg.cn/direct/5ef53bda9a7c4da29c5fc6044d2de963.png)
最终效果:
![](https://img-blog.csdnimg.cn/direct/af82cd43e24c4c5b964b70e41351cad7.png)
布尔参数
1.pipeline语法配置:
parameters { booleanParam(name: 'DEBUG_BUILD', defaultValue: true, description: '') }
2.web界面配置:
![](https://img-blog.csdnimg.cn/direct/87cc298daaa34967a2dc50ed0c74a44a.png)
最终效果
![](https://img-blog.csdnimg.cn/direct/4fdecd7639c14957810a8d2eb9315571.png)
凭据参数
注意:不会直接公开凭据,而是公开凭据的ID
web界面配置:
![](https://img-blog.csdnimg.cn/direct/80fecbe28bc847a0afa243beca371fb2.png)
最终效果
![](https://img-blog.csdnimg.cn/direct/9c2a111372174208bf2c6b1777a4e8f8.png)
文件参数
注意:
文件参数不支持流水线
文件会被上传至workspace对应的job目录下,并且文件名会被修改:例如路径设置为 pak/ls
文件名就会被传到 workspace/job/pak 目录下名字为ls
如果在jenkins中继续读取该文件可以使用内置变量WORKSPACE
web界面配置:
最终效果
![](https://img-blog.csdnimg.cn/direct/bbf386644fbf4805a5286bb4780afc84.png)
密码参数
1.pipeline语法配置:
parameters { password(name: 'PASSWORD', defaultValue: 'SECRET', description: 'A secret password') }
2.web界面配置:
![](https://img-blog.csdnimg.cn/direct/4dc77807ef1a4f258ef5021df9bd0094.png)
最终效果
运行时参数
定义一个运行参数,用户可以选择一个确定的工程。网站的url地址将会被当作环境变量暴露出来,你可以在构建时使用,或者作为环境变 量,或者在配置中做变量替换。通过Jenkins可以查询到更多的信息。
web界面配置:
![](https://img-blog.csdnimg.cn/direct/84b4a01c4c6441c58077ad3e225c4e82.png)
配置脚本输出此变量
![](https://img-blog.csdnimg.cn/direct/6e761cc8fdca4dd8aae24ebe52ae5248.png)
最终效果:
![](https://img-blog.csdnimg.cn/direct/69837ff8a7144c1daebbdb126db2991a.png)
运行结果:
![](https://img-blog.csdnimg.cn/direct/37498f08f8bd43a6aaeee0a97d1ae0a4.png)