Hits

gitlab ci/cd

概数

gitlab是常用的开源代码管理工具

  • CI (Continuous Integration)(持续构建):代码提交后触发自动化的单元测试,代码预编译,构建镜像,上传镜像等。
  • CD(Continuous Delivery)(持续发布):持续发布则指构建好的程序发布到各种环境,如预发布、正式环境等。

特性

gitlab ci/cd 具有以下特性:

  • 跨平台支持,只要支持go语言的平台均可以在上面进行ci
  • 多语言支持,构建时是通过脚本出发,因此基本上支持所有的语言
  • Pipeline,可以通过不同的阶段形成工作流
  • 支持docker,可以构建docker镜像,同时也支持部署到Kubernets集群

结构

https://img.lg1024.com/ci-cd-architecture_2x.png

Gitlab ci/cd 是由独立的runner程序完成,runner采用go语言编写,因此可以很好的进行跨平台,通常可以将runner部署到任何gitlab server之外的服务器,从而避免对gitlab server的影响。

runner 项目案例:https://gitlab.com/gitlab-org/gitlab-runner

gitlab ci/cd流程

gitlab通过在项目的根目录放置.gitlab-ci.yml文件来触发pipeline,文件书写遵循yml语言,因此gitlab ci/cd只需要两步:

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

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

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

gitlab-ci.yml具体写法参考:https://docs.gitlab.com/ee/ci/yaml/README.html

runner配置

runner配置主要三步:

总结

gitlab ci/cd 基本上可以完成完整的构建与发布,但也会存在一些缺点

  • 发布部分:需要将程序部署到哪个服务器固化到.gitlab-ci.yml文件中,另外,如果runner上直接进行部署,那么runner所在的机器需要直接或间接访问发布的机器,存在安全问题。
  • 权限问题等。

本文链接:参与评论 »

--EOF--

Comments