06--jenkins构建CI_CD

前言:上一篇文章整理了git的部署和使用,这章主要复习持续集成软件Jenkins,这个技术现在在云计算方面也是有应用的,同时也是越高级越智能的软件代表。

1、概念简介

1)jenkins是什么 
Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。
2)为什么使用jenkins 
Jenkins是一种使用Java编程语言编写的开源持续集成软件工具,用于实时测试和报告较大代码库中的孤立更改。 Jenkins软件使开发人员能够快速找到并解决代码库中的缺陷,并自动进行构建测试。
3)CI/CD是什么 
CI(Continuous integration,中文意思是持续集成)是一种软件开发时间。持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。
CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境。
4)jenkins的优势是什么 
Jenkins的优势包括:
在开发环境的早期阶段, 错误跟踪很容易。
提供大量的插件支持。
对代码的迭代改进。
构建失败会在集成阶段进行缓存。
对于每个代码提交更改, 都会生成一个自动生成报告通知。
为了将构建报告的成功或失败通知开发人员, 它与LDAP邮件服务器集成在一起。
实现持续集成的敏捷开发和测试驱动的开发。
通过简单的步骤, 即可自动完成maven发布项目。
5)实现持续集成/持续发布的产品的流程概述?
开发(git) -->git主库-->jenkins(git+jdk+tomcat+maven打包+测试)-->ssh-->发布到tomcat服务器 

 注:本文非特殊说明情况下操作均于192.168.189.150(Jenkins)上操作

2、Jenkins基础配置

2.1、基础环境

角色IP
Git,模拟公司内部版本控制系统github代替
部署Jenkins192.168.189.150
模拟对外的业务服务器192.168.189.151

可以配置一个centos7的源,感觉清华源比阿里源稳定一些

[root@localhost yum.repos.d]# ls
Centos_base.repo  local.repo.bak[root@localhost yum.repos.d]# cat Centos_base.repo 
[tsinghua-centos7]
name=CentOS-$releasever - Tsinghua
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/os/$basearch/RPM-GPG-KEY-CentOS-7
enabled=1[root@localhost yum.repos.d]# rpm --import https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/os/x86_64/RPM-GPG-KEY-CentOS-7

所需软件下载地址

jdk:Java 存档下载 — Java SE 8 | Oracle 中国

maven:Maven – Download Apache Maven

git:Index of /pub/software/scm/git/

tomcat:Apache Tomcat® - Welcome!

Jenkins:jenkins.war

2.2、安装Git

[root@localhost yum.repos.d]# yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker fontconfig #源码编译安装git
[root@localhost ~]# ls
anaconda-ks.cfg  apache-maven-3.8.8-bin.tar.gz  git-2.9.5.tar.gz  jdk-11.0.16_linux-x64_bin.tar.gz
[root@localhost ~]# tar xf git-2.9.5.tar.gz 
[root@localhost ~]# ls
anaconda-ks.cfg                git-2.9.5         jdk-11.0.16_linux-x64_bin.tar.gz
apache-maven-3.8.8-bin.tar.gz  git-2.9.5.tar.gz
[root@localhost ~]# cd git-2.9.5[root@localhost git-2.9.5]# make prefix=/usr/local/git all
#all是开启git所有功能,类似安装前勾选
[root@localhost git-2.9.5]# make prefix=/usr/local/git install
#安装[root@localhost git-2.9.5]# vim /etc/profile.d/jenkins_tools.sh
[root@localhost git-2.9.5]# cat /etc/profile.d/jenkins_tools.sh 
PATH=$PATH:$HOME/bin:/usr/local/git/bin#写这里是为了一会cat方便看,平时直接写到profile即可[root@localhost git-2.9.5]# source /etc/profile.d/jenkins_tools.sh 
[root@localhost git-2.9.5]# git --version
git version 1.8.3.1#注意此处git版本与下载版本并不相同,是因为一部分镜像即使最小化安装也会预装git[root@localhost git-2.9.5]# yum list | grep git.x86
#找到1.8.3的全称
[root@localhost git-2.9.5]# yum remove git.x86_64
[root@localhost git-2.9.5]# source /etc/profile.d/jenkins_tools.sh 
[root@localhost git-2.9.5]# git --version
git version 2.9.5
#版本恢复正常

注:

/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。

 /etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

2.3、安装jdk,maven

[root@localhost ~]# tar xf jdk-11.0.16_linux-x64_bin.tar.gz 
[root@localhost ~]# tar xf apache-tomcat-9.0.79.tar.gz 
[root@localhost ~]# ls
anaconda-ks.cfg                apache-tomcat-9.0.79.tar.gz  jdk-11.0.16
apache-maven-3.8.8-bin.tar.gz  git-2.9.5                    jdk-11.0.16_linux-x64_bin.tar.gz
apache-tomcat-9.0.79           git-2.9.5.tar.gz[root@localhost ~]# mv jdk-11.0.16 /usr/local/java
[root@localhost ~]# mv apache-tomcat-9.0.79 /usr/local/tomcat[root@localhost ~]# vim /etc/profile.d/java.sh
[root@localhost ~]# cat /etc/profile.d/java.sh
TOMCAT_HOME=/usr/local/tomcat
JAVA_HOME=/usr/local/java
PATH=$TOMCAT_HOME/bin:$JAVA_HOME/bin:$PATH
export    TOMCAT_HOME   JAVA_HOME   PATH
[root@localhost ~]# source /etc/profile.d/java.sh[root@localhost ~]# java -version
java version "11.0.16" 2022-07-19 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.16+11-LTS-199)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.16+11-LTS-199, mixed mode)[root@localhost ~]# ls
anaconda-ks.cfg  apache-maven-3.8.8-bin.tar.gz  jdk-11.0.16_linux-x64_bin.tar.gz
[root@localhost ~]# tar -zxvf apache-maven-3.8.8-bin.tar.gz -C /usr/local/
[root@localhost ~]# mv /usr/local/apache-maven-3.8.8/ /usr/local/maven[root@localhost ~]# vim /etc/profile.d/jenkins_tools.sh
[root@localhost ~]# cat /etc/profile.d/jenkins_tools.sh
PATH=$PATH:$HOME/bin:/usr/local/git/binexport M2_HOME=/usr/local/maven
export M2=$M2_HOME/bin
PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin
export MAVEN_HOME=/usr/local/maven
export PATH=${MAVEN_HOME}/bin:$PATH[root@localhost ~]# mvn --version
Apache Maven 3.8.8 (4c87b05d9aedce574290d1acc98575ed5eb6cd39)
Maven home: /usr/local/maven
Java version: 11.0.16, vendor: Oracle Corporation, runtime: /usr/local/java
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"

2.4、上传Jenkins

[root@localhost ~]#  ls
anaconda-ks.cfg                git-2.9.5                         jenkins.war
apache-maven-3.8.8-bin.tar.gz  git-2.9.5.tar.gz
apache-tomcat-9.0.79.tar.gz    jdk-11.0.16_linux-x64_bin.tar.gz
[root@localhost ~]# rm -rf /usr/local/tomcat/webapps/*
[root@localhost ~]# cp jenkins.war /usr/local/tomcat/webapps/

2.5、启动tomcat

[root@localhost ~]# /usr/local/tomcat/bin/startup.sh 
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/local/java
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.

使用浏览器访问如下

按照提示输入密钥,点击继续

3、Jenkins前台配置

 选择“安装推荐的插件”等待插件安装

注:这个位置可能会出现部分模块安装失败(红色),重试也会失败,这是因为和插件中心网络连接的问题,这里可以修改下插件中心,改为国内地址,插件安装位置/root/.jenkins/plugins/,安装失败可以通过外部下载后上传到此文件夹,实现插件安装,建议成功安装一次后将该文件夹下文件打包保存,以后部署直接使用。部分模块安装失败不影响进程推进,但会影响后期测试,此时排查难度已经接近无限大了。

vim ~/.jenkins/hudson.model.UpdateCenter.xml
#将url项替换如下
http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.jsonvim ~/.jenkins/updates/default.json
#此处替换命令如下
:% s/www.google.com/www.baidu.com/g
:% s/updates.jenkins.io\/download/mirrors.tuna.tsinghua.edu.cn\/jenkins/g

安装完成

创建账号继续

 点击保存并完成,完成安装

4、Jenkins系统配置

4.1、管理选项

 4.2、提示信息​​​​​​

4.3、全局变量设置

下拉找到系统管理

勾选环境变量然后新增

 

保存后自动回到主页

4.4、全局工具配置

4.4.1、maven配置

4.4.2、添加jdk

4.4.3、添加git

 4.4.4、添加maven

4.4.5、ssh配置

配置150与151ssh免密

[root@localhost ~]# ssh-keygen[root@localhost ~]# ssh-copy-id -i 192.168.189.151[root@localhost ~]# ssh root@192.168.189.151
Last login: Sat Jun  8 22:08:14 2024 from 192.168.189.1
[root@localhost ~]# ip a | grep 192.168.189.15inet 192.168.189.151/24 brd 192.168.189.255 scope global noprefixroute ens33
[root@localhost ~]# exit
登出
Connection to 192.168.189.151 closed.
[root@localhost ~]# 

 取出刚刚生成的密钥,按下图配置,测试成功后保存弹出

5、Jenkins插件管理

5.1、插件管理中心

通过插件管理中心可以直观地看到这里有可更新、可选未安装插件、已安装插件;可以通过过滤快速查找

 安装插件

5.2、优化maven

修改前

修改后

修改内容如下(修改为阿里源)

    <mirror><id>central</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>https://maven.aliyun.com/repository/public</url></mirror>

6、自动化构建

6.1、创建一个maven工程

6.2、构建maven项目

6.3、源码管理

这里使用公共的互联网仓库gitee代替公司内部后端开发仓库(如果是私有仓库,这里需要建立credentials身份认证)

 6.4、设置触发器

6.5、设置打包程序(maven)

手动添加手动添加Goals and options:clean package -Dmaven.test.skip=true

6.6、构建后操作

在构建后设置中 选择:(send build artifacts over ssh)通过SSH发送构建工作

配置完保存自动弹出 

source file的路径解释:构建之后,在jenkins服务器上是可以自动看到war包的。(该路径不需要创建)

# ls /root/.jenkins/jobs/testjob1/builds/target/*.war

这里需要到被推送服务器上提前部署路径,下方代码框内操作在151上完成

[root@localhost ~]# mkdir -p /jenkins/war
[root@localhost ~]# mkdir -p /jenkins/sh
[root@localhost ~]# vim /jenkins/sh/deploy.sh
[root@localhost ~]# cat /jenkins/sh/deploy.sh
echo "FINISH build job" > /tmp/finish.sh
[root@localhost ~]# ls /tmp/
hsperfdata_root
ks-script-PSPgvR
systemd-private-5b02e3efb14a4000adb47697e94b3a70-chronyd.service-S01q6J
vmware-root_8724-2832207218
vmware-root_8730-2865761147
vmware-root_8750-2824015062
yum.log
[root@localhost ~]# chmod +x /jenkins/sh/deploy.sh 

6.7、执行构建

点击进度条的时间戳,进入 任务记录页面

 

此处如果失败可回头检查控制台信息和前面所有设置

7、查看构建结果

此处检查在151(tomcat服务器)上执行

[root@localhost ~]# ls /jenkins/war/
easy-springmvc-maven.war#gitee上代码已经全部拉下[root@localhost ~]# cat /tmp/finish.sh 
FINISH build job#预设脚本已经执行

8、常用操作总结

1)重启Jenkins

http://ip:8080/jenkins/restart

2)“编码问题”错误,在Tomcat–>conf–>server.xml文件中修改即可

[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>

3)构建个人的github库时,缺失pom文件

可以用其他公共库的pom文件拷贝

后记:Jenkins这个主要用于公司内部运维环境,重点放在与开发协调上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/27799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 终端窗口设置为透明

Linux 终端窗口设置为透明 打开终端 右键鼠标 选择Profile Preferences 点击Background 选择 Transparent background 拖动滑条调整透明度 完成。

Nintex流程平台引入生成式人工智能,实现自动化革新

工作流自动化提供商Nintex宣布在其Nintex流程平台上推出一系列新的人工智能驱动改进。这些增强显著减少了文档化、管理和自动化业务流程所需的时间。这些新特性为Nintex流程平台不断扩展的人工智能能力增添了新的亮点。 Nintex首席产品官Niranjan Vijayaragavan表示&#xff1a…

甄嬛传熹贵妃上户口:如果让他陪你过冬天,那朕能不能睡中间?贝叶斯模型推导爸爸去哪儿

关注微信公众号 数据分析螺丝钉 免费领取价值万元的python/java/商业分析/数据结构与算法学习资料 背景 《甄嬛传》是大家耳熟能详的宫廷剧&#xff0c;其中复杂的宫斗情节和深刻的人物刻画让人津津乐道。甄嬛因为与皇帝(四郎)闹翻了&#xff0c;去甘露寺待了一段时间&#x…

Navicat和SQLynx产品功能比较一(整体比较)

Navicat和SQLynx都是数据库管理工具&#xff0c;在过去的二十年中&#xff0c;国内用户主要是使用Navicat偏多&#xff0c;一般是个人简单开发需要&#xff0c;数据量一般不大&#xff0c;开发相对简单。SQLynx是最近几年的数据库管理工具&#xff0c;Web开发&#xff0c;桌面版…

PyTorch C++扩展用于AMD GPU

PyTorch C Extension on AMD GPU — ROCm Blogs 本文演示了如何使用PyTorch C扩展&#xff0c;并通过示例讨论了它相对于常规PyTorch模块的优势。实验在AMD GPU和ROCm 5.7.0软件上进行。有关支持的GPU和操作系统的更多信息&#xff0c;请参阅系统要求&#xff08;Linux&#xf…

SpringBoot使用jasypt实现数据库信息的脱敏,以此来保护数据库的用户名username和密码password(容易上手,详细)

1.为什么要有这个需求&#xff1f; 一般当我们自己练习的时候&#xff0c;username和password直接是爆露出来的 假如别人路过你旁边时看到了你的数据库账号密码&#xff0c;他跑到他的电脑打开navicat直接就是一顿连接&#xff0c;直接疯狂删除你的数据库&#xff0c;那可就废…

字符数组基础知识及题目

死识。。。 字符该如何存储呢&#xff1f;这一点我们在以前就接触过了。用char来存储。 如何输入一个单词呢&#xff1f; char a[10002]; scanf("%s",a); 就不用地址符了。 如何输入句子呢&#xff1f; char a[100002]; gets(a); gets是读入句子的&#xff0c…

【第7章】Vue之第一个Vue程序(Vue创建)

文章目录 前言一、创建1. 命令行2. 创建3. 安装依赖 二、启动三、访问总结 前言 接下来我们通过VSCode来创建我们的第一个Vue应用程序。 一、创建 1. 命令行 Terminal>New Terminal 2. 创建 #这一指令将会安装并执行 create-vue&#xff0c;它是 Vue 官方的项目脚手架工…

【Pr剪辑】工具栏的认识

目录 1.选择工具&#xff08;快捷键V&#xff09;1.1 选择1.2 移动素材1.3 框选1.4缩放1.5复制 2.钢笔工具&#xff08;快捷键P&#xff09;3.文字工具&#xff08;T&#xff09;4.剃刀&#xff08;C &#xff09;5.比例拉伸工具&#xff08;R&#xff09;6.波纹编辑工具&#…

HarmongOS打包[保姆级]

创建应用 首先进入 华为开发者联盟-HarmonyOS开发者官网 然后进行登录。 登录成功后&#xff0c;鼠标悬停在在登录右上角那个位置后再点击管理中心&#xff0c;进入下面这个界面。 再点击&#xff1a;应用服务–>应用发布–>新建–>完善信息 构建和生成私钥和证书请求…

惠海 H6213L降压恒压IC 支持3.3V5V12V30V40V60V100V电动车仪表供电稳压芯片方案

H6213L高压降压开关控制器是一款功性能良好的电源管理解决方案。它集成了众多先进的功能&#xff0c;使其在各种高压输入的应用场景中都能表现出色。 首先&#xff0c;H6213L具备高达150V的耐压能力&#xff0c;并支持高达120V的宽压输入范围。这意味着它可以轻松应对各种高压…

云原生系列之Docker常用命令

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列文章目录 云原生之…

PyTorch计算机视觉入门:从官方数据集到自定义数据集的获取

一、PyTorch与计算机视觉简介 PyTorch是一个开源的深度学习框架&#xff0c;其动态图的特性非常适合快速实验和模型原型设计。在计算机视觉任务中&#xff0c;如图像分类、目标检测、图像分割等&#xff0c;PyTorch提供了丰富的API和预训练模型&#xff0c;帮助开发者快速搭建…

极致深耕,打造核心竞争壁垒——探寻蓝思科技穿越周期的密码

作者 | 曾响铃 文 | 响铃说 一家企业&#xff0c;如何才能在时代变幻的风云中不计较一时得失&#xff0c;长期稳健发展&#xff0c;穿越周期&#xff1f;本期主题就来探寻一家在湖南的国际化企业的发展密码。 穿越周期的企业&#xff0c;都在坚持一个驱动发展的“原点” 细…

scrapy爬取豆瓣书单存入MongoDB数据库

scrapy爬取豆瓣书单存入MongoDB数据库 一、安装scrapy库二、创建scrapy项目三、创建爬虫四、修改settings,设置UA,开启管道五、使用xpath解析数据六、完善items.py七、在douban.py中导入DoubanshudanItem类八、爬取所有页面数据九、管道中存入数据,保存至csv文件十、将数据写…

【Windchill监听器、队列、排程】

目录 Windchill监听器 监听器的概念 监听器的监听器实现原理 监听器的客制化 Windchill队列、排程 队列、排程的概念 Windchill常见出厂队列 自定义队列 Windchill 11新增功能 Windchill监听器 监听器的概念 监听器&#xff0c;字面上的理解就是监听观察某个事件&…

数据结构(DS)学习笔记(二):数据类型与抽象数据类型

参考教材&#xff1a;数据结构C语言版&#xff08;严蔚敏&#xff0c;吴伟民编著&#xff09; 工具&#xff1a;XMind、幕布、公式编译器 正在备考&#xff0c;结合自身空闲时间&#xff0c;不定时更新&#xff0c;会在里面加入一些真题帮助理解数据结构 目录 1.1数据…

FullCalendar日历组件集成实战(15)

背景 有一些应用系统或应用功能&#xff0c;如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件&#xff0c;但功能比较简单&#xff0c;用来做数据展现勉强可用。但如果需要进行复杂的数据展示&#xff0c;以及互动操作如通过点击添加事件&#xff0…

java+vue3+el-tree实现树形结构操作

基于springboot vue3 elementPlus实现树形结构数据的添加、删除和页面展示 效果如下 代码如下&#xff0c;业务部分可以自行修改 java后台代码 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.daztk.mes.common.annotation.LogOperation…

C++ UML建模

starUML UML图转C代码 数据流图 E-R图 流程图 整体架构图 ORM关系图 参考 app.asar附件资源可免激活 JHBlog/设计模式/设计模式/1、StarUML使用简明教程.md at master SunshineBrother/JHBlog GitHub C程序员UML实务手册代码 - 开发实例、源码下载 - 好例子网 GitHub -…