本頁使用了標題或全文手工轉換

GitLab

維基百科,自由的百科全書
(重新導向自Gitlab
跳至導覽 跳至搜尋
GitLab
GitLab logo.svg
GitLab running 14.3.0-pre (2021-08).png
網站類型
Git 倉庫代管服務
DevOps平台[1]
語言英語
股票代號NASDAQGTLB[2]
業務範圍全球範圍
持有者GitLab Inc.
創立者
  • Sid Sijbrandij
  • Dmitriy Zaporozhets
  • Valery Sizov
代表人物
  • Sid Sijbrandij (CEO)
  • Dmitriy Zaporozhets (CTO)
產業軟體行業
營業額 1.522億美元 (2021年)[3]
員工1,765[4](截至2022年4月 (2022-04)
網址gitlab.com
商業性質
註冊可選
推出時間2011年,​11年前​(2011
現狀線上
程式語言RubyGoVue.js
GitLab Application
穩定版本
15.1
(2022年6月22日,​5天前​(2022-06-22[6]
原始碼庫gitlab.com/gitlab-org/gitlab
程式語言RubyGoJavaScript
作業系統跨平台
系統平台x86-64ARMhf
授權條款MIT授權條款 (社群版)[7]/商業授權 (商業版)
網站商業版 (包括專有元件): about.gitlab.com
社群版 (不含專有元件): gitlab.com/gitlab-org/gitlab

GitLab 是由 GitLab Inc.開發,一款基於 Git 的完全整合的軟體開發平台(fully 整合軟體 development platform)。[8][9] 另外,GitLab 且具有wiki以及線上編輯、issue跟蹤功能、CI/CD 等功能。

CI/CD[編輯]

GitLab CI/CD 是 GitLab 內建的一款工具,用於 通過 持續方法論頁面存檔備份,存於網際網路檔案館)(continuous methodologies)的軟體開發。 該持續方法論包含三個部分:持續整合持續交付持續部署[10][11]

  • 持續整合(Continuous Integration,簡稱CI),每次在上傳代碼塊到基於Git倉庫時,持續整合 會執行指令碼去構建、測試、校驗代碼,這些操作是在合併到預設分支之前進行的。
  • 持續交付(Continuous Delivery,簡稱CD),在 持續整合 之後(即合併到預設分支之後),持續交付 將進行手動部署應用。
  • 持續部署(Continuous Deployment,簡稱CD),在 持續整合 之後(即合併到預設分支之後),持續部署 將進行自動部署應用。

原理[編輯]

當開發者組態了 GitLab CI/CD,那麼當開發者使用 git 提交(commit),那麼就會觸發 CI/CD 相關的一系列操作。 這一系列操作由 GitLab Runner 執行,相關組態記載於.gitlab-ci.yml檔案中,執行的結果將在Gitlab頁面中展示。[12] 每一次的提交(commit)將會出發一條管線(pipeline),管線是不同階段(Stage)任務(Job)的一個集合。[12] 階段(Stage)用於邏輯切割,同一階段的任務以並列方式執行,階段間是順序執行,上一個階段執行失敗,下一個階段將不會執行。[13] .pre 為第一階段(譯為:之前) 和 .post 最後階段(譯為:提交時),這兩個階段不需要被定義,也無法被修改。[14]

範例如下:

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 ,提供使用者下載。[12] 利用場景如下:在Android專案中,當組態了自動化構建Artifacts後,每次提交(push)代碼後,GitLab CI/CD 將自動構建 APK檔案,並在GitLab的頁面上提供下載按鈕。 任務(Job)可以自動部署檔案到外部伺服器,並通過 GitLab 頁面檢視該伺服器現今部署的狀態,以及進行重新部署(re-deploy)等操作。通過使用設定 environmentnameurl ,還可以在GitLab頁面直接上檢視網站。[15][16] 通過該操作可以達到 持續部署 的目的。[16]

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。[17]

Runner 可安裝在作業系統,也可以通過Docker的方式安裝。當 Runner 安裝後,需要將其註冊在 GitLab 中,方可使用。Runner 有若干種執executor可供使用,如:DockerShellSSH[17] Runner 預設使用Shell,Shell模式下,所有構建都會發生在Runner安裝的機器中,操作十分簡單,但是缺點很多。[18][19]

.gitlab-ci.ym 檔案中通過 tags 關鍵詞選擇Runner。[20]Runner 的相關組態在 config.toml 檔案中記載。[21]

與Docker結合 [編輯]

對 基於Docker的專案 進行構建和測試,有幾種方式。一種方式是,使用shell executor進行Docker CLI命令操作。 另一種方式就是使用Docker executor進行操作,它是官方推薦的操作,executor通過在Docker中使用 Docker-in-Docker頁面存檔備份,存於網際網路檔案館鏡像 進行Job相關操作。[22]

歷史[編輯]

GitLab 由烏克蘭程式設計師 Dmitriy Zaporozhets 和 Valery Sizov 開發,它由 Ruby 寫成。後來,一部分用 Go 語言重寫。截止 2018 年 5 月,該公司約有 290 名團隊成員[23],以及 2000 多名開源貢獻者。[24] GitLab 被 IBM,Sony,Jülich Research Center,NASA,Alibaba,Invincea,O’Reilly Media,Leibniz-Rechenzentrum (LRZ),CERN[25][26][27],SpaceX 等組織使用。[28]

最初,該產品命名為 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 系列資金。

2017年10月9日,C輪融資,GitLab Inc.獲得 GV 領投,Telstra Ventures、Matt Mullenweg(個人)和INKEF Capital跟投的2000萬美元資金。

2018年9月19日,D輪融資,GitLab Inc.獲得 GS Growth 和 ICONIQ Capital 領投,Khosla Ventures、GV和INKEF Capital跟投的1億美元投資。

2019年9月12日,E輪融資,GitLab Inc.獲得 Goldman Sachs 和 ICONIQ Capital 領投,Y Combinator、Coatue、Adage Capital Management等跟投的2.68億美元投資[29]

事件[編輯]

Gitlab 於 2017 年 1 月 31 日發佈一系列緊急通告稱,位於荷蘭的系統管理員因操作失誤而刪除了包含 310GB 產品資料的資料夾,在取消刪除操作後僅剩下 4.5GB。運維人員之後檢查發現,網站宣稱和配備的多項備份措施均未正常運作或難以利用。Gitlab 在 YouTube 直播了恢復資料的過程[30]。網站最終遺失了最後 6 小時的資料庫資料(包括問題、合併請求、評論、片段等,不含代碼庫)[31]

參考文獻[編輯]

  1. ^ GitLab 14 Delivers Modern DevOps in One Platform. DevPro Journal. July 12, 2021 [2022-05-04]. (原始內容存檔於2022-01-30). 
  2. ^ Sijbrandij, Sid. GitLab goes public on Nasdaq a $10 billion IPO. CNBC. October 14, 2021 [2022-05-04]. (原始內容存檔於2022-01-25). 
  3. ^ 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). 
  4. ^ GitLab Team. [2022-05-04]. (原始內容存檔於2018-11-25). 
  5. ^ GitLab.com Alexa Ranking. Alexa Internet. [2018-06-05]. (原始內容存檔於2021-02-02). 
  6. ^ GitLab 15.1 released with SAML Group Sync and SLSA level 2 build artifact attestation. [2022-06-22]. 
  7. ^ GitLab Community Edition LICENSE file. [2018-01-31]. (原始內容存檔於2019-07-02). 
  8. ^ User Docs | GitLab. docs.gitlab.com. [2020-03-27]. (原始內容存檔於2020-11-30). 
  9. ^ Git | GitLab. docs.gitlab.com. [2020-03-27]. (原始內容存檔於2020-04-02). 
  10. ^ GitLab CI/CD | GitLab. docs.gitlab.com. [2020-03-25]. (原始內容存檔於2020-12-10). 
  11. ^ Introduction to CI/CD with GitLab | GitLab. docs.gitlab.com. [2020-03-27]. (原始內容存檔於2020-11-28). 
  12. ^ 12.0 12.1 12.2 A beginner's guide to continuous integration. GitLab. [2020-03-27]. (原始內容存檔於2021-01-10) (英語). 
  13. ^ stages. docs.gitlab.com. [2020-03-27]. (原始內容存檔於2021-01-29). 
  14. ^ pre-and-post. docs.gitlab.com. [2020-03-27]. (原始內容存檔於2021-01-29). 
  15. ^ A beginner's guide to continuous integration. GitLab. [2020-03-27]. (原始內容存檔於2021-01-10) (英語). 
  16. ^ 16.0 16.1 Environments and deployments | GitLab. docs.gitlab.com. [2020-03-27]. (原始內容存檔於2020-11-24). 
  17. ^ 17.0 17.1 GitLab Runner Docs | GitLab. docs.gitlab.com. [2020-03-22]. (原始內容存檔於2021-02-02). 
  18. ^ Executors | GitLab. docs.gitlab.com. [2020-03-24]. (原始內容存檔於2021-01-10). 
  19. ^ Shell | GitLab. docs.gitlab.com. [2020-03-24]. (原始內容存檔於2021-01-10). 
  20. ^ GitLab CI/CD Pipeline Configuration Reference | GitLab. docs.gitlab.com. [2020-03-26]. (原始內容存檔於2021-01-31). 
  21. ^ Advanced configuration | GitLab. docs.gitlab.com. [2020-03-26]. (原始內容存檔於2021-02-02). 
  22. ^ Building Docker images with GitLab CI/CD | GitLab. docs.gitlab.com. [2020-03-26]. (原始內容存檔於2021-02-02). 
  23. ^ GitLab Team Page. GitLab. [9 May 2018]. (原始內容存檔於2018-11-25). 
  24. ^ GitLab Contributors. GitLab.com. [9 May 2018]. (原始內容存檔於2017-08-19). 
  25. ^ Andrii Degeler. GitLab is building a business with 0.1% of paying customers. The Next Web. 4 June 2014 [2018-01-31]. (原始內容存檔於2019-07-02). 
  26. ^ CERN. Services - CERN or commercial provider?. cern.ch. [2018-01-31]. (原始內容存檔於2019-02-26). 
  27. ^ Services - GitLab. [2018-01-31]. (原始內容存檔於2019-04-20). 
  28. ^ 存档副本. [2018-01-31]. (原始內容存檔於2020-11-30). 
  29. ^ 基于Git的完全集成的软件开发平台:极狐公司GitLab Inc.. 美股之家. 2021-04-18 [2021-04-18]. (原始內容存檔於2021-04-24). 
  30. ^ Working on restoring GitLab.com. FAQ below.. [2017-02-02]. (原始內容存檔於2020-10-31). 
  31. ^ GitLab.com Database Incident. GitLab. 2017-02-01 [2017-02-10]. (原始內容存檔於2019-09-09). 

外部連結[編輯]