基于 gitee 的 CI/CD

打印 上一主题 下一主题

主题 1771|帖子 1771|积分 5313

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

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

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


  • 在 gitee 中创建一个代码仓库, 如 “test_CI_CD”
  • 上传demo code 到代码仓库
  1. #include <iostream>
  2. #include <chrono>
  3. #include <ctime>
  4. #include <iomanip>
  5. int main() {
  6.     auto now = std::chrono::system_clock::now();
  7.    
  8.     // 将时间点转换为 time_t
  9.     std::time_t now_time = std::chrono::system_clock::to_time_t(now);
  10.    
  11.     // 将 time_t 转换为本地时间
  12.     std::tm* local_time = std::localtime(&now_time);
  13.    
  14.     // 打印当前时间
  15.     std::cout << "Build time: " << std::put_time (local_time, "%Y-%m-%d %H:%M:%S") << std::endl;
  16.     std::cout << "Hello, World!" << std::endl;
  17.     std::cout << "Current version: V1.00.01" << std::endl;
  18.     return 0;
  19. }
复制代码

  • 创建 Makefile 文件
  1. # 定义编译器
  2. CXX = g++
  3. # 定义编译选项
  4. CXXFLAGS = -std=c++11 -Wall
  5. # 定义目标文件名
  6. TARGET = myprogram
  7. # 定义源文件
  8. SRCS = main.cpp
  9. # 定义目标文件和输出目录
  10. OBJDIR = build
  11. OBJS = $(addprefix $(OBJDIR)/, $(SRCS:.cpp=.o))
  12. # 默认目标
  13. all: $(TARGET)
  14. # 创建输出目录
  15. $(OBJDIR):
  16.         mkdir -p $@
  17. # 链接目标文件生成可执行文件
  18. $(TARGET): $(OBJS)
  19.         $(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJS) -lstdc++
  20. # 编译源文件生成目标文件
  21. $(OBJDIR)/%.o: %.cpp | $(OBJDIR)
  22.         $(CXX) $(CXXFLAGS) -c $< -o $@
  23. # 清理生成的文件
  24. clean:
  25.         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编译。
在这一步中,紧张修改的时构建下令:
  1. g++ --version
  2. make
复制代码
其他步调,如上传成品,发布等,暂未修改。
3 最终天生的文件

3.1 文件布局


3.2 最终的 MasterPipeline.yml 文件

  1. version: '1.0'
  2. name: master-pipeline
  3. displayName: MasterPipeline
  4. triggers:
  5.   trigger: auto
  6.   push:
  7.     branches:
  8.       include:
  9.         - master
  10. stages:
  11.   - name: compile
  12.     displayName: 编译
  13.     strategy: naturally
  14.     trigger: auto
  15.     steps:
  16.       - step: build@gcc
  17.         name: build_gcc
  18.         displayName: GCC 构建
  19.         gccVersion: '9.4'
  20.         commands:
  21.           - ' g++ --version'
  22.           - ''
  23.           - ' make'
  24.         artifacts:
  25.           - name: BUILD_ARTIFACT
  26.             path:
  27.               - myprogram
  28.         caches: []
  29.         notify: []
  30.         strategy:
  31.           retry: '0'
  32.       - step: publish@general_artifacts
  33.         name: publish_general_artifacts
  34.         displayName: 上传制品
  35.         dependArtifact: BUILD_ARTIFACT
  36.         artifactName: output
  37.         strategy: {}
  38.         dependsOn: build_gcc
  39.   - name: release
  40.     displayName: 发布
  41.     strategy: naturally
  42.     trigger: auto
  43.     steps:
  44.       - step: publish@release_artifacts
  45.         name: publish_release_artifacts
  46.         displayName: 发布
  47.         dependArtifact: output
  48.         version: 1.0.0.0
  49.         autoIncrement: true
  50.         strategy: {}
复制代码
验证

1. 检察构建汗青

完成上述步调后,在 gitee 中提交接码,即可看到流水线的运行效果。

2. 检察gcc构建过程



3. 检察成品


4. 下载成品并验证


Gitee 帮助中央

Gitee 帮助中央

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

数据人与超自然意识

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表