当前位置:网站首页>CI工具Jenkins之二:搭建一个简单的CI项目
CI工具Jenkins之二:搭建一个简单的CI项目
2022-06-29 06:37:00 【Tina-Deng】
简介
持续部署的关注点在于项目功能部署至服务器后可以运行,为下一步测试环节 或最终用户正式使用做好准备。
持续集成(Continuous integration)的关注点在于尽早发现项目整体运行问题,尽早解决。
持续交付的关注点在于研发团队的最新代码能够尽快让最终用户体验到。
持续集成的好处:
1:降低风险
2:减少重复过程
3:任何时间、任何地点生成可部署的软件
4:增强项目的可见性
5:建立团队对开发产品的信心
项目部署方式
- 手动部署
- 自动部署
持续集成搭建
系统结构总述:
版本控制子系统
Git服务器
项目对应版本库
版本库中钩子程序
持续集成子系统
JDK
Tomcat
Maven
Jenkins
主体程序
SVN插件
Maven插件
Deploy to Web Container 插件
应用发布子系统
JDK
Tomcat
1、创建虚拟机安装 Linux 系统
2、搭建应用发布子系统
1)安装JDK
详细过程参考文章:Java 官网下载+安装(Linux)
2)安装Tomcat
详细过程参考:Tomcat安装及配置教程(超详细的图文教程)
记录 Tomcat 服务器的账号密码
配置文件位置:/opt/tomcat/conf/tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat_user" password="123456" roles="manager-gui,manager-script,manager-jmx,manager-status" />
3、搭建持续集成子系统
1)安装Maven
详细过程参考:maven安装及配置(详细版)
2)安装Jenkins
详细过程参考文章:Jenkins安装配置
3)配置Jenkins插件:JDK
全局工具配置:JDK

4)配置Jenkins插件:Maven
全局工具配置:Maven Configuration
配置settings.xml
全局工具配置:Maven

5)安装Jenkins插件:Deploy to Web Container
1、安装插件:Deploy to Web Container
4、搭建版本控制子系统
1)安装Git
详细过程参考文章:代码版本管理工具之Git的使用详解
记录一下版本库的访问账号密码
2)配置Jenkins插件:Git
全局工具配置:Git

3)创建工程
1、点击“新建任务”
2、指定工程名称和工程类型
4)配置项目对应版本库



这里一定要再选一下! 如下:
配好的效果,如下:
※注意:此时 Jenkins 的工作区中还没有代码,需要执行一次构建操作之后,Jenkins 才会下载代码。
构建
1、构建配置
1)配置 - 增加构建步骤


2)配置 - 构建后操作


3)配置 - Containers



2、手动构建

Jenkins 使用天气状况来表示构建成功率。
3、自动构建:提交代码修改触发自动构建
1)构建触发器配置及原理

远程触发的基本原理是 Git 服务器给 Jenkins 项目特定的 URL 地址发送请求, 但必须以请求参数的形式携带一个特定值,这个特定值就是这里的“身份验证令牌”。
比如我们这个项目的地址触发地址是:http://192.168.70.131:8080/jenkins/job/ProOne/build
身份验证令牌是:ATGUIGU_TOKEN
那么最终的访问地址就是:
http://192.168.70.131:8080/jenkins/job/ProOne/build?token=ATGUIGU_TOK EN
触发访问地址中 Jenkins 访问地址是根据实际情况改变的,项目名称根据实际情况改变,其他都不变。
2)获取crumb值


携带 API Token 访问下面地址:
http://admin:[email protected]:8080/jenkins/crumbIssuer/api/xml
则触发 Jenkins 远程构建时需要携带的请求消息头就是: Jenkins-Crumb:5dbccaf47a86bf5b675456f58855fe16
3)Linux的curl命令
Linux 的 curl 命令用来发送 HTTP 请求。 -X 参数:指定请求方式
-v 参数:显示响应结果
-u 参数:携带用户名/密码
-H 参数:携带请求消息头信息

4)版本库子系统 - 配置Git版本库中的钩子程序
钩子程序由post-commit.tmpl复制得到
这里注意不要使用任何扩展名。如果按照我们习惯的使用.sh扩展名则钩 子程序无法正常工作。
记得使用chmod命令设置为可执行权限
1、把原有内容注释,加入curl命令
4、测试自动构建
在 Eclipse/IDEA 中提交代码,在页面上查看显示内容变化
问题:下载代码不是最新版的
如果发生 Jenkins 服务器从 SVN 服务器下载代码不是最新版的情况,那么就在 Git
服务器的 URL 地址后面加上@HEAD 强制要求下载最新版。
问题:代码在GitHub上,必须关闭“放置跨站点请求伪造”

边栏推荐
- 分享 10 个 JS Promise 相关的面试题
- Differences between JSON objects and JSON strings
- Li Kou daily question - day 30 -594 Longest harmonic subsequence
- What is 'EC2-Other' filter in 'Cost Explorer' dashboard mean? [closed]
- Service grid ASM year end summary: how do end users use the service grid?
- Share 10 interview questions related to JS promise
- Fault: administrator account cannot be selected for login
- Subtotal of C language -- basic data types and their representations
- 2022.02.15 - SX10-31. House raiding III
- RPC and RMI
猜你喜欢

Differences between JSON objects and JSON strings

How to fix Error: Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorli

As a qualified network worker, you must master DHCP snooping knowledge!

力扣今日题-324. 摆动排序 II

Chapter V online logic analyzer signaltap

QT program packaging and publishing windeployqt tool

QT qlineedit details

Move disassembly of exclusive delivery of script (the first time)

Teach you how to develop your own NPM package (publish to the NPM official website)

关于 localStorage 的一些高阶用法
随机推荐
Open source 23 things shardingsphere and database mesh have to say
How to fix Error: Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorli
多模态 —— Learnable pooling with Context Gating for video classification
2022.02.15 - SX10-31. House raiding III
Two methods for preorder traversal of binary tree
How to do the performance pressure test of "Health Code"
JDBC | Chapter 6: simple use of database connection pool
[C language] flexible array
Illegal forward reference and enums
About DDNS
用机器人教育创造新一代生产和服务工具
【OSPF引入直连路由时巧借静态黑洞路由做汇总】
Are there too many programmers in China at present?
C language pointer to function
Analytic hierarchy process
As a qualified network worker, you must master DHCP snooping knowledge!
关于 localStorage 的一些高阶用法
目标检测——使用yolov6进行视频推理
WDCP accesses all paths that do not exist and jumps to the home page without returning 404
VerilogA - dynamic comparator