Gitlab是经常使用的开源git代码管理工具之一,随着发展也推出了ci/cd解决方案.
顾名思义具体来讲ci/cd主要完成如下两个工做.html
gitlab ci/cd具备如下特性git
全部特性具体见:
https://about.gitlab.com/feat...docker
gitlab ci/cd是由独立的runner程序完成,runner采用go语言编写,所以能够很好的进行跨平台,一般能够将runner部署到任何gitlab server以外的服务器,从而避免对gitlab server的影响.安全
runner项目见:
https://gitlab.com/gitlab-org...服务器
gitlab经过在项目的根目录放置.gitlab-ci.yml文件来触发pipline,文件书写遵循yml语法,所以,归纳来讲gitlab ci/cd只须要两步,app
完成后,提交代码时会自动根据gitlab-ci.yml的触发条件进行执行相应的stage.工具
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...测试
runner配置主要分为三步:
总的来讲,gitlab-ci基本上能够完成完整的构建及发布,但也会存在一些缺点:1.发布部分,须要将程序部署到哪一个服务器固化到.gitlab-ci文件中,另外,若是runner上直接进行部署,那么runner所在的机器则须要直接或间接的访问全部的发布的机器,这里存在必定安全问题.2.程序发布没有审计,对于小公司来讲,这问题可能不突出,可是当研发团队扩大,以及公司业务增长以后,对于发布过程的权限管理以及审计则显得很重要.