GitLab

GitLab是由GitLab公司开发的、基于Git的集成软件开发平台。另外，GitLab且具有wiki以及在线编辑、issue跟踪功能、CI/CD等功能。在2018年，GitLab被認為是一家部份是烏克蘭的独角兽企业。 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）的一个集合。 阶段（Stage）用于逻辑切割，同一阶段的任务以并行方式执行，阶段间是顺序执行，上一个阶段执行失败，下一个阶段将不会执行。 .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 ，提供用户下载。 利用场景如下：在Android项目中，当配置了自动化构建Artifacts后，每次提交（push）代码后，GitLab CI/CD 将自动构建 APK文件，并在GitLab的页面上提供下载按钮。 任务（Job）可以自动部署文件到外部服务器，并通过 GitLab 页面查看该服务器现今部署的状态，以及进行重新部署（re-deploy）等操作。通过使用设定 environment 的 name 和 url ，还可以在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 是一项开源项目，用于执行任务（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于2017年1月31日發佈一系列緊急通告稱，位於荷蘭的系統管理員因操作失誤而刪除了包含310GB產品資料的資料夾，在取消刪除操作後僅剩下4.5GB。运维人员之后检查发现，网站宣称和配备的多项备份措施均未正常运作或难以利用。GitLab在YouTube直播了恢復資料的過程。网站最终丢失了最后 6 小时的数据库数据（包括问题、合并请求、评论、片段等，不含代码库）。 GitLab 14 Delivers Modern DevOps in One Platform. DevPro Journal. July 12, 2021 [2022-05-04]. （原始内容存档于2022-01-30）.  Sijbrandij, Sid. GitLab goes public on Nasdaq a $10 billion IPO. CNBC. October 14, 2021 [2022-05-04]. （原始内容存档于2022-01-25）.  Pendleton, Devon. CEO Who Built GitLab Fully Remote Worth $2.8 Billion on IPO. Bloomberg.com. October 14, 2021 [2022-05-04]. （原始内容存档于2022-02-08）.  GitLab Team. [2022-05-04]. （原始内容存档于2018-11-25）.  GitLab.com Alexa Ranking. Alexa Internet. [2018-06-05]. （原始内容存档于2021-02-02）.  GitLab 17.0 released with generally available CI/CD Catalog and AI Impact analytics dashboard. [2024年5月17日] （英語）.  引文格式1维护：未识别语文类型 (link) GitLab Community Edition LICENSE file. [2018-01-31]. （原始内容存档于2019-07-02）.  User Docs | GitLab. docs.gitlab.com. [2020-03-27]. （原始内容存档于2020-11-30）.  Git | GitLab. docs.gitlab.com. [2020-03-27]. （原始内容存档于2020-04-02）.  GitLab, founded by a Ukrainian citizen, raised $100 million. It became a unicorn valued at $ 1.1 billion. AIN.UA. 2018-10-30 [2019-09-27]. （原始内容存档于2021-06-28） （美国英语）.  Dmytro Zaporozhets, GitLab: "I believe that GitLab can be called a Ukrainian startup". AIN.UA. 2018-11-30 [2019-09-27]. （原始内容存档于2022-02-21） （美国英语）.  GitLab CI/CD | GitLab. docs.gitlab.com. [2020-03-25]. （原始内容存档于2020-12-10）.  Introduction to CI/CD with GitLab | GitLab. docs.gitlab.com. [2020-03-27]. （原始内容存档于2020-11-28）.  A beginner's guide to continuous integration. GitLab. [2020-03-27]. （原始内容存档于2021-01-10） （英语）.  stages. docs.gitlab.com. [2020-03-27]. （原始内容存档于2021-01-29）.  pre-and-post. docs.gitlab.com. [2020-03-27]. （原始内容存档于2021-01-29）.  A beginner's guide to continuous integration. GitLab. [2020-03-27]. （原始内容存档于2021-01-10） （英语）.  Environments and deployments | GitLab. docs.gitlab.com. [2020-03-27]. （原始内容存档于2020-11-24）.  GitLab Runner Docs | GitLab. docs.gitlab.com. [2020-03-22]. （原始内容存档于2021-02-02）.  Executors | GitLab. docs.gitlab.com. [2020-03-24]. （原始内容存档于2021-01-10）.  Shell | GitLab. docs.gitlab.com. [2020-03-24]. （原始内容存档于2021-01-10）.  GitLab CI/CD Pipeline Configuration Reference | GitLab. docs.gitlab.com. [2020-03-26]. （原始内容存档于2021-01-31）.  Advanced configuration | GitLab. docs.gitlab.com. [2020-03-26]. （原始内容存档于2021-02-02）.  Building Docker images with GitLab CI/CD | GitLab. docs.gitlab.com. [2020-03-26]. （原始内容存档于2021-02-02）.  Working on restoring GitLab.com. FAQ below.. [2017-02-02]. （原始内容存档于2020-10-31）.  GitLab.com Database Incident. GitLab. 2017-02-01 [2017-02-10]. （原始内容存档于2019-09-09）.  官方网站 GitLab社区版的原始碼 （页面存档备份，存于互联网档案馆）