Gitlab CI/CD

1.概述

Gitlab是经常使用的开源git代码管理工具之一,随着发展也推出了ci/cd解决方案.
顾名思义具体来讲ci/cd主要完成如下两个工做.html

  • ci(持续构建)
    代码提交后触发自动化的单元测试,代码预编译,构建镜像,上传镜像等.
  • cd(持续发布)
    持续发布则指将构建好的程序发布到各类环境,如预发布环境,正式环境.

图片描述

2.特性

gitlab ci/cd具备如下特性git

  • 跨平台支持
    只要支持go语言的平台都可以在上面进行ci,目前基本涵盖了大部分的操做系统.
  • 多语言支持
    构建时是经过脚本触发,所以基本上支持全部的语言.
  • Pipeline
    能够经过不一样的阶段造成工做流
  • 支持docker
    能够构建docker镜像,同时也支持触发在Kubernetes容许.

全部特性具体见:
https://about.gitlab.com/feat...docker

3.结构

图片描述

gitlab ci/cd是由独立的runner程序完成,runner采用go语言编写,所以能够很好的进行跨平台,一般能够将runner部署到任何gitlab server以外的服务器,从而避免对gitlab server的影响.安全

runner项目见:
https://gitlab.com/gitlab-org...服务器

4.gitlab ci/cd流程

gitlab经过在项目的根目录放置.gitlab-ci.yml文件来触发pipline,文件书写遵循yml语法,所以,归纳来讲gitlab ci/cd只须要两步,app

  • 写好.gitlab-ci.yml文件,并放置到项目根目录
  • 配置好gitlab runner.

完成后,提交代码时会自动根据gitlab-ci.yml的触发条件进行执行相应的stage.工具

4.1 gitlab-ci.yml文件

stages:
  - test
  - build
  - deploy

test:
  stage: test
  script: echo "Running tests"
  only:
  - tags

build:
  stage: build
  script: echo "Building the app"
  only:
  - tags

deploy_staging:
  stage: deploy
  script:
    - echo "Deploy to staging server"
  environment:
    name: staging
    url: https://staging.example.com
  only:
  - tags

deploy_prod:
  stage: deploy
  script:
    - echo "Deploy to production server"
  environment:
    name: production
    url: https://example.com
  when: manual
  only:
  - tags

如上,是一个具备ci/cd功能的.gitlab-ci.yml文件的写法,gitlab

.gitlab-ci.yml的具体写法,以及关键字含义见:
https://docs.gitlab.com/ee/ci...单元测试

关于gitlab为何使用.gitlab-ci.yml,见:
https://about.gitlab.com/2015...测试

4.2 runner配置

runner配置主要分为三步:

5.总结

总的来讲,gitlab-ci基本上能够完成完整的构建及发布,但也会存在一些缺点:1.发布部分,须要将程序部署到哪一个服务器固化到.gitlab-ci文件中,另外,若是runner上直接进行部署,那么runner所在的机器则须要直接或间接的访问全部的发布的机器,这里存在必定安全问题.2.程序发布没有审计,对于小公司来讲,这问题可能不突出,可是当研发团队扩大,以及公司业务增长以后,对于发布过程的权限管理以及审计则显得很重要.

相关文章
相关标签/搜索