DevOps 之 CI/CD入门操作 (二)

CI/CD简介

在这里插入图片描述

基于Jenkins拉取GitLab的SpringBoot代码进行构建发布到测试环境实现持续集成
基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署

一、CI流程

1.1 新建项目

  • 新建一个简单的springboot项目

在这里插入图片描述

  • 写一个简单的Controller

在这里插入图片描述

  • 运行测试

在这里插入图片描述

1.2 上传GitLab

  • 创建仓库

在这里插入图片描述
在这里插入图片描述

  • 添加Access tokens

在这里插入图片描述

  • 用Access tokens登录并上传代码

在这里插入图片描述

在这里插入图片描述

1.3 配置Jenkins

为了让程序代码可以自动推送到测试环境基于Docker服务运行,需要添加Docker配置和脚本文件让程序可以在集成到主干的同时运行起来。

  • 新建item

在这里插入图片描述

在这里插入图片描述

  • 配置gitlab仓库(用于jenkins拉取代码)

在这里插入图片描述
上述第4步,配置密码
在这里插入图片描述

  • 构建项目

在这里插入图片描述

  • 构建成功

在这里插入图片描述

  • 进入jenkins容器查看
    会发现多了一个workspace文件夹,里面就是构建的项目
#1
docker exec -it jenkins bash
#2
cd ~
#3
cd workspace
#4
cd mytest
#4
ls

在这里插入图片描述

  • 至此,Jenkins已成功拉取Gitlab的代码
    需要Jenkins将拉取的代码通过maven构建成jar包
    添加 Jenkins构建时配置(maven)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 再次构建项目(构建过程需要一定时间,要初始化maven仓库)

在这里插入图片描述

  • 查看构建控制台

在这里插入图片描述
在这里插入图片描述

  • 进入Jenkins容器查看,会发现多了target文件夹和jar包
docker exec -it jenkins bash

在这里插入图片描述

  • Jenkins 构建后配置
    jar包构建成功后,将jar包推送至目标服务器
    需要用到之前安装的 Publish Over SSH 插件

(插件的配置)
指定了jar包上传的服务器(这里用的当前的虚拟机)以及目录
插件的配置

配置Publish Over SSH 和上传源
在这里插入图片描述
在这里插入图片描述

  • 再次构建项目

在这里插入图片描述
在这里插入图片描述

  • 成功后查看目标服务器是否有相应jar包

在这里插入图片描述

1.4 借助docker容器运行jar

jar包上传后要实现将jar包运行在服务器,这里需要借助docker来完成

  • 更改打包名finalName
    在这里插入图片描述

  • 创建Dockerfile,帮助构建镜像

FROM openjdk:8u131  //基础镜像
COPY mytest.jar /usr/local/    
WORKDIR /usr/local
CMD java -jar mytest.jar

在这里插入图片描述

  • 创建docker-compose.yml文件
version: '3.1'
services:mytest:build:context: ./dockerfile: Dockerfileimage: mytest:v1.0.0container_name: mytestports:- 8081:8081  #映射端口

在这里插入图片描述

  • 上传代码及文件
  • 成功上传后,Jenkins重新构建
  • 构建完成后,进入Jenkins容器可以看到新建的docker以及文件
    在这里插入图片描述
  • Publish Over SSH配置增加上传源,并且加上命令
cd /usr/local/test/docker
mv ../target/*.jar ./
docker-compose down
docker-compose up -d --build
docker image prune -f   #删除名字为none的镜像

在这里插入图片描述

  • 构建项目失败
    在这里插入图片描述
  • 将命令拷贝去linux执行
    在这里插入图片描述
  • 再次构建,成功
    在这里插入图片描述
  • 查看镜像,测试
    在这里插入图片描述
    在这里插入图片描述

1.5 测试CI流程

  • 修改代码,提交
    在这里插入图片描述
  • 重新构建,测试
    在这里插入图片描述

二、CD流程

  • 配置git参数 ,以及构建前配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • GitLab新建tag
    在这里插入图片描述
    在这里插入图片描述

  • 修改并上传代码
    在这里插入图片描述

  • 创建新的tag
    在这里插入图片描述

  • Jenkins可以根据tag构建项目
    在这里插入图片描述

  • 测试,选择不同的tag构建
    在这里插入图片描述

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

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

相关文章

C++ STL - vector/list讲解及迭代器失效

vector 使用 vector 是一个动态数组. 构造/拷贝构造/赋值重载函数 int main() {// 是一个模板, 在实例化的时候, 需要指明类型std::vector<int> first; // 一个空的数组std::vector<int> second (4,100); // 设置初始空间大小为 4 个int, 全部初始化为 100std::v…

AWS 新加坡EC2 VPS 性能、线路评测及免费注意事项

原文论坛给你更好的阅读讨论体验&#x1f490;&#xff1a; AWS 新加坡EC2 VPS 性能、线路评测及免费注意事项 - VPS - 波波论坛 引言 对于那些习惯薅“羊毛”的朋友来说&#xff0c; AWS 的 免费套餐 可能已经非常熟悉。这台vps是我用外币卡薅的免费的12个月的机器&#xf…

TritonServer中加载模型,并在Gunicorn上启动Web服务调用模型

TritonServer中加载模型,并在Gunicorn上启动Web服务调用模型 一、TritonServer中加载模型1.1 搭建本地仓库1.2 配置文件1.3 服务端代码1.4 启动TritonServer二、Gunicorn上启动Web服务2.1 安装和配置Gunicorn2.2 启动Gunicorn三、调用模型四、性能优化与监控五、总结在深度学习…

容器安全检测和渗透测试工具

《Java代码审计》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484219&idx1&sn73564e316a4c9794019f15dd6b3ba9f6&chksmc0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene21#wechat_redirect Docker-bench-…

使用ENSP实现NAT

一、项目拓扑 二、项目实现 1.路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1关闭信息中心 undo info-center enable进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为12.12.12.1/30 ip address 12.12.12.1 30进入e0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置…

pnpm:包管理的新星,平替 npm 和 yarn

​ pnpm&#xff0c;一个老牌的 node.js 包管理器&#xff0c;支持 npm 的所有功能&#xff0c;完全足以用来替代 npm。它采用全局存储&#xff0c;每个项目内部使用了硬链接&#xff0c;所以很省空间&#xff0c;安装速度快。 本文介绍下 pnpm 的基本概念&#xff0c;安装、…

【大数据学习 | Spark-Core】Spark的分区器(HashPartitioner和RangePartitioner)

之前学过的kv类型上面的算子 groupby groupByKey reduceBykey sortBy sortByKey join[cogroup left inner right] shuffle的 mapValues keys values flatMapValues 普通算子&#xff0c;管道形式的算子 shuffle的过程是因为数据产生了打乱重分&#xff0c;分组、排序、join等…

计算机网络基础全攻略:探秘网络构建块(1/10)

一、计算机网络基础概念 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路和通信设备连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统…

游戏陪玩系统开发功能需求分析

电竞游戏陪玩系统是一种专门为游戏玩家提供陪伴、指导和互动服务的平台。这类系统通常通过专业的陪玩师&#xff08;也称为陪练师&#xff09;为玩家提供一对一或多对一的游戏陪伴服务&#xff0c;帮助玩家提升游戏技能、享受游戏乐趣&#xff0c;甚至解决游戏中的各种问题。电…

关于SpringBoot集成Kafka

关于Kafka Apache Kafka 是一个分布式流处理平台&#xff0c;广泛用于构建实时数据管道和流应用。它能够处理大量的数据流&#xff0c;具有高吞吐量、可持久化存储、容错性和扩展性等特性。 Kafka一般用作实时数据流处理、消息队列、事件架构驱动等 Kafka的整体架构 ZooKeeper:…

Linux 下的IO模型

一&#xff1a;四种IO模 1.1&#xff1a;阻塞式IO&#xff08;最简单&#xff0c;最常用&#xff0c;效率最低&#xff09; 阻塞I/O 模式是最普遍使用的I/O 模式&#xff0c;大部分程序使用的都是阻塞模式的I/O 。 缺省情况下&#xff08;及系统默认状态&#xff09;&#xf…

vue3项目部署在阿里云轻量应用服务器上

文章目录 概要整体部署流程技术细节小结 概要 vue3前端项目部署在阿里云轻量服务器 整体部署流程 首先有一个Vue3前端项目和阿里云应用服务器 确保环境准备 如果是新的服务器&#xff0c;在服务器内运行以下命令更新软件包 sudo apt update && sudo apt upgrade -y …

tcpdump交叉编译

TCPDUMP在Libpcap上开发。 首先需要编译libcap。 网上那么多教程&#xff0c;下载地址都只给了一个英文的官网首页&#xff0c; 你尽可以试试&#xff0c;从里面找到下载地址都要费半天时间。 \color{red}网上那么多教程&#xff0c;下载地址都只给了一个英文的官网首页&#…

KubeSphere 最佳实战:K8s 构建高可用、高性能 Redis 集群实战指南

首发&#xff1a;运维有术。 本指南将逐步引导您完成以下关键任务&#xff1a; 安装 Redis&#xff1a;使用 StatefulSet 部署 Redis。自动或手动配置 Redis 集群&#xff1a;使用命令行工具初始化 Redis 集群。Redis 性能测试&#xff1a;使用 Redis 自带的 Benchmark 工具进…

02 python基础 python解释器安装

首先在网站&#xff1a;Welcome to Python.org进行下载安装python 最新的解释器不一定是最好的&#xff0c;最稳定的才一定是最好的&#xff1b;要关注解释器最后维护 的时间。 一、python的安装 python安装的时候一定要在下载勾选好添加path环境 安装的时候尽量选择好自己的安…

java编程开发基础,正则表达式的使用案例Demo

java编程开发基础,正则表达式的使用案例Demo!实际开发中&#xff0c;经常遇到一些字符串&#xff0c;信息的裁剪和提取操作&#xff0c;正则表达式是经常使用的&#xff0c;下面的案例&#xff0c;可以帮助大家快速的了解和熟悉&#xff0c;正则表达式的使用技巧。 package com…

Windows Pycharm 远程 Spark 开发 PySpark

一、环境版本 环境版本PyCharm2024.1.2 (Professional Edition)Ubuntu Kylin16.04Hadoop3.3.5Hive3.1.3Spark2.4.0 二、Pycharm远程开发 文件-远程-开发 选择 SSH连接&#xff0c;连接虚拟机&#xff0c;选择项目目录即可远程开发

WebGL进阶(十一)层次模型

理论基础&#xff1a; 效果&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vie…

【H2O2|全栈】JS进阶知识(九)ES6(5)

目录 前言 开篇语 准备工作 class类 概念 形式 直接继承 概念 优点 案例 重写 概念 案例 关于重载 结束语 前言 开篇语 本系列博客主要分享JavaScript的进阶语法知识&#xff0c;本期为第九期&#xff0c;依然围绕ES6的语法进行展开。 本期内容为&#xff1a…

Prompting LLMs to Solve Complex Tasks: A Review

文章目录 题目简介任务分解未来方向结论 题目 促使 LLM 解决复杂任务&#xff1a; 综述 论文地址&#xff1a;https://www.intjit.org/cms/journal/volume/29/1/291_3.pdf 简介 大型语言模型 (LLM) 的最新趋势显而易见&#xff0c;这体现在大型科技公司的投资以及媒体和在线社…