Jenkins环境部署与任务构建

一、CI/CD

1、CI/CD 概念:

CI/CD 是一种软件开发和交付方法,旨在加速应用程序的开发、测试和部署过程,以提高软件交付的质量和效率。

(1) 持续集成 (CI Continuous Integration):

持续集成是开发团队频繁集成其代码更改的过程。开发者将其代码合并到共享代码库(如Git仓库)后,CI工具(例如Jenkins、Travis CI、CircleCI等)将自动构建、测试和部署应用程序。(代码合并、构建、部署、测试在一起不断执行,并对结构反馈)

(2) 持续交付 (CD Continuous Deployment):

持续交付是一种将应用程序的构建版本自动部署到测试环境的实践。在持续交付流程中,每次通过CI测试的代码变更都可以自动部署到一个测试环境,使团队能够快速验证新功能、修复和改进。(把代码部署到测试环境)

(3) 持续部署 (CD Continuous Delivery):

将通过 CI 生成的新代码或软件的变更自动部署到生产环境,不需要人工干预。

2、版本交付策略:

(1) 平滑发布:

在发布过程中系统不会因为更新代码而停止服务,不会造成用户短暂的无法访问;

(2) 灰度发布:

灰度发布是一种的策略,先让一小部分用户使用新版本,然后收集用户反馈,再将新版本引入生产环境;

(3) A/B 发布:

A/B 发布是一种将两个或多个不同版本的应用程序同时发布到不同的用户群体中的策略。

二、Jenkins

1、jenkins 概述:

jenkins 是一个开源的自动化服务器和持续集成/持续交付(CI/CD)工具,用于自动化和管理软件项目的构建、测试和部署过程;

jenkins 原名 Hudson,后来成为开源项目;

jenkins 是基于 Java 编写的,它的核心是一个可扩展的插件系统;

jenkins 可在 Tomcat 等流行的 servlet 容器中运行,也可独立运行。

2、jenkins 作用:

① 实现持续集成(CI):jenkins 的主要目标是支持持续集成实践,确保代码更改频繁地集成到共享代码库,自动构建和测试。

② 自动化构建和部署:编译、打包、测试,以及自动化部署到各个环境。

③ 提供灵活性:jenkins 的架构和插件系统为用户提供了广泛的自定义和扩展选项,以适应不同项目和工作流的需求。

3、jenkins 环境部署(192.168.198.131,内存4G):

(1) 部署 git:

在 jenkins 中,使用 git 用于管理项目的源代码。

① 安装依赖包:

yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

② 安装 git:

make prefix=/usr/local/git all :编译git源码包

make prefix=/usr/local/git install :指定安装目录

③ 修改环境变量:

vim /etc/bashrc

PATH=$PATH:$HOME/bin:/usr/local/git/bin

source /etc/bashrc

测试是否安装成功:

(2) 部署 jdk(jdk11):

在 jenkins 中,jdk 用于构建和运行 Java 项目。

jdk 官网:Java Downloads | Oracle

① 解压安装:

tar xvzf jdk-11.0.21_linux-x64_bin.tar.gz -C /usr/local/

② 修改环境变量:

vim /etc/bashrc

JAVA_HOME=/usr/local/jdk

export PATH=$PATH:$JAVA_HOME/bin

(3) 部署 Maven:

在 jenkins 中,Maven 可以自动化项目的构建过程,将源代码编译、测试、打包、发布等步骤整合到一起。

① 下载解压:

② 修改环境变量:

vim /etc/bashrc

export M2_HOME=/usr/local/maven

export M2=$M2_HOME/bin

PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin

export JAVA_HOME=/usr/local/jdk

export PATH

(4) 部署 Tomcat:

在 jenkins 部署中,Tomcat 用于部署和运行 Web 应用程序。

① 下载解压:

② 修改环境变量:

vim /erc/profile

CATALINA_HOME=/usr/local/tomcat

export CATALINA_HOME

source /etc/profile

③ 启动并测试 tomcat:

开启 tomcat:/usr/local/tomcat/bin/startup.sh

关闭 tomcat:/usr/local/tomcat/bin/shutdown.sh

(5) 部署 jenkins:

① 在官网选择版本 2.426:

jenkins.war

② 将 jenkins.war 拷到 tomcat 的工作目录下:

③ 启动 tomcat:

启动 tomcat 后会自动解压 webapps 下的 war 包

/usr/local/tomcat/bin/startup.sh

④ 登录 jenkins:

管理员默认的初始化密码在 /root/.jenkins/secrets/initialAdminPassword 下

选择安装社区推荐的插件:

创建用户:

访问地址:http://192.168.198.131:8080/jenkins/

4、jenkins 插件管理:

(1) 安装插件:

在 “系统管理” 中选择 “插件管理”,点击 Available plugins,搜索插件名

① 安装 Deploy to container:

作用:将 Web 应用程序部署到 Tomcat 容器的开发工具插件。

② 安装 Maven Integration:

作用:jenkins 利用 maven 进行编译,测试,打包。

③ 安装 git 相关插件:

GitHub Authentication

GitHub Branch Source

GitHub Organization Folder(jenkins已配置)

④ 安装 Publish Over SSH:

作用:在构建过程中通过 SSH 协议上传或下载文件

(2) jenkins 系统设置:

配置 jdk,git,maven 的根目录,在 “系统管理” 中找到 “全局配置工具” 进行修改

① 配置 jdk:

② 配置 git:

③ 配置 maven:

● 配置 maven 镜像:

在 maven 服务器中配置 settings.xml,找到 <mirrors> 配置阿里镜像

/usr/local/maven/conf/settings.xml

<mirror>

        <id>alimaven</id>

        <name>aliyun maven</name>

        <url>https://maven.aliyun.com/repository/public</url>

        <mirrorOf>central</mirrorOf>

</mirror>

(3) SSH 设置:

jenkins服务器(192.168.198.131) 与远程 tomcat 服务器(192.168.198.130)通过 ssh 进行连接

① jenkins 准备密钥:

ssh-keygen

ssh-copy-id -i 192.168.198.130

② 在 jenkins 上配置 ssh 信息:

cat ~/.ssh/id_rsa :查看 jenkins服务器(131)的密钥

在 “系统管理” 中找到 “系统配置”,在 “Publish over SSH” 下进行配置

5、jenkins 任务:

jenkins 提供管理和监控界面,用于设置和配置构建任务,以及查看构建日志和结果;

maven 的作用是执行构建任务,根据项目的 POM(Project Object Model)文件定义,下载所需的依赖,编译源代码,运行单元测试,打包应用程序等;

GitHub 是代码托管平台,用于存储和管理项目的源代码。

(1) 创建任务:

点击 “新建任务”,输入任务名,选择构建 maven 项目

(2) 设置 maven:

① 描述:

选择“丢弃旧的构建”:每一次构建都会下载数据包,勾选 "丢弃旧的构建" 可以释放磁盘空间,删除旧的构建数据,从而防止磁盘空间不足。

② 选择版本控制器和仓库地址(公有仓库):

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

从这个仓库中拉取代码

③ 设置构建:

clean package -Dmaven.test.skip=true

这是一个 Maven 命令,用于清理项目残留的旧文件、执行打包过程,并快速构建项目,跳过运行测试阶段。

④ 构建后操作:

在 “构建后操作步骤” 中选择:send build artifacts over ssh(通过SSH发送构建工件)

● Source files:源文件

在任务构建后,jenkins 服务器上会创建一个 war 包(路径:/root/.jenkins/jobs/job1/builds/target/*.war),Source files 的作用是指明需要传递给远程 tomcat 服务器(tomcat1)的 war 包的位置;

● Remove prefix:删除路径前缀

Remove prefix 与 Source files 配合,只拷贝 war 包,不拷贝整个 target 文件夹下的内容;

● Remote directory:远程服务器文件夹的位置

远程 tomcat 服务器上用来存放源码的位置,需要自行创建;

● Exec command:提前写好脚本,在源代码传递过来后,执行该脚本,若成功执行脚本说明源代码拷贝成功

注:此实验旨在进行任务的创建过程,并未对远程 tomcat 服务器真正进行部署

(3) 构建任务:

在远程 tomcat 服务器上查看脚本是否执行:

war 包已成功拷贝到远程服务器

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

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

相关文章

DBOW概要理解与记录

前言 DBOW作为一种视觉回环技术被广泛应用在各类VSLAM框架中&#xff0c;之前的经验主要集中在使用和抽象理解层面&#xff0c;近期花了一些时间仔细阅读了相关论文和源码&#xff0c;这里做一些记录。 两个关键概念 Vocabulary 通过预先训练得到的词汇库&#xff0c;以树状…

VR全景餐厅,为餐饮老板开启了新纪元

在近两年的“元宇宙”概念的催生下&#xff0c;VR全景技术逐渐渗透到我们生活的方方面面&#xff0c;从舌尖到指尖、从田间到车间、从衣食住行到娱乐消费等&#xff0c;越来越多的行业、领域开始引入VR全景了&#xff0c;并在各自的垂直领域开拓了VR全景新时代。 而一直以来&am…

强化学习问题(7)--- Python和Pytorch,Tensorflow的版本对应

1.问题 之前下载的python3.8&#xff0c;在对应Pytorch和Tensorflow时没太在意版本&#xff0c;在运行一些代码时&#xff0c;提示Pytorch和Tensorflow版本过高&#xff0c;直接降下来&#xff0c;有时候又和Python3.8不兼容&#xff0c;所以又在虚拟环境搞一个Pyhon3.7&#x…

超简洁ubuntu linux 安装 cp2k

文章目录 打开下载网址解压接下来的步骤讲解 将解压的包移到对应路径下最后运行 打开下载网址 需要从github下载&#xff1a;下载网址 两个都可以从windows下先下载&#xff0c;再复制到linux中&#xff0c; 如果不能复制&#xff0c;右键这两个&#xff0c;复制链接&#xf…

项目总结-新增商品-Pagehelper插件分页查询

&#xff08;1&#xff09;新增商品 工具类&#xff1a; /** * Title: FileUtils.java * Package com.qfedu.common.utils * Description: TODO(用一句话描述该文件做什么) * author Feri * date 2018年5月29日 * version V1.0 */ package com.gdsdxy.common.u…

Android Studio中配置aliyun maven库

当下载第三方库失败的时候&#xff0c;通过Android Studio中配置aliyun maven库&#xff0c;达到正常下载库效果 在项目的根build.gradle里面&#xff08;不是module&#xff09;buildscriptde对应位置添加配置&#xff1a; maven { url https://maven.aliyun.com/repository/…

优优嗨聚集团:抖音外卖,美食与文化的完美结合

在今天的数字化时代&#xff0c;外卖行业正在迅速发展&#xff0c;而抖音外卖的出现&#xff0c;更是引领了外卖行业的新潮流。抖音外卖不仅满足了人们对美食的追求&#xff0c;还让人们在享受美食的同时&#xff0c;感受到了浓厚的文化氛围。 抖音外卖是抖音平台推出的一项全新…

Google Authenticator认证密钥从手机App中同步到Chrome浏览器插件中

前言 现在很多重要的项目都用了Google Authenticator来做安全认证&#xff0c;比如Github&#xff0c;Jumpserver等等&#xff0c;但每次认证登录时候&#xff0c;都得掏出来手机看token码就比较麻烦。 还好 Google Authenticator 有 Chrome 浏览器插件&#xff0c;可以直接同…

YOLOv8改进实战 | 更换损失函数之MPDIOU(2023最新IOU)篇

前言 YOLOv8官方默认损失函数采用的是CIoU。本章节主要介绍如何将MPDIoU损失函数应用于目标检测YOLOv8模型。 目录 一、MPDIoU二、代码实现添加损失函数更换损失函数一、MPDIoU 论文链接:MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression MPDIoU是一种基于…

打破总分行数据协作壁垒,DataOps在头部股份制银行的实践|案例研究

从银行开始建设数据仓库至今已近20年&#xff0c;当前各银行机构在数据能力建设中面临诸多困扰&#xff1a;如何保证数据使用时的准确性&#xff1f;如何让数据敏捷响应业务变化&#xff1f;如何让更多的业务人员使用数据&#xff1f; 这些问题极大影响了经营指标的达成与业务…

分布式事务——CAP理论 解决分布式事务的思路 Seata组件初识 和 部署

前言 事务(TRANSACTION)是一个不可分割的逻辑单元&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体向系统提交&#xff0c;要么都执行、要么都不执行。 事务作为系统中必须考虑的问题&#xff0c;无论是在单体项目还是在分布式项目中都需要进行…

Python机器学习17——Xgboost和Lightgbm结合分位数回归(机器学习与传统统计学结合)

最近XGboost支持分位数回归了&#xff0c;我看了一下&#xff0c;就做了个小的代码案例。毕竟学术市场上做这种新颖的机器学习和传统统计学结合的方法还是不多&#xff0c;算的上创新&#xff0c;找个好数据集可以发论文。 代码实现 导入包 import numpy as np import pandas…

uni-app医院智能导诊系统源码

随着科技的迅速发展&#xff0c;人工智能已经逐渐渗透到我们生活的各个领域。在医疗行业中&#xff0c;智能导诊系统成为了一个备受关注的应用。本文将详细介绍智能导诊系统的概念、技术原理以及在医疗领域中的应用&#xff0c;分析其优势和未来发展趋势。 智能导诊系统通过人工…

如何训练Embedding Model

BGE的技术亮点&#xff1a; 高效预训练和大规模文本微调&#xff1b;在两个大规模语料集上采用了RetroMAE预训练算法&#xff0c;进一步增强了模型的语义表征能力&#xff1b;通过负采样和难负样例挖掘&#xff0c;增强了语义向量的判别力&#xff1b;借鉴Instruction Tuning的…

中央设备状态监控系统CMS如何帮助半导体晶圆厂提高产品良率

中央设备状态监控系统&#xff08;CMS&#xff09;在半导体晶圆厂中扮演着关键角色&#xff0c;帮助企业提高产品的良率。本文将介绍CMS是什么、当前半导体晶圆厂产品良率面临的挑战&#xff0c;并重点探讨CMS如何通过实时数据监控、故障预测和预警、以及统计分析和过程改进等方…

【论文阅读】(2023TPAMI)PCRLv2

目录 AbstractMethodMethodnsU-Net中的特征金字塔多尺度像素恢复多尺度特征比较从多剪切到下剪切训练目标 总结 Abstract 现有方法及其缺点&#xff1a;最近的SSL方法大多是对比学习方法&#xff0c;它的目标是通过比较不同图像视图来保留潜在表示中的不变合判别语义&#xff…

SENet 学习

ILSVRC 是一个比赛&#xff0c;全称是ImageNet Large-Scale Visual Recognition Challenge&#xff0c;平常说的ImageNet比赛指的是这个比赛。 使用的数据集是ImageNet数据集的一个子集&#xff0c;一般说的ImageNet&#xff08;数据集&#xff09;实际上指的是ImageNet的这个子…

day01_matplotlib_demo

文章目录 折线图plot多个绘图区绘制数学函数图像散点图scatter柱状图bar直方图histogram饼图pie总结 折线图plot import matplotlib.pyplot as pltplt.figure(figsize(15, 6), dpi80) plt.plot([1, 0, 9], [4, 5, 6]) plt.show()### 展现一周天气温度情况 # 创建画布 plt.figu…

NewStarCTF2023week4-More Fast(GC回收)

打开链接&#xff0c;存在很多个类&#xff0c;很明显是php反序列化漏洞利用&#xff0c;需要构造pop链 &#xff0c; 关于pop链构造的详细步骤教学&#xff0c;请参考我之前的博客&#xff0c;真的讲得很详细也容易理解&#xff1a; http://t.csdnimg.cn/wMYNB 如果你是刚接…

Echarts柱状图渐变色问题变通

问题背景 设计稿中给出了如下图的效果&#xff0c;在柱状图的最上面给出了一个白色的小块&#xff0c;起初我一直在思考亦或者搜索相关的问题&#xff1a;如何在Echarts柱状图顶部实现一个24*4的白色矩形块。始终不得其解&#xff0c;在一个吃饭的瞬间冒出来一个想法是否可以用…