GitLab

✍ dations ◷ 2024-12-23 18:23:41 #缺陷和问题跟踪软件,项目托管网站,版本控制,协作项目,社群网站,自由跨平台软件,用Ruby编程的自由软件,使用MIT许可证的软件

GitLab 是由 GitLab Inc.开发,一款基于 Git 的完全集成的软件开发平台(fully integrated software development platform)。 另外,GitLab 且具有wiki以及在线编辑、issue跟踪功能、CI/CD 等功能。Gitlab 和 Github的比较可以参考该网站。

GitLab CI/CD 是 GitLab 内置的一款工具,用于 通过 持续方法论(continuous methodologies)的软件开发。 该持续方法论包含三个部分:持续集成、持续交付、持续部署。

当开发者配置了 GitLab CI/CD,那么当开发者使用 git 提交(commit),那么就会触发 CI/CD 相关的一系列操作。 这一系列操作由 GitLab Runne 执行,相关配置记载于.gitlab-ci.yml文件中,执行的结果将在Gitlab页面中展示。 每一次的提交(commit)将会出发一条流水线(pipeline),流水线是不同阶段(Stage)的任务(Job)的一个集合。 阶段(Stage)用于逻辑切割,同一阶段的任务以并行方式执行,阶段间是顺序执行,上一个阶段执行失败,下一个阶段将不会执行。 .pre 为第一阶段(译为:之前) 和 .post 最后阶段(译为:提交时),这两个阶段不需要被定义,也无法被修改。

示例如下:

stages:  - build  - test  - deployjob 0:  stage: .pre  script: make something useful before build stagejob 1:  stage: build  script: make build dependenciesjob 2:  stage: build  script: make build artifactsjob 3:  stage: test  script: make testjob 4:  stage: deploy  script: make deployjob 5:  stage: .post  script: make something useful at the end of pipeline

任务(Job)可以构建Artifacts ,提供用户下载。 利用场景如下:在Android项目中,当配置了自动化构建Artifacts后,每次提交(push)代码后,GitLab CI/CD 将自动构建 APK文件,并在GitLab的页面上提供下载按钮。任务(Job)可以自动部署文件到外部服务器,并通过 GitLab 页面查看该服务器现今部署的状态,以及进行重新部署(re-deploy)等操作。通过使用设定 environmentnameurl ,还可以在GitLab页面直接上查看网站。 通过该操作可以达到 持续部署 的目的。

deploy_staging:  stage: deploy  script:    - echo "Deploy to staging server"  environment:    name: staging    url: http://172.23.0.2:5000/  only:  - master  tags:    - Runner名称

GitLab Runner

GitLab Runner 是一项开源项目,用于执行任务(Job),并将执行结果传输回Gitlab。

Runner 可安装在操作系统,也可以通过Docker的方式安装。当 Runner 安装后,需要将其注册在 GitLab 中,方可使用。Runner 有若干种执executor可供使用,如:Docker、Shell、SSH。 Runner 默认使用Shell,Shell模式下,所有构建都会发生在Runner安装的机器中,操作十分简单,但是缺点很多。

.gitlab-ci.ym 文件中通过 tags 关键词选择Runner。Runner 的相关配置在 config.toml 文件中记载。

对 基于Docker的项目 进行构建和测试,有几种方式。一种方式是,使用shell executor进行Docker CLI命令操作。 另一种方式就是使用Docker executor进行操作,它是官方推荐的操作,executor通过在Docker中使用 Docker-in-Docker镜像 进行Job相关操作。

GitLab 由乌克兰程序员 Dmitriy Zaporozhets 和 Valery Sizov 开发,它由 Ruby 写成。后来,一部分用 Go 语言重写。截止 2018 年 5 月,该公司约有 290 名团队成员,以及 2000 多名开源贡献者。 GitLab 被 IBM,Sony,Jülich Research Center,NASA,Alibaba,Invincea,O’Reilly Media,Leibniz-Rechenzentrum (LRZ),CERN,SpaceX 等组织使用。

最初,该产品命名为 GitLab,是完全免费的开源软件,按照 MIT 许可证分发。

2013 年 7 月,产品被拆分为:GitLab CE(社区版)和 GitLab EE(企业版),当时,GitLab CE 和 GitLab EE 的许可仍然是根据 MIT 许可分发的免费和开源软件。

2014 年 2 月,GitLab公司宣布采用开放核心业务模式。GitLab EE 设置在专有许可证下,并且包含 CE 版本中不存在的功能。

2015 年 7 月,GitLab公司又筹集了 150 万美元的种子基金。截至 2015 年的客户包括阿里巴巴集团,IBM 和 SpaceX。

2015 年 9 月,GitLab 从 Khosla Ventures 筹集了 400 万美元的 A 系列资金。

2016 年 7 月,GitLab CEO 确认了公司的开放核心功能。

2016 年 9 月,GitLab 从 August Capital 和其他公司筹集了 2000 万美元的 B 系列资金。

Gitlab 于 2017 年 1 月 31 日发布一系列紧急通告称,位于荷兰的系统管理员因操作失误而删除了包含 310GB 产品数据的文件夹,在取消删除操作后仅剩下 4.5GB。运维人员之后检查发现,网站宣称和配备的多项备份措施均未正常运作或难以利用。Gitlab 在 YouTube 直播了恢复数据的过程。网站最终丢失了最后 6 小时的数据库数据(包括问题、合并请求、评论、片段等,不含代码库)。

相关