数据人与超自然意识 发表于 2025-4-19 17:24:38

基于 gitee 的 CI/CD

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

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

[*]代码提交:开辟者将代码提交到代码仓库,如 Git、SVN 等。
[*]代码构建:CI/CD 服务器吸收到代码提交后,自动触发代码构建。代码构建通常包括编译、测试、打包等步调。
[*]代码测试:CI/CD 服务器实行代码测试,确保代码的质量和稳定性。(暂未实现:测试代码需要在服务器上运行)
[*]代码部署:CI/CD 服务器将代码部署到测试情况或生产情况中。(暂未实现:担当部署的主机需要可以连接到公网)
创建代码仓库


[*]在 gitee 中创建一个代码仓库, 如 “test_CI_CD”
[*]上传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;
}

[*]创建 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提供了一个在线的流水线编辑器,可以通过它来创建流水线。
https://i-blog.csdnimg.cn/direct/6f4610b2dafc4637a94826ad5ead4684.png#pic_center
使用模版创建流水线后,会在您的代码库产生一次提交,根目次下天生.workflow文件夹,并分别产生MasterPipeline.yml、BranchPipeline.yml、PRPipeline.yml三个流水线描述文件。之后,您可以提交接码或发起 PR 感受 Gitee Go 带来的便捷啦!
2. 修改 MasterPipeline.yml 文件

现在选择 MasterPipeline.yml 文件,在master push时,自动实行编译和发布;修改为如下内容:
https://i-blog.csdnimg.cn/direct/f1e221c79c6b4c50aec161832da518ba.png#pic_center
2.1 GCC构建

因demo code 中使用了c++,需要使用gcc编译。
在这一步中,紧张修改的时构建下令:
g++ --version

make
其他步调,如上传成品,发布等,暂未修改。
3 最终天生的文件

3.1 文件布局

https://i-blog.csdnimg.cn/direct/c8822b992beb42619b8c7c7501d74901.png#pic_center
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 中提交接码,即可看到流水线的运行效果。
https://i-blog.csdnimg.cn/direct/0384ccebeedd4681aa6bf1e5a8312a10.png#pic_center
2. 检察gcc构建过程

https://i-blog.csdnimg.cn/direct/180108feaf424e61b3d31fc48b8ae299.png#pic_center
https://i-blog.csdnimg.cn/direct/2fcfbb252d4f4705aa883ac90c083ff8.png#pic_center
3. 检察成品

https://i-blog.csdnimg.cn/direct/4529174503e540e58809832abd8736b9.png#pic_center
4. 下载成品并验证

https://i-blog.csdnimg.cn/direct/2a1fc046202745a9ab2599de63296f4a.png#pic_center
Gitee 帮助中央

Gitee 帮助中央

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 基于 gitee 的 CI/CD