gitee__CICD__0">基于 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_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;
}
- 创建 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 帮助中心