kangyana / daily-question

When your heart is set on something, you get closer to your goal with each passing day.
https://www.webpack.top
MIT License
3 stars 0 forks source link

【Q131】请问什么是 CICD #131

Open kangyana opened 1 year ago

kangyana commented 1 year ago

1. 什么是 CICD ?

CICD 一般合称,无需特意区分二者区别。 从开发、测试到上线的过程中,借助于 CICD 进行一些自动化处理,保障项目质量。

CICD 与 git 集成在一起,可理解为服务器端的 git hooks:当代码 push 到远程仓库后,借助 WebHooks 对当前代码在构建服务器(即 CI 服务器,也称作 Runner)中进行自动构建、测试及部署等。

Alt

它有若干好处:

Alt

由于近些年来 CICD 的全面介入,项目开发的工作流就是 CICD 的工作流,请看一个比较完善的 CICD Workflow。

Alt

2. CICD 工具

CICD 集成于 CICD 工具及代码托管服务。 CICD 有时也可理解为进行 CICD 的构建服务器,而提供 CICD 的服务,如以下产品,将会提供构建服务与 github/gitlab 集成在一起。

如果你们公司没有 CICD 基础设置,那么你可以尝试 github 免费的 CICD 服务: github actions (opens new window)。 公司一般以 gitlab CI 作为 CICD 工具,此时需要自建 gitlab Runner 作为构建服务器。

3. 一段简单的 CICD 配置

每一家 CICD 产品,都有各自的配置方式,但是总体上用法差不多。 以下 CI 脚本指当在 master 有代码变更时,自动部署上线。

deploy:
  stage: deploy
  only:
    - master
  script:
    - docker build -t harbor.shanyue.tech/fe/devtools-app
    - docker push harbor.shanyue.tech/fe/devtools-app
    - helm upgrade -install devtools-app-chart .