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/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这个主要用于公司内部运维环境,重点放在与开发协调上。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

美国空军发布类ChatGPT产品—NIPRGPT

6月11日&#xff0c;美国空军研究实验室&#xff08;AFRL&#xff09;官网消息&#xff0c;空军部已经发布了一款生成式AI产品NIPRGPT。 据悉&#xff0c;NIPRGPT是一款类ChatGPT产品&#xff0c;可生成文本、代码、摘要等内容&#xff0c;主要为为飞行员、文职人员和承包商提…

传神论文中心|第12期人工智能领域论文推荐

在人工智能领域的快速发展中&#xff0c;我们不断看到令人振奋的技术进步和创新。近期&#xff0c;开放传神&#xff08;OpenCSG&#xff09;社区发现了一些值得关注的成就。传神社区本周也为对AI和大模型感兴趣的读者们提供了一些值得一读的研究工作的简要概述以及它们各自的论…

看国足!不破不立!层次越低的家庭,语言攻击性越强——早读(逆天打工人爬取热门微信文章解读)

你昨晚看国足了吗&#xff1f; 引言Python 代码第一篇 洞见 层次越低的家庭&#xff0c;语言攻击性越强第二篇结尾 引言 昨天看了国足比赛 输了韩国一个球 剩下大概率的出线希望 除非泰国赢新加坡 且3个球或者以上 泰国稍强于新加坡 但并不到打进3个球的地步 都觉得2个球已经是…

移民月贺礼!世贸通EB-5移民项目首批投资人获批了

特大喜讯 第八届移民月正在如火如荼地开展中 世贸通迎来了一个令人振奋的好消息 为移民月送来了一份大礼 增添了一抹格外耀眼的光彩 由世贸通担任大中华区独家代理的 「佛罗里达湖畔犹太社区」EB-5乡村项目 迎来首批投资人I-526E获批 世贸通恭喜获得I-526E批准的投资家庭…

【数据结构 |集合框架、泛型】初始集合框架、时间(空间)复杂度、简单认识泛型

✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天开心哦&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; &#x1f388;丠丠64-CSDN博客&#x1f388; ✨✨ 帅哥美女们&#xff0c;我们共同加油&#xff01;一起…

GitHub加载慢怎么解决

选了一个最简单的方法记录一下 一、GitHub为什么加载这么慢 简而言之就是&#xff0c;国内DNS默认解析到美国服务器&#xff08;慢&#xff09;&#xff0c;我们只要绕过DNS解析&#xff0c;直接访问韩国日本服务器&#xff08;快&#xff09;就可以解决访问缓慢的问题。 二、…

13.shell awk基础

13.shell awk基础 awk作用awk语法结构awk脚本结构awk工作原理awk内部变量awk格式输出awk模式匹配RegExp示例运算符匹配示例布尔运算符匹配示例运算符匹配示例 awk条件判断if判断 awk循环语句while循环for循环 awk是一种强大的文本处理工具&#xff0c;主要用于对文本和数据进行…

启动mysql 3.5时出现 MySql 服务正在启动 . MySql 服务无法启动。

有可能是端口冲突 netstat -ano | findstr :3306运行这段代码出现类似&#xff1a; 可以看到端口 3306 已经被进程 ID 为 6284 的进程占用。为了启动新的 MySQL 服务&#xff0c;我们需要停止这个进程或更改新服务的端口&#xff1a; 1、终止进程 taskkill /PID 6284 /F2、确…

大语言模型QA

Q:关于 Yi-9B 通过 input/output cosine 来分析模型,可能文档里没有把前提说明白。该指标确实存在你们提到的不同模型大小不可比的问题。所以我们比较的是同一个模型在不同训练阶段,以及 layer 深度相同的dense models 之间的比较。除了发现yi-6B/34B 随着训练 tokens 的增加…

在矩池云使用GLM-4的详细指南(无感连GitHubHuggingFace)

GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源版本&#xff0c;在多项测试中表现出超越已有同等规模开源模型的性能&#xff0c;它能兼顾多轮对话、网页浏览、代码执行、多语言、长文本推理等多种功能&#xff0c;性能更加强大。其多模态语言模型GLM-4V-9B在…

Autohotkey使用记录

文章目录 1. 安装1.1 autohotkey1.2 vscode需要安装的插件 3. 函数使用3.1 按键3.2 MouseMove 4. Bug分析4.1 A_TimeSincePriorHotkey 1. 安装 1.1 autohotkey 下载安装即可 1.2 vscode需要安装的插件 3. 函数使用 3.1 按键 各个按键的代词使用关键字搜索&#xff1a;Hotk…

antd Pagination分页组件自定义跳转文案、按钮的方法【配置组件自带api即可支持】

组件默认效果&#xff1a; 期望效果&#xff1a; 代码&#xff1a; <PaginationclassNamelist-pagerpageSize{10}current{params?.pageNo}responsivetotal{listData?.totalItem}showSizeChanger{false}showQuickJumper{{ goButton: <Button classNamego-page>确定…

一、时钟控制

时钟 STM32F4有五种时钟源 HSI 内部高速时钟LSI 内部低速时钟HSE 外部高速时钟LSE 外部低速时钟PLL 锁相环倍频输出 其中 HSI、HSE、PLL可驱动系统时钟 (SYSCLK)&#xff0c;对于每个时钟源来说&#xff0c;在未使用时都可单独打开或者关闭&#xff0c;以降低功耗。 HSE高速…

计算机信息安全技术课后习题答案

计算机信息安全技术课后习题答案 计算机信息安全技术&#xff08;第2版&#xff09;付永刚 部分习题答案 第一章 计算机信息安全技术概述 选择题 关于访问控制服务的描述中&#xff0c;正确的是&#xff08; A &#xff09; A. 可控制用户访问网络资源 B.可识别发送方的真实身…

多用户竞拍商城系统 挂售转卖竞拍商城系统源码 竞拍系统 竞拍系统开发定制 转拍闪拍系统 后端PHP+前端UNIAPP源码+教程

挂售转卖竞拍商城系统源码/竞拍系统/转拍闪拍系统/后端PHP前端UNIAPP源码 玩法简介 ①、后台可添加商品进行挂单 ②、后台设置场次以及场次开始时间 ③、用户抢单 ④、抢单以后可选择提货或者转售 ⑤、玩家寄售需按照后台设置百分比进行加价 ⑥、玩家寄售需支付手续费(余额支付…

u盘数据要在哪台电脑上恢复?u盘数据恢复后保存在哪里

在数字化时代&#xff0c;U盘已成为我们日常生活中不可或缺的数据存储设备。然而&#xff0c;由于各种原因&#xff0c;U盘中的数据可能会意外丢失&#xff0c;这时数据恢复就显得尤为重要。但是&#xff0c;很多人对于在哪台电脑上进行U盘数据恢复以及恢复后的数据应保存在哪里…

【Ardiuno】实验ESP32单片机完成搭建简易Web服务器功能(图文)

今天&#xff0c;小飞鱼继续来测试使用ESP32来实现简易的wifi无线web服务器功能。使用Ardiuno平台编辑器输入以下示例代码&#xff1a; #include <WiFi.h> #include <WiFiClient.h> #include <WebServer.h> #include <ESPmDNS.h>const char* ssid &q…

【UE5|水文章】在UMG上显示帧率

参考视频&#xff1a; https://www.youtube.com/watch?vH_NdvImlI68 蓝图&#xff1a;

50.Python-web框架-Django中引入静态的bootstrap样式

目录 Bootstrap 官网 特性 下载 在线样例 Bootstrap 入门 Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 在django中使用bootstrap 新建static\bootstrap5目录&#xff0c;解压后的Bootstrap文件&#xff0c;拷贝项目里就好。 在template文件里引用css文…

全华人团队推出多模态大模型新基准,GPT-4o准确率仅为65.5%,所有模型最易犯感知错误

GPT-4o再次掀起多模态大模型的浪潮。 如果他们能以近似人类的熟练程度&#xff0c;在不同领域执行广泛的任务&#xff0c;这对许多领域带来革命性进展。 因而&#xff0c;构建一个全面的评估基准测试就显得格外重要。然而评估大型视觉语言模型能力的进程显著落后于它们自身的…