基于 gitee 的 CI/CD

embedded/2025/2/11 15:25:12/

gitee__CICD__0">基于 gitee 的 CI/CD 流程简介。

CI/CD 流程是指在软件开发过程中,通过自动化的方式实现代码的持续集成、持续部署和持续交付。
CI/CD 流程通常包括以下几个步骤:

  1. 代码提交:开发者将代码提交到代码仓库,如 Git、SVN 等。
  2. 代码构建:CI/CD 服务器接收到代码提交后,自动触发代码构建。代码构建通常包括编译、测试、打包等步骤。
  3. 代码测试:CI/CD 服务器执行代码测试,确保代码的质量和稳定性。(暂未实现:测试代码需要在服务器上运行)
  4. 代码部署:CI/CD 服务器将代码部署到测试环境或生产环境中。(暂未实现:接受部署的主机需要可以连接到公网)

创建代码仓库

  1. gitee 中创建一个代码仓库, 如 “test_CI_CD”
  2. 上传demo code 到代码仓库
#include <iostream>
#include <chrono>
#include <ctime>
#include <iomanip>int main() {auto now = std::chrono::system_clock::now();// 将时间点转换为 time_tstd::time_t now_time = std::chrono::system_clock::to_time_t(now);// 将 time_t 转换为本地时间std::tm* local_time = std::localtime(&now_time);// 打印当前时间std::cout << "Build time: " << std::put_time (local_time, "%Y-%m-%d %H:%M:%S") << std::endl;std::cout << "Hello, World!" << std::endl;std::cout << "Current version: V1.00.01" << std::endl;return 0;
}
  1. 创建 Makefile 文件
# 定义编译器
CXX = g++# 定义编译选项
CXXFLAGS = -std=c++11 -Wall# 定义目标文件名
TARGET = myprogram# 定义源文件
SRCS = main.cpp# 定义目标文件和输出目录
OBJDIR = build
OBJS = $(addprefix $(OBJDIR)/, $(SRCS:.cpp=.o))# 默认目标
all: $(TARGET)# 创建输出目录
$(OBJDIR):mkdir -p $@# 链接目标文件生成可执行文件
$(TARGET): $(OBJS)$(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJS) -lstdc++# 编译源文件生成目标文件
$(OBJDIR)/%.o: %.cpp | $(OBJDIR)$(CXX) $(CXXFLAGS) -c $< -o $@# 清理生成的文件
clean:rm -rf $(OBJDIR) $(TARGET)

创建 CI/CD 流程

1. 流水线

Gitee提供了一个在线的流水线编辑器,可以通过它来创建流水线。
在这里插入图片描述

使用模版创建流水线后,会在您的代码库产生一次提交,根目录下生成.workflow文件夹,并分别产生MasterPipeline.yml、BranchPipeline.yml、PRPipeline.yml三个流水线描述文件。之后,您可以提交代码或发起 PR 感受 Gitee Go 带来的便捷啦!

2. 修改 MasterPipeline.yml 文件

现在选择 MasterPipeline.yml 文件,在master push时,自动执行编译和发布;修改为如下内容:
在这里插入图片描述

2.1 GCC构建

因demo code 中使用了c++,需要使用gcc编译。
在这一步中,主要修改的时构建命令:

 g++ --versionmake

其他步骤,如上传制品,发布等,暂未修改。

3 最终生成的文件

3.1 文件布局

在这里插入图片描述

3.2 最终的 MasterPipeline.yml 文件

version: '1.0'
name: master-pipeline
displayName: MasterPipeline
triggers:trigger: autopush:branches:include:- master
stages:- name: compiledisplayName: 编译strategy: naturallytrigger: autosteps:- step: build@gccname: build_gccdisplayName: GCC 构建gccVersion: '9.4'commands:- ' g++ --version'- ''- ' make'artifacts:- name: BUILD_ARTIFACTpath:- myprogramcaches: []notify: []strategy:retry: '0'- step: publish@general_artifactsname: publish_general_artifactsdisplayName: 上传制品dependArtifact: BUILD_ARTIFACTartifactName: outputstrategy: {}dependsOn: build_gcc- name: releasedisplayName: 发布strategy: naturallytrigger: autosteps:- step: publish@release_artifactsname: publish_release_artifactsdisplayName: 发布dependArtifact: outputversion: 1.0.0.0autoIncrement: truestrategy: {}

验证

1. 查看构建历史

完成上述步骤后,在 gitee 中提交代码,即可看到流水线的运行结果。
在这里插入图片描述

2. 查看gcc构建过程

在这里插入图片描述

在这里插入图片描述

3. 查看制品

在这里插入图片描述

4. 下载制品并验证

在这里插入图片描述

Gitee 帮助中心

Gitee 帮助中心


http://www.ppmy.cn/embedded/161358.html

相关文章

linux_kernel驱动开发_驱动调试

调试思路 对比开发板检查差异性。用试波器或万用表调试。配合硬件工程师共同解决问题。 开发思路 先在config中打开相应宏开关。设备树中加入相应配置即可。&#xff08;可以扩展讲解宏开关有无生效&#xff09; pcie 先lspci查看是否注册成功。然后才能看到其pcie设备 。…

Spring容器初始化扩展点:ApplicationContextInitializer

目录 一、什么是ApplicationContextInitializer&#xff1f;1、核心作用2、适用场景 二、ApplicationContextInitializer的使用方式1、实现ApplicationContextInitializer接口2、注册初始化器 三、ApplicationContextInitializer的执行时机四、实际应用案例1、动态设置环境变量…

springtask基本使用

Spring Task 介绍与基本使用 1. 什么是 Spring Task&#xff1f; Spring Task 是 Spring 框架提供的 轻量级任务调度模块&#xff0c;用于在应用程序中实现定时任务、周期性任务或延迟任务。它通过注解和配置简化了任务调度的开发&#xff0c;适用于单机环境下的简单调度需求。…

远程 IO 模块:汽车零部件产线的高效生产引擎

在汽车零部件生产的激烈竞争中&#xff0c;效率与质量是企业立足的根本。传统生产模式在面对日益增长的市场需求时&#xff0c;逐渐显露出短板。而明达技术MR20远程 IO 模块的出现&#xff0c;如同一束强光&#xff0c;照亮了汽车零部件生产高效发展的新道路。 MR20远程 IO 模块…

【Kubernetes的SpringCloud最佳实践】有Service是否还需要Eureka?

在 Kubernetes 中部署 Spring Cloud 微服务时&#xff0c;是否还需要 Eureka 取决于具体场景和架构设计。以下是详细的实践建议和结论&#xff1a; 1. Kubernetes 原生服务发现 vs Eureka Kubernetes 自身提供了完善的服务发现机制&#xff08;通过 Service 资源&#xff09;&…

【cocos creator】拖拽排序列表

DEMO下载 GameCtrl.ts import ItemCtrl from "./ItemCtrl";const { ccclass, property } cc._decorator;ccclass export default class GameCtrl extends cc.Component {property(cc.Node)content: cc.Node null;property(cc.Node)prefab: cc.Node null;arr []…

Linux 安装 Ollama

1、下载地址 Download Ollama on Linux 2、有网络直接执行 curl -fsSL https://ollama.com/install.sh | sh 命令 3、下载慢的解决方法 1、curl -fsSL https://ollama.com/install.sh -o ollama_install.sh 2、sed -i s|https://ollama.com/download/ollama-linux|https://…

高效利用Python爬虫获取淘宝店铺详情:电商数据挖掘

在电商行业竞争日益激烈的当下&#xff0c;精准且高效地获取淘宝店铺详情对于商家和数据分析师来说至关重要。无论是进行市场调研、优化商品布局&#xff0c;还是制定竞争策略&#xff0c;店铺详情数据的全面掌握都是关键。Python爬虫技术以其强大的功能和灵活性&#xff0c;成…