GitLab是由GitLab公司开发的、基于Git的集成软件开发平台。另外,GitLab且具有wiki以及在线编辑、issue跟踪功能、CI/CD等功能。在2018年,GitLab被認為是一家部份是烏克蘭的独角兽企业。
CI/CD
GitLab CI/CD是GitLab内置的一款工具,用于通过持续方法论(continuous methodologies)的软件开发。 该持续方法论包含三个部分:持续集成、持续交付、持续部署。
- 持续集成(Continuous Integration,简称CI),每次在上传代码块到基于Git仓库时,持续集成 会运行脚本去构建、测试、校验代码,这些操作是在合并到默认分支之前进行的。
- 持续交付(Continuous Delivery,简称CD),在持续集成之后(即合并到默认分支之后),持续交付 将进行手动部署应用。
- 持续部署(Continuous Deployment,简称CD),在持续集成之后(即合并到默认分支之后),持续部署 将进行自动部署应用。
原理
当开发者配置了GitLab CI/CD,那么当开发者使用Git提交(commit),那么就会触发CI/CD相关的一系列操作。这一系列操作由GitLab Runner执行,相关配置记载于.gitlab-ci.yml文件中,执行的结果将在GitLab页面中展示。 每一次的提交(commit)将会触发一条流水线(pipeline),流水线是不同阶段(Stage)的任务(Job)的一个集合。 .pre 为第一阶段(译为:之前) 和 .post 最后阶段(译为:提交时),这两个阶段不需要被定义,也无法被修改。
示例如下:
stages:
- build
- test
- deploy
job 0:
stage: .pre
script: make something useful before build stage
job 1:
stage: build
script: make build dependencies
job 2:
stage: build
script: make build artifacts
job 3:
stage: test
script: make test
job 4:
stage: deploy
script: make deploy
job 5:
stage: .post
script: make something useful at the end of pipeline
任务(Job)可以构建Artifacts ,提供用户下载。 通过该操作可以达到 持续部署 的目的。
Runner 可安装在操作系统,也可以通过Docker的方式安装。当 Runner 安装后,需要将其注册在 GitLab 中,方可使用。Runner 有若干种执executor可供使用,如:Docker、Shell、SSH。
.gitlab-ci.ym 文件中通过 tags 关键词选择Runner。Runner 的相关配置在 config.toml 文件中记载。
与Docker整合
对基于Docker的项目 进行构建和测试,有几种方式。一种方式是,使用shell executor进行Docker CLI命令操作。 另一种方式就是使用Docker executor进行操作,它是官方推荐的操作,executor通过在Docker中使用“Docker-in-Docker”镜像进行Job相关操作。
事件
GitLab于2017年1月31日發佈一系列緊急通告稱,位於荷蘭的系統管理員因操作失誤而刪除了包含310GB產品資料的資料夾,在取消刪除操作後僅剩下4.5GB。运维人员之后检查发现,网站宣称和配备的多项备份措施均未正常运作或难以利用。GitLab在YouTube直播了恢復資料的過程。网站最终丢失了最后 6 小时的数据库数据(包括问题、合并请求、评论、片段等,不含代码库)。
2024年11月,一Gitlab公司员工杨州实名举报,公司CEO柳钢和副总裁何庆隐瞒美国身份,与中国中科院投资的国家重点企业中科星图开展合作,涉嫌危害中国国家安全,视频中提及中科星图为美国实体清单中禁止合作的单位,违反相关规定可能会被处以30万美元的罚款,但是双方合作的金额仅10万人民币,且需要中科星图对Gitlab开放相关航天数据和资料,引起网友热议。
2024年12月,GitLab向用户通知不再为中国大陆、香港、澳门的用户提供服务,用户必须在60日内迁移到本地公司「极狐」。
参考文献
外部連結
*
- [https://gitlab.com/gitlab-org/gitlab GitLab社区版的原始碼]
评论 (0)