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 包已成功拷贝到远程服务器

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

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

相关文章

[Golang]多返回值函数、defer关键字、内置函数、变参函数、类成员函数、匿名函数

函数 文章目录 函数多返回值函数按值传递、按引用传递类成员函数改变外部变量变参函数defer和追踪说明一些常见操作实现 使用defer实现代码追踪记录函数的参数和返回值 常见的内置函数将函数作为参数闭包实例闭包将函数作为返回值 计算函数执行时间使用内存缓存来提升性能 参考…

数据结构 MapSet(搜索)

数据结构 Map&Set(搜索) 文章目录 数据结构 Map&Set(搜索)1. 搜索树1.1 概念1.2 初始构建1.3 操作-插入1.4 操作-查找1.5 操作-删除1.6 性能分析 2. 搜索介绍2.1 概念及场景2.2 模型 3. Map的使用3.1 关于Map的说明3.2 关于Map.Entry<K, V>的说明3.3 Map的常用方…

又哭又笑,这份面试宝典要是早遇到就好了

01、算法原理 选择排序(Selection sort)是一种简单直观的排序算法。 第一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;然后再从剩余的未排序元素中寻找到最小&#xff08;大&#xff09;元素&#…

Top 10 数据恢复工具,可从iPhone 和 iPad 恢复数据

您是否正在寻找最好的 iPad 恢复软件&#xff0c;但不知道哪个选项最好&#xff1f;没有什么可担心的。本文将为您提供有关根据文件类型、设备兼容性和数据丢失原因等因素选择合适的 iPad 恢复软件的提示。此外&#xff0c;前 10 名提到的恢复软件是安全可靠的。 第 1 部分、iP…

文档的重要性及接口文档模板

随着工作年限的增长&#xff0c;我们逐渐意识到工作中文档的重要性不可忽视。优质的文档不仅能提高工作效率&#xff0c;还能有效降低沟通成本&#xff0c;因此我们必须注重文档的撰写和格式。最近&#xff0c;由于未能及时更新文档&#xff0c;导致在项目开发中出现了信息冲突…

搭建网站七牛云CDN加速配置

打开七牛云后台&#xff1b;添加域名&#xff1b; 添加需要加速的域名&#xff0c;比如我添加的是motoshare.cn 源站配置&#xff0c;这里要用IP地址&#xff0c;访问的目录下面要有能访问测试的文件&#xff0c;尽量不要用源站域名&#xff0c;这个只能用加速二级域名&#x…

51单片机KeyWard

eg1&#xff1a; 单片机键盘的分类 键盘分为编码键盘和非编码键盘&#xff0c;键盘上闭合键的识别由专用的硬件编码器实现&#xff0c;并产生键编码号或键值得称为编码键盘&#xff0c;如计算机键盘&#xff0c;而靠软件来识别的称为非编码键盘&#xff0c;在单片机组成的各种…

Leetcode-Easy题解1-回文数字

目录 解法1解法2 解法1 自己的想法,直接转成字符串首尾俩下标同时遍历比较 class Solution {public boolean isPalindrome(int x) {if(x<0){return false;}String strString.valueOf(x);int i0;for (;i<str.length()>>1;i){if(str.charAt(i)!str.charAt(str.leng…

AI篇-如何用AI辅助对图片进行鉴赏

前言 目录 前言 一、观众侧鉴赏图片 方法1&#xff1a;直接将图片发给文心一言&#xff0c;让文心一言分析。 方法2&#xff08;正确方法&#xff09;&#xff1a;将图片简单介绍并把图片发给文心一言&#xff0c;让文心一言分析。 二、作者介绍图片 方法&#xff08;正…

系统架构师考试科目一:综合知识

某软件公司欲开发一个 Windows 平台上的公告板系统。在明确用户需求后&#xff0c;该公司的 架构师决定采用 Command 模式实现该系统的界面显示部分&#xff0c;并设计 UML 类图如下 图所示。图中与 Command 模式中的 Invoker 角色相对应的类是( ) &#xff0c;与 ConcreteComm…

02、MySQL-------主从复制

目录 七、MySql主从复制启动主从复制&#xff1a;原理&#xff1a;实现&#xff1a;1、创建节点2、创建数据库3、主从配置1、主节点2、从节点 4、测试&#xff1a;5、问题&#xff1a;1、uuid修改2、service_id3、读写不同步方法1&#xff1a;方法2&#xff1a; 七、MySql主从复…

http post协议发送本地压缩数据到服务器

1.客户端程序 import requests import os # 指定服务器的URL url "http://192.168.1.9:8000/upload"# 压缩包文件路径 folder_name "upload" file_name "test.7z" headers {Folder-Name: folder_name,File-Name: file_name } # 发送POST请求…