Jenkins构建CI/CD

news/2024/7/12 2:33:37 标签: jenkins, ci/cd, 运维

CI/CD是什么?

CI(Continuous integration,中文意思是持续集成)持续集成强调开发人员提交了新代码之后,立刻进行构建、测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。

CD(Continuous Delivery, 中文意思持续交付)是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境中。比如,可以把代码部署到连接数据库的环境中进行更多的测试。如果代码没有问题,可以继续手动部署到生产环境。

持续集成/持续发布--项目---开发(git) -->git主库-->jenkins(调用maven打包+测试)-->发布到后端服务器 

jenkins_10">一、jenkins介绍

Jenkins是帮我们将代码进行统一的编译打包、还可以直接放到后端服务器中进行发布。
我们通过配置jenkins,将以前:编译、打包、上传、部署到后端服务器中的过程交由Jenkins,Jenkins通过给定的代码地址URL,将代码拉取到其“宿主服务器”(Jenkins的安装位置),进行编译、打包和发布到web容器中。

1、Jenkins概述
Jenkins是一款开源的、提供友好操作界面的持续集成(CI/CD)工具,主要用于持续、自动的构建的一些定时执行的任务。Jenkins用Java语言编写,可在Tomcat等流行的容器中运行,也可独立运行。

jenkins通常与版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT。jenkins构建工具有Maven、Ant、Gradle。

2、Jenkins目标
提高开发效率以及过程控制:
jenkins的主要目标是监控软件开发流程,快速显示问题。 所以能保证开发人员以及相关人员省时省力提高开发效率。
CI系统在整个开发过程中的主要作用是控制:当系统在代码库中检测到修改时,它将运行构建的任务委托给构建过程本身。如果构建失败了,那么CI系统将通知相关人员,然后继续监视代码库。
3、Jenkins特性
1.易于安装    #不需要安装、不需要数据库,只需通过java  -jar jenkins.war或部署到一个java容器中
2.易于配置    #所有的配置都可能通过jenkins提供的web界面完成,当然如果你喜欢,也可以通过手动修改xml文件进行配置
3.文件识别    #jenkins能跟踪每次构建生成的是war包还是jar包,以及使用哪个版本的包。
4.分布式构建  #支持Jenkins能够让多台计算机一起构建/测试。
5.任务(Job)和构建(build) #任务:(Job)是Jenkins的一个执行计划,是一系列操作的集合。构建:是Jenkins的任务的一次运行。
6.插件支持    #jenkins可以通过第三方插件扩展,也可以根据团队需要开发插件
6.跨平台      #支持所有的平台

工作流程图:

在这里插入图片描述

测试环境中:
1.开发者会将代码上传到版本库中。
2.jenkins通过配置版本库的连接地址,获取到源代码。
3.jenkins获取到源代码之后通过参数化构建(或者触发器)开始编译打包。
4.jenkins通过调用maven(Ant或者Gradle)命令实现编译打包过程。
5.生成的war/jar包通过ssh插件上传到远程后端服务器中通过shell脚本自动发布项目。
生产环境:
测试环境将项目测试没问题后,将项目推送到线上正式环境。
1.可以选择手动。
2.也可以通过调用脚本推送过去。

二、部署Jenkins实战

1、准备环境:
三台机器

git-server    ----https://github.com/bingyue/easy-springmvc-maven

jenkins-server    ---192.168.1.212---最好是3个G以上

java-server   -----192.168.1.210

https://github.com/bingyue/easy-springmvc-maven 或者
https://gitee.com/bingyu076/easy-springmvc-maven.git
jenkins_74">1.部署jenkins服务器
安装git客户端:
[root@jenkins-server ~]# yum install -y git   #安装git客户端
[root@jenkins-server ~]# ssh-keygen
[root@jenkins-server ~]# ssh-copy-id -i root@192.168.246.210   #拷贝到后端java服务器
开始部署jenkins:
从Jenkins2.164(2019年2月10日发布)和 LTS 2.164.1(ETA:3月14日)开始,在 Jenkins 中全面支持 Java 111.新上传jdk11
[root@jenkins-server ~]# tar xzf jdk-11.0.20_linux-x64_bin.tar.gz -C /usr/local/
[root@jenkins-server ~]# cd /usr/local/
[root@jenkins-server local]# mv jdk-11.0.20/ java
2.安装tomcat
[root@jenkins-server ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.52/bin/apache-tomcat-9.0.52.tar.gz
[root@jenkins-server ~]# tar xzf apache-tomcat-8.5.42.tar.gz -C /usr/local/
[root@jenkins-server ~]# cd /usr/local/
[root@jenkins-server local]# mv apache-tomcat-8.5.42/ tomcat
3.安装maven
[root@jenkins-server ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
[root@jenkins-server ~]# tar xzf apache-maven-3.5.4-bin.tar.gz -C /usr/local/java
[root@jenkins-server ~]# cd /usr/local/java
[root@jenkins-server java]# mv apache-maven-3.5.4/ maven
设置变量:
[root@jenkins-server ~]# vim /etc/profile
JAVA_HOME=/usr/local/java
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
MAVEN_HOME=/usr/local/java/maven
export JAVA_HOME MAVEN_HOME PATH
[root@jenkins-server ~]# source /etc/profile
验证:
[root@jenkins-server ~]# java -version 
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
[root@jenkins-server ~]# mvn -v 
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/java/maven
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/local/java/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"

下载jenkins的安装包:
安装jenkins:2.426.1  ----通过官网直接下载war包。
官网:https://www.jenkins.io/download/
[root@jenkins-server ~]# wget https://get.jenkins.io/war-stable/2.426.1/jenkins.war --no-check-certificat

最新版本的jenkins需要字体支持,但是目前系统缺少字体--需要安装字体
[root@jenkins-server ~]# yum install fontconfig -y
部署jenkins
[root@jenkins-server ~]# cd /usr/local/tomcat/webapps/
[root@jenkins-server webapps]# rm -rf * 
[root@jenkins-server webapps]# cp /root/jenkins.war .
[root@jenkins-server webapps]# ../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
Tomcat started.

如果启动了访问提示
在这里插入图片描述
解决办法在

[root@jenkins-server ~]# cd /usr/local/tomcat/conf/
[root@jenkins-server conf]# vim context.xml  -----添加如下内容:
    <Resources
        cachingAllowed="true"
        cacheMaxSize="100000"
    />

在这里插入图片描述

重启tomcat

2.如果还是不行:

[root@jenkins ~]# cd .jenkins/updates/ 到jenkins的工作目录下
[root@jenkins updates]# vim default.json"connectionCheckUrl":"http://www.google.com/" 改为  "connectionCheckUrl":"http://www.baidu.com/"

3.要是还是不行:

需要你进入jenkins的工作目录,打开-----hudson.model.UpdateCenter.xml
把http://updates.jenkins-ci.org/update-center.json
改成
http://mirror.xmission.com/jenkins/updates/update-center.json
每次改完记得重启!

使用运行war的形式安装jenkins,因为伟大的墙出现,“该jenkins实例似乎已离线” 问题:

解决办法:

需要你进入jenkins的工作目录,打开-----hudson.model.UpdateCenter.xml将 url 中的 https://updates.jenkins.io/update-center.json 更改为http://updates.jenkins.io/update-center.json,即去掉 https 中的 s 。
或者更改为https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
是国内的清华大学的镜像地址。
然后重启tomcat

========================================================================

2.访问界面: —需要多等一会

<http://192.168.1.212:8080/jenkins
在这里插入图片描述


http://www.niftyadmin.cn/n/5311456.html

相关文章

C语言中的关键字与标识符详解

1. 关键字(keyword) 定义&#xff1a; 关键字是C语言中预定义的一组特殊字符串&#xff0c;它们具有特定的含义和用途。在程序编译过程中&#xff0c;编译器会根据这些关键字执行相应的操作。 特点&#xff1a; 所有C语言的关键字均采用小写字母形式。 举例&#xff1a; 例如…

MySQL数据库的CURD、常见函数及UNION和UNION ALL

一、概述 MySQL是一种流行的关系型数据库管理系统&#xff0c;广泛应用于各种应用场景。在MySQL中&#xff0c;CURD操作是指创建&#xff08;Create&#xff09;、读取&#xff08;Read&#xff09;、更新&#xff08;Update&#xff09;和删除&#xff08;Delete&#xff09;…

算法训练营Day36

#Java #动态规划 开源学习资料 Feeling and experiences&#xff1a; 动态规划&#xff1a;01背包理论基础&#xff1a;卡码网题目链接 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成果。他需要带一些研究材料&#xf…

2024最新外贸建站:ChemiCloud主机购买使用及自建外贸独立站教程

随着电商平台竞争的加剧&#xff0c;许多外贸从业者意识到减少对平台依赖的重要性&#xff0c;并选择搭建自己的外贸独立站来获得更多的控制权和灵活性。即使是没有建站基础的新手&#xff0c;也可以通过学习建站来实现这一目标。下面是一个适用于新手的外贸建站教程&#xff0…

一文讲透使用Python绘制双纵轴线图

双纵轴线图主要用来展示两个因变量和一个自变量的关系&#xff0c;并且两个因变量的数值单位不同。具体来说&#xff0c;双纵轴线图是指在一幅图上有一个横轴和两个纵轴&#xff0c;适用于三个变量。两个纵轴分别表示一个变量&#xff0c;横轴变量同时适用于两个纵轴上的变量&a…

Vue Cli inspect

Vue Cli inspect vue-cli-service inspect&#xff1a;可以使用 vue-cli-service inspect 来审查一个 Vue CLI 项目的 webpack config 使用方法&#xff1a; 1、输出在控制台&#xff1a;vue-cli-service inspect 2、输在在文件中&#xff1a;vue-cli-service inspect -->…

python 写自动点击爬取数据

今天来点不一样的&#xff01;哥们 提示&#xff1a; 这里只是用于自己学习的 &#xff0c;请勿用违法地方 效果图 会进行点击下一页 进行抓取 需要其他操作也可以自己写 文章目录 今天来点不一样的&#xff01;哥们前言一、上代码&#xff1f;总结 前言 爬虫是指通过编程自动…

自然语言转SQL,一个微调ChatGPT3.5的实例(下)--模型微调及模型性能

提交训练集进行微调 一旦我们创建了JSONL文件&#xff08;可以在这里或ipfs_here找到一个小样本&#xff09;&#xff0c;下一步是使用以下命令将创建的文件上传到OpenAI&#xff1a; openai.api_key os.getenv("OPENAI_API_KEY") print(openai.File.create(fileo…