Categories: DevOpsDockerGitGitLab

Git与Gitlab CI持续集成

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支持很好,很灵活,对应容器化的实践是一个很好的选择。

5.0
03
Git refusing to merge unrelated histories
GITOPS的容器化是什么?
嘻嘻

嘻嘻IT: 笔者是一个工作七八年的程序猿老鸟,从事涉及的技术栈主要包括PHP、Linux、Devops等,喜欢研究新技术,尝试新技术,提升技术自动化和开发效率,致力于write less,do more! 技术每年都会层出不穷,领域划分的越来越细,不可能学习所有的东西,保持对技术的好奇心,理解技术中核心思想,做一个有深度,有思想的开发!

Recent Posts

Tabnine是一款AI编程助手

Tabnine是一款最新的AI…

41分钟 ago

Adrenaline一个AI开发工具

Adrenaline是一个革命…

49分钟 ago

Kubeflow一个简化Kubernetes学习工作流程工具

在机器学习(ML)领域,有效地…

58分钟 ago

CodiumAI一个AI测试工具

CodiumAI不完全依赖于手…

1小时 ago

Writesonic一个AI创作助手

Writesonic是一个先进…

1小时 ago

4个Linux终端清屏的命令

就像任何其他操作系统一样,Li…

10小时 ago