当前位置: 首页 > article >正文

基于 gitee 的 CI/CD

基于 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_t
    std::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++ --version

 make

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

3 最终生成的文件

3.1 文件布局

在这里插入图片描述

3.2 最终的 MasterPipeline.yml 文件

version: '1.0'
name: master-pipeline
displayName: MasterPipeline
triggers:
  trigger: auto
  push:
    branches:
      include:
        - master
stages:
  - name: compile
    displayName: 编译
    strategy: naturally
    trigger: auto
    steps:
      - step: build@gcc
        name: build_gcc
        displayName: GCC 构建
        gccVersion: '9.4'
        commands:
          - ' g++ --version'
          - ''
          - ' make'
        artifacts:
          - name: BUILD_ARTIFACT
            path:
              - myprogram
        caches: []
        notify: []
        strategy:
          retry: '0'
      - step: publish@general_artifacts
        name: publish_general_artifacts
        displayName: 上传制品
        dependArtifact: BUILD_ARTIFACT
        artifactName: output
        strategy: {}
        dependsOn: build_gcc
  - name: release
    displayName: 发布
    strategy: naturally
    trigger: auto
    steps:
      - step: publish@release_artifacts
        name: publish_release_artifacts
        displayName: 发布
        dependArtifact: output
        version: 1.0.0.0
        autoIncrement: true
        strategy: {}

验证

1. 查看构建历史

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

2. 查看gcc构建过程

在这里插入图片描述

在这里插入图片描述

3. 查看制品

在这里插入图片描述

4. 下载制品并验证

在这里插入图片描述

Gitee 帮助中心

Gitee 帮助中心


http://www.kler.cn/a/540442.html

相关文章:

  • 集成右键的好用软件,支持多线程操作!
  • 基于html写一个音乐动态爱心盒子有音乐和导航基本功能实现
  • Web前端开发--HTML
  • win32汇编环境,对线程的创建与操作示例一
  • Redis 集群(Cluster)和基础的操作 部署实操篇
  • Qt通过FFmpeg打开RTSP并截图一帧作为背景
  • 球弹跳高度的计算(信息学奥赛一本通-1085)
  • 【JavaScript】this 指向由入门到精通
  • HTML标题标签(<h1>、<h2>、<h3>)的正确使用策略与SEO优化指南
  • 网络安全 — 安全架构
  • 实现双向数据绑定
  • 局域网使用Ollama(Linux)
  • 智慧校园与理工大学:信息技术在高等教育中的应用
  • 使用Python爬虫获取淘宝商品评论API接口数据
  • 前瞻技术解密:未来生活的改变与机遇
  • 1-portal认证功能
  • CPLD实现SPI通信
  • 使用XMLHttpRequest发送带查询参数的 GET 请求并动态展示数据
  • [LLM面试题] 指示微调(Prompt-tuning)与 Prefix-tuning区别
  • ndk 编译opencv(去除libandroid.so mediandk依赖)
  • 单片机复杂项目的软件分层设计
  • 构建jdk17包含maven的基础镜像
  • [安装FlashAttention] CUDA版本 和 Nvidia驱动版本
  • [Unity角色控制专题] 详细解释如何使用Character Controller配合脚本实现跳跃功能与落地抖动?
  • docker的卷映射如何手动指定位置
  • 信创领域的PostgreSQL管理员认证