引言
GitLab CI/CD作为GitLab的核心功能之一,其提供了便捷的配置手段,以便进行持续集成和部署。接下来就来具体了解下GitLab CI/CD的核心概念,并以具体的Asp.Net Core Web项目为例,进行流水线配置,实现持续集成和持续部署。
CI/CD 核心概念
通过CI/CD可以对代码进行持续构建、测试和部署,提高从开发到部署的工作效率。CI/CD作为软件工程从持续方法论,其核心是持续集成、持续交付和持续部署。其中CI,对应Continuous Interartion(持续集成),是指通过对推送至仓库的每次更改进行自动构建和测试,及时捕获错误发现问题。CD,对应Continuous Delivery(持续交付)或Continuous Deployment(持续部署)。其中持续交付是在持续集成的基础上,也就是不仅会自动构建和测试应用,还可手动触发部署流程,进行应用部署。而持续部署相较于持续交付的差异在于部署是自动触发的。
GitLab CI/CD 工作流
GitLab CI/CD 正是对CI/CD方法论的实现,借助GitLab CI/CD,可以一站式完成应用的测试、构建和发布,实现持续集成、交付和部署。GitLab CI/CD 提供了通用的工作流,如下图所示,其中包含了GitLab流程中的主要步骤。
通过GitLab集成的敏捷工作流进行工作计划,比如创建里程碑、创建议题
修复完毕后,提交更改,触发持续集成,进行自动的构建和测试
通过持续交付,手动触发部署流程,将应用部署到预览环境
预览审核通过后,合并分支到主分支,触发持续部署,再次进行自动构建、测试,然后自动部署到生产环境。
在GitLab中是通过Pipeline(流水线)来配置项目的CI/CD流程,可以通过在项目根目录创建.gitlab-ci.yml
文件进行配置。一个流水线包含:Jobs(工作)和Stages(阶段)。其中Jobs用来定义做什么,通过另外一个组件Runner
来运行;Stages用来定义何时运行Jobs,也就是Jobs的运行顺序,如果一个Stage的所有Jobs运行成功,则自动运行至下一Stage,如果任意一个Job失败,下个Stage通常不会运行,管道会提前结束。