Git与Gitlab CI持续集成
嘻嘻发布于2019-09-29
最后更新于2019年9月27日
浏览Git是当前非常流行的版本管理工具,很多主流的大公司都在使用,而Gitlab是一款非常流行的Git托管工具,所以Git与Gitlab的结合是必然,而CI、CD是Gitlab必须支持的功能。
CI与CD是什么?
- CI(Continuous Integration)
把代码集成到一个共享的仓库,并且每次代码发生变化自动执行构建、测试的流程。 - CD(Continuous Delivery & Continuous Deployment)
自动化的把代码发布到一个环境,当代码发生生变化,自动更新发布的环境。
Gitlab CI
GitLab CI是Gitlab托管工具提供对Git的CI/CD的支持,主要有一些特性:
- 支持多语言、多平台
- 并行执行,多个构建放在多台机器上执行
- 实时log,很方便调试和跟踪
- 支持流水线
- 版本化管道
- 支持docker
- 支持docker镜像仓库
- 自动扩展
- 保护变量
- 多环境支持
GitLab Runner
执行具体的构建是有Gitla Runner来完成,可以注册不同的Runner来完成不同构建,具体参考https://docs.gitlab.com/runner/install/
.gitlab-ci.yml
.gitlab-ci.yml是用来描述构建的过程。 具体的一个例子如下:
stages:
- install_deps
- test
- build
- deploy_test
- deploy_production
cache:
key: ${CI_BUILD_REF_NAME}
paths:
- node_modules/
- dist/
# 安装依赖
install_deps:
stage: install_deps
only:
- develop
- master
script:
- npm install
# 运行测试用例
test:
stage: test
only:
- develop
- master
script:
- npm run test
# 编译
build:
stage: build
only:
- develop
- master
script:
- npm run clean
- npm run build:client
- npm run build:server
# 部署测试服务器
deploy_test:
stage: deploy_test
only:
- develop
script:
- pm2 delete app || true
- pm2 start app.js --name app
# 部署生产服务器
deploy_production:
stage: deploy_production
only:
- master
script:
- bash scripts/deploy/deploy.sh
GitLab CI可以很好支持以Git中心的CI/CD, 特别是对docker支持很好,很灵活,对应容器化的实践是一个很好的选择。