06--jenkins构建CI_CD

news2024/11/23 4:02:51

前言:上一篇文章整理了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/bin

export 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.json


vim ~/.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.15
    inet 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.coloradmin.cn/o/1836198.html

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

相关文章

C++学习/复习15--栈与队列概述及练习/deque/适配器的概念

1.1stack概念 1.2stack函数 1.3最小栈 1.4栈的压入弹出 1.5逆波兰表达式 1.6栈实现队列 1.7层序遍历 1.8stack模拟实现 2.1queue概念 2.2queue函数 2.3queue模拟实现 3.1deque适配器 3.2deque功能 3.3deque原理 3.4deque特点与适配器

Windows下切换JDK版本

&#x1f4d6;Windows下切换JDK版本 ✅1. 下载JEnv✅2. 安装JEnv✅3. 添加JDK✅4. 切换JDK 前提条件&#xff1a;电脑得装有至少2个JDK版本 ✅1. 下载JEnv github地址&#xff1a;https://github.com/FelixSelter/JEnv-for-Windows/releases ✅2. 安装JEnv 1.将下载好的JEnv…

TP5400 SOIC-8 1A 锂电池充电和 5V/1A 升压控制芯片

TP5400 作为一款高集成度的电池充电管理和升压控制芯片&#xff0c;其应用领域不仅仅局限于智能手机&#xff0c;还可以广泛应用于其他各种便携设备。以下是一些潜在的应用例子&#xff1a; 1.平板电脑&#xff1a;平板电脑同样依赖于锂电池作为电源&#xff0c;并且需要高效的…

经验分享,在线文本比较工具

这里分享一个在线文本比较工具&#xff0c;打开网页即用&#xff0c;很方便 网址&#xff1a; https://www.jq22.com/textDifference 截图&#xff1a;

专业技能篇---计算机网络篇

文章目录 前言计算机网络基础一、网络分层模型 HTTP一、从输入URL到页面显示发生了什么&#xff1f;二、Http的状态码有哪些&#xff1f;三、 HTTP与HTTPS有什么区别&#xff1f;四、URI 和 URL 的区别是什么?五、Cookie和Session有什么区别&#xff1f;六、GET与POST 前言 主…

ArrayList泛型存储类型以及Arraylist与数组的转换

1.泛型的存储类型 众所周知&#xff0c;ArrayList< E>泛型能够存储所有的对象类型&#xff0c;如String、对象、以及基本类型的包装类。 java中所有的基本类型如下&#xff1a; 那么&#xff0c;泛型< E>能否存储int[]&#xff0c;String[]数组这种类型呢&#…

思科配置路由器,四台主机互相ping通

一、如图配置 PC4和PC5用来配置路由器&#xff0c;各ip、接口如图所示。 二、配置各主机ip、子网掩码SNM、默认网关DGW (一)、PC0 (二)、PC1 (三)、PC2 (四)、PC3 三、 配置路由器Router0 (期间报错是打错了字母) Router>en Router#configure terminal Enter configurat…

为什么传统 CNN 可能无法进行基于纹理的分类?

作者&#xff1a;Mayank Gubba、Mohammed Faisal、Trapti Kalra、Vijay Pandey 将纹理分析与深度学习结合使用对于在机器视觉任务中取得更好的结果起着重要作用。在第一篇博客中&#xff0c;我们讨论了“纹理”的基础知识、不同类型的纹理以及纹理分析在解决实际计算机视觉任务…

TCGAbiolinks包学习

TCGAbiolinks 写在前面学习目的GDCquery GDCdownload GDC prepare中间遇到的报错下载蛋白质数据 写在前面 由于别人提醒我TCGA的数据可以利用TCGAbiolinks下载并处理&#xff0c;所以我决定阅读该包手册&#xff0c;主要是该包应该是有更新的&#xff0c;我看手册进行更新了&…

美国原装二手KEITHELY2410替代新品keithley2470数字源表

Keithley 2470 高压 SourceMeter 源测量单元 (SMU) 仪器将先进的 Touch, Test, Invent 技术带到您的指尖。它将创新的图形用户界面 (GUI) 与电容式触摸屏技术相结合&#xff0c;使测试变得直观&#xff0c;并最大限度地缩短学习曲线&#xff0c;帮助工程师和科学家更快地学习、…

DBeaver windows下载、安装与连接数据库

下载 官网下载地址&#xff1a;https://dbeaver.io/download/ 安装 1、双击安装 2、下一步…… 选择所有用户 3、组件选择 配置连接数据库 下载驱动

从0到1,揭秘AI产品经理的高薪秘诀,转型之路与实战资源全解析

前言 随着算法模型的日益精进、计算能力的显著提升以及海量数据的积累&#xff0c;人工智能领域正以前所未有的速度蓬勃发展。 在国家政策的积极推动、社会资本的强劲注入下&#xff0c;人工智能产业正处于技术快速进步的黄金时期&#xff0c;其影响力广泛渗透至教育智能化、…

061、Python 包:模块管理

包&#xff08;Package&#xff09;是一种用于组织模块的层次结构。包实际上就是一个包含了__init__.py文件的目录&#xff0c;该文件可以为空或包含包的初始化代码。通过使用包&#xff0c;可以更好地组织和管理大型项目中的模块&#xff0c;避免命名冲突&#xff0c;并提高代…

全网最全 Kimi 使用手册,看完 Kimi 效率提升 80%

在当前AI文字大模型领域&#xff0c;ChatGPT4.0无疑是最强大。然而&#xff0c;最近最火爆的大模型非国产Kimi莫属。 相较于其它大模型&#xff0c;Kimi 最大的优势在于&#xff0c;超长文本输入&#xff0c;支持200万汉字&#xff0c;是全球范围内罕见的超长文本处理工具&…

孟德尔随机化R包:TwoSampleMR和MR-PRESSO安装

1. 孟德尔随机化R包 看一篇文章&#xff0c;介绍孟德尔随机化分析&#xff0c;里面推荐了这两个R包&#xff0c;安装了解一下&#xff1a; Methods:Genome-wide association study (GWAS) data for autoimmune diseases and AMD were obtained from the IEU Open GWAS databas…

vue中通过自定义指令实现一个可拖拽,缩放的弹窗

效果 功能描述 按住头部可拖拽鼠标放到边框&#xff0c;可缩放多层重叠丰富的插槽&#xff0c;易于扩展 示例 指令代码 export const dragDialog {inserted: function (el, { value, minWidth 400, minHeight 200 }) {// 让弹窗居中let dialogHeight el.clientHeight ?…

在Linux系统中安装凸语言

凸语言在2023国产编程语言蓝皮书中的介绍如下&#xff1a; 凸语言gitee页面&#xff1a;凸语言: tu-lang 是一种动态类型编译型的通用编程语言, 已实现自举 (gitee.com) 使用git克隆源码&#xff1a; git clone https://github.com/tu-lang/tu.git 安装凸语言环境&#xff1a…

1.4k star 项目 CMakeTutorial 阅读和点评

1.4k star 项目 CMakeTutorial 阅读和点评 文章目录 1.4k star 项目 CMakeTutorial 阅读和点评0. 概要1. CUDA 目录2. FindPackage 目录3. Installation 目录4. PackageManage 目录5. PythonExtension 目录6. ImportExternalProject 目录总结 0. 概要 在 github 搜索关键字 CM…

【ARMv8/ARMv9 硬件加速系列 2.4 -- ARM NEON Q寄存器与V寄存器的关系】

文章目录 Q 与 V 的关系向量寄存器 v 的使用赋值操作寄存器赋值总结Q 与 V 的关系 在ARMv8/v9架构中,v寄存器和q寄存器实际上是对相同的物理硬件资源的不同称呼,它们都是指向ARM的SIMD(单指令多数据)向量寄存器。这些寄存器用于高效执行向量和浮点运算,特别是在多媒体处理…

03-ES6新语法

1. ES6 函数 1.1 函数参数的扩展 1.1.1 默认参数 function fun(name,age17){console.log(name","age); } fn("张美丽",18); // "张美丽",18 fn("张美丽",""); // "张美丽" fn("张美丽"); // &…