【保姆级】阿里云codeup配置Git的CI/CD步骤
以下是通过阿里云CodeUp的Git仓库进行CI/CD配置的详细步骤,涵盖前端(Vue 3)和后端(Spring Boot)项目的自动化打包,并将前端打包结果嵌入到Nginx的Docker镜像中,以及将后端打包的JAR文件拷贝至Docker指定目录的完整流程:
前提条件
- 阿里云账号:已注册并登录阿里云CodeUp。
- 项目代码:前端(Vue 3)和后端(Spring Boot)项目代码已托管到CodeUp仓库。
- Docker环境:本地或服务器上已安装Docker。
- 阿里云容器镜像服务:已创建并配置好容器镜像仓库。
步骤 1:配置CodeUp仓库
-
登录CodeUp:
- 使用阿里云账号登录CodeUp。
- 创建或选择一个前端Vue 3项目仓库和一个后端Spring Boot项目仓库。
-
设置Webhook(可选):
- 在CodeUp仓库中,进入“设置”页面,找到“Webhooks”选项。
- 添加Webhook,指向阿里云CI/CD工具的Webhook地址(如果使用阿里云CI/CD工具)。
步骤 2:配置CI/CD流水线
2.1 配置前端项目CI/CD
-
创建前端Dockerfile:
- 在前端项目根目录下创建
Dockerfile,内容如下:# 基于官方Nginx镜像 FROM nginx:alpine# 将构建好的dist文件夹复制到Nginx的默认静态文件目录 COPY dist /usr/share/nginx/html# 暴露80端口 EXPOSE 80# 启动Nginx CMD ["nginx", "-g", "daemon off;"]
- 在前端项目根目录下创建
-
配置CI/CD流水线:
- 在CodeUp中,进入项目的“CI/CD”页面,选择“流水线配置”。
- 创建流水线任务,配置如下:
- 任务1:安装依赖并打包前端项目:
- 配置任务,选择Node.js运行环境。
- 构建命令:
npm install npm run build - 设置触发条件为特定标签(如
v*)。 - 配置输出路径为
dist文件夹。
- 任务2:构建前端Docker镜像:
- 使用Docker任务,将
dist文件夹打包为Nginx镜像。 - 镜像名称格式:
<阿里云镜像仓库地址>/frontend:<版本号>。 - 推送到阿里云容器镜像服务。
- 使用Docker任务,将
- 任务3:推送镜像到阿里云容器镜像服务:
- 配置Docker镜像推送任务,将前端镜像推送到阿里云容器镜像服务。
- 任务1:安装依赖并打包前端项目:
2.2 配置后端项目CI/CD
-
创建后端Dockerfile:
- 在后端项目根目录下创建
Dockerfile,内容如下:# 基于官方OpenJDK镜像 FROM openjdk:17-jdk-alpine# 将构建好的JAR文件复制到镜像中 COPY target/*.jar app.jar# 暴露8080端口 EXPOSE 8080# 启动Spring Boot应用 CMD ["java", "-jar", "app.jar"]
- 在后端项目根目录下创建
-
配置CI/CD流水线:
- 在CodeUp中,进入项目的“CI/CD”页面,选择“流水线配置”。
- 创建流水线任务,配置如下:
- 任务1:安装依赖并打包后端项目:
- 配置任务,选择Java运行环境。
- 构建命令:
mvn clean package - 设置触发条件为特定标签(如
v*)。
- 任务2:构建后端Docker镜像:
- 使用Docker任务,将
target目录下的*.jar文件打包为Docker镜像。 - 镜像名称格式:
<阿里云镜像仓库地址>/backend:<版本号>。 - 推送到阿里云容器镜像服务。
- 使用Docker任务,将
- 任务3:推送镜像到阿里云容器镜像服务:
- 配置Docker镜像推送任务,将后端镜像推送到阿里云容器镜像服务。
- 任务1:安装依赖并打包后端项目:
步骤 3:配置环境变量
- 在CodeUp中配置环境变量:
- 在CodeUp项目的“设置”页面中,找到“环境变量”选项。
- 添加以下环境变量:
ALIYUN_ACR_USERNAME:阿里云容器镜像服务的用户名。ALIYUN_ACR_PASSWORD:阿里云容器镜像服务的密码。ALIYUN_ACR_REGISTRY:阿里云容器镜像服务的仓库地址。
- 这些环境变量将用于Docker镜像的推送和拉取操作。
步骤 4:测试CI/CD流程
-
推送代码到CodeUp:
- 在本地仓库中,为前端和后端项目分别打上特定标签(如
v1.0.0)。 - 推送代码到CodeUp仓库:
git tag v1.0.0 git push origin v1.0.0
- 在本地仓库中,为前端和后端项目分别打上特定标签(如
-
监控流水线执行:
- 在CodeUp的CI/CD页面,查看流水线的执行情况。
- 确保前端项目打包成功,并构建为Nginx Docker镜像。
- 确保后端项目打包成功,并构建为Spring Boot Docker镜像。
- 确保Docker镜像成功推送到阿里云容器镜像服务。
步骤 5:部署到Docker环境
-
拉取Docker镜像:
- 在目标服务器上,拉取前端和后端Docker镜像:
docker pull <阿里云镜像仓库地址>/frontend:v1.0.0 docker pull <阿里云镜像仓库地址>/backend:v1.0.0
- 在目标服务器上,拉取前端和后端Docker镜像:
-
运行Docker容器:
- 启动前端容器:
docker run -d -p 80:80 --name frontend <阿里云镜像仓库地址>/frontend:v1.0.0 - 启动后端容器:
docker run -d -p 8080:8080 --name backend <阿里云镜像仓库地址>/backend:v1.0.0
- 启动前端容器:
步骤 6:优化和扩展
-
添加测试阶段:
- 在CI/CD流水线中,为前端和后端项目添加测试任务。
- 前端项目可以运行单元测试和端到端测试。
- 后端项目可以运行单元测试和集成测试。
-
配置多环境部署:
- 使用环境变量和配置文件,支持开发、测试和生产环境的部署。
- 例如,通过
.env文件管理不同环境的配置。
-
集成更多工具:
- 根据项目需求,集成代码质量检查工具(如SonarQube)。
- 集成自动化测试工具(如Jest、Mocha)。
通过以上步骤,可以实现前端和后端项目的自动化打包、镜像构建和部署,提高开发和运维效率。
相关文章:
【保姆级】阿里云codeup配置Git的CI/CD步骤
以下是通过阿里云CodeUp的Git仓库进行CI/CD配置的详细步骤,涵盖前端(Vue 3)和后端(Spring Boot)项目的自动化打包,并将前端打包结果嵌入到Nginx的Docker镜像中,以及将后端打包的JAR文件拷贝至Do…...
使用STM32CubeMX+DMA+空闲中断实现串口接收和发送数据(STM32G070CBT6)
1.STM32CubeMX配置 (1)配置SYS (2)配置RCC (3)配置串口,此处我用的是串口4,其他串口也是一样的 (4)配置DMA,将串口4的TX和RX添加到DMA中 &#…...
【视觉提示学习】3.21论文随想
. . Frontiers of Information Technology & Electronic Engineering. 2024, 25(1): 42-63 https://doi.org/10.1631/FITEE.2300389 中文综述,根据里面的架构,把视觉提示学习分成两类,一类是单模态提示学习(以vit为代表&…...
(一)丶Windows安装RabbitMQ可能会遇到的问题
一丶可能会忘了配置ERLang的环境变量 二丶执行命令时报错 第一步 rabbitmq-plugins enable rabbitmq_management 第二部 rabbitmqctl status 三丶修改.erlang.cookie 文件 1.找到C盘目下的.erlang.cookie文件 C:\Users\admin\.erlang.cookie C:\Windows\System32\config\sys…...
Mistral AI发布开源多模态模型Mistral Small 3.1:240亿参数实现超越GPT-4o Mini的性能
法国人工智能初创公司Mistral AI于2025年3月正式推出新一代开源模型Mistral Small 3.1 ,该模型凭借240亿参数的轻量级设计,在多项基准测试中表现优异,甚至超越了Google的Gemma 3和OpenAI的GPT-4o Mini等主流专有模型。 1、核心特性与优势 多…...
如何在IPhone 16Pro上运行python文件?
在 iPhone 16 Pro 上运行 Python 文件需要借助第三方工具或远程服务,以下是具体实现方法和步骤: 一、本地运行方案(无需越狱) 使用 Python 编程类 App 以下应用可在 App Store 下载,支持直接在 iPhone 上编写并运行 …...
springboot整合mybatis-plus【详细版】
目录 一,简介 1. 什么是mybatis-plus2.mybatis-plus特点 二,搭建基本环境 1. 导入基本依赖:2. 编写配置文件3. 创建实体类4. 编写controller层5. 编写service接口6. 编写service层7. 编写mapper层 三,基本知识介绍 1. 基本注解 T…...
视频剪辑行业的现状与进阶之路:一个双视角分析
视频剪辑行业的现状与进阶之路:一个双视角分析 一、现状解析 商业角度分析 成本控制 培训需要投入时间和人力成本 快节奏的市场环境要求快速产出 人员流动性大,培训投入可能无法获得长期回报 市场需求 大量内容需要快速产出 标准化的剪辑模板更容易管理 …...
k近邻图(knn-graph)和局部线性嵌入图(LLE-graph)的相似性和区别
K 近邻图(KNN - graph)和局部线性嵌入图(LLE - graph)是用于构建数据点之间关系图的两种方法。 1. k近邻图(knn-graph) 核心思想:k近邻图通过计算样本之间的距离来构建图。具体来说,…...
Qt之MVC架构MVD
什么是MVC架构: MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controll…...
使用 Apktool 反编译、修改和重新打包 APK
使用 Apktool 反编译、修改和重新打包 APK 在 Android 逆向工程和应用修改过程中,apktool 是一个强大的工具,它允许我们解包 APK 文件、修改资源文件或代码,并重新打包成可安装的 APK 文件。本文将介绍如何使用 apktool 进行 APK 反编译、修…...
深度解析学术论文成果评估(Artifact Evaluation):从历史到现状
深度解析学术论文成果评估(Artifact Evaluation):从历史到现状 引言 在计算机科学和工程领域的学术研究中,可重复性和可验证性越来越受到重视。随着实验性研究的复杂性不断增加,确保研究成果可以被其他研究者验证和构建变得尤为重要。这一需…...
二分查找上下界问题的思考
背景 最近在做力扣hot100中的二分查找题目时,发现很多题目都用到了二分查找的变种问题,即二分查找上下界问题,例如以下题目: 35. 搜索插入位置 74. 搜索二维矩阵 34. 在排序数组中查找元素的第一个和最后一个位置 它们不同于查找…...
关于FastAPI框架的面试题及答案解析
FastAPl是一个现代、快速(高性能)的Web框架,用于构建API,基于Python3.7+的类型提示功能。它由Python开发者SebastianRamirez创建,并且使用了Starlette作为其核心组件以及Pydantic进行数据验证。 文章目录 基础篇1. FastAPI的核心优势是什么?2. 如何定义一个GET请求路由?…...
Ubuntu检查并启用 Nginx 的stream模块或重新安装支持stream模块的Nginx
stream 模块允许 Nginx 处理 TCP 和 UDP 流量,常用于负载均衡和端口转发等场景。本文将详细介绍如何检查 Nginx 是否支持 stream 模块,以及在需要时如何启用该模块。 1. 检查 Nginx 是否支持 stream 模块 首先,需要确认当前安装的 Nginx 是…...
HashMap添加元素的流程图
文章目录 JDK7 vs JDK8 的 HashMap 结构变化Java8 中哈希表的红黑树优化机制HashMap 添加元素的完整流程解析1. 计算 key 的哈希值并确定索引2. 检查该索引位置是否已有元素3. 处理哈希冲突4. 判断当前存储结构(链表还是红黑树)5. 判断链表长度是否超过 …...
(八)Set 的使用
Set 的使用 Set 的特点 主要功能:去除重复内容。特性:无序且不支持重复的集合,不能通过索引访问元素。 示例代码 void main() {// 创建一个包含重复元素的列表List<String> fruits [香蕉, 苹果, 西瓜, 香蕉, 苹果, 香蕉, 苹果];//…...
Spring Boot 集成 Kafka 消息发送方案
一、引言 在 Spring Boot 项目中,Kafka 是常用的消息队列,可实现高效的消息传递。本文介绍三种在 Spring Boot 中使用 Kafka 发送消息的方式,分析各自优缺点,并给出对应的 pom.xml 依赖。 二、依赖引入 在 pom.xml 中添加以下依赖: <dependencies><!-- Sprin…...
面向医药仓储场景下的药品分拣控制策略方法 研究(大纲)
面向医药仓储场景下的药品分拣控制策略方法研究 基于多机器人协同与智能调度的分拣系统设计 第一章 绪论 1.1 研究背景与意义 医药仓储自动化需求: 人工分拣效率低、出错率高(如药品批次混淆、过期风险)温控药品(如疫苗、生物制…...
AI大模型介绍
大模型介绍 大模型是指具有大规模参数和复杂计算结构的机器学习模型,通常由深度神经网络构建而成,拥有数十亿甚至数千亿个参数 开发大模型不是从0开始,是建立在已有的大模型基座模型上做开发,构建企业知识库(向量数据库…...
Python日期时间向前向后N个月及对应月初和月末
Python日期和时间的计算主要使用自带的datetime和calendar库,部分需要借助第三方dateutil库。下面具体说明时间的加减运算,月份的起始和结束日期,向前向后移动的时间间隔等,代码如下: from datetime import date, dat…...
OpenPCDet详细部署与复现
OpenPCDet简介 OpenPCDet是一个用于3D目标检测的开源工具箱,它提供了多种数据集的加载器,支持多种模型,并且易于扩展。 本人使用硬件与环境 Linux操作系统(Ubuntu20.04) Python环境(Anaconda下独立创建&…...
同旺科技USB to I2C 适配器 ---- 指令之间延时功能
所需设备: 内附链接 1、同旺科技USB to I2C 适配器 1、指令之间需要延时发送怎么办?循环过程需要延时怎么办?如何定时发送?现在这些都可以轻松解决; 2、只要在 “发送数据” 栏的Delay单元格里面输入相应的延迟时间就…...
网络华为HCIA+HCIP NFV
目录 NFV关键技术:虚拟化 NFV关键技术:云化 NFV架构 NFV标准架构 编辑 NFV架构功能模块 NFV架构接口 NFV关键技术:虚拟化 在NFV的道路上,虚拟化是基础,云化是关键。传统电信网络中,各个网元都是…...
MySQL0基础学习记录-下载与安装
下载 下载地址: (Windows)https://dev.mysql.com/downloads/file/?id536787 安装 直接点next,出现: 点execute 然后一直next到这页: next 然后需要给root设置一个密码: 在next。。很多页…...
【万字总结】前端全方位性能优化指南(五)——HTTP/3+QUIC、0-RTT会话恢复、智能压缩决策树
前言 在5G与边缘计算重塑网络格局的今天,传统TCP协议已成为性能跃迁的最后瓶颈。HTTP/3凭借QUIC协议实现传输层革新,通过UDP多路复用+零RTT握手,在弱网环境下仍可保持90%以上的传输效率,头部企业实测首屏加载时间降低40%。本章聚焦三大突破性实践:从Nginx/K8s集群的HTTP/3…...
集成学习(下):Stacking集成方法
一、Stacking的元学习革命 1.1 概念 Stacking(堆叠法) 是一种集成学习技术,通过组合多个基学习器(base learner)的预测结果,并利用一个元模型(meta-model)进行二次训练,…...
centos 7 搭建FTP user-list用户列表
在 CentOS 7 上搭建基于 user_list 的 FTP 用户列表,你可以按以下步骤操作: 1. 安装 vsftpd 服务 若还未安装 vsftpd,可以使用以下命令进行安装: bash yum install -y vsftpd2. 启动并设置开机自启 vsftpd 服务 bash systemctl…...
CUDA编程面试高频30题
1. 什么是CUDA?它与GPU的关系是什么? 答: CUDA(Compute Unified Device Architecture)是由NVIDIA开发的一种并行计算平台和应用程序接口模型。它允许开发者利用NVIDIA GPU进行通用计算任务,而不仅仅是图形渲染。CUDA提…...
PageHelper插件依赖引入不报错,但用不了
情况: 父模块pom. Xml 引入1. 4. 0以上版本的pagehelper-spring-boot-starter。 要用到插件的子模块,去掉版本号,引入和父模块一样的依赖。 引入成功,没有报错,但是打开右边的maven里面没有找到PageHelper插件。 终端清空并重…...
