GitLab
基於 Git 的軟體開發平台 来自维基百科,自由的百科全书
GitLab是由GitLab公司開發的、基於Git的整合軟體開發平台。[8][9]另外,GitLab且具有wiki以及線上編輯、issue跟蹤功能、CI/CD等功能。在2018年,GitLab被認為是一家部份是烏克蘭的獨角獸企業。[10][11]
目前版本 |
|
---|---|
原始碼庫 | gitlab |
程式語言 | Ruby、Go和JavaScript |
作業系統 | 跨平台 |
平台 | x86-64和ARMhf |
授權條款 | MIT授權條款 (社群版)[7]/商業授權 (商業版) |
網站 | 商業版(包括專有元件):about.gitlab.com 社群版(不含專有元件):gitlab.com/gitlab-org/gitlab |
CI/CD
GitLab CI/CD是GitLab內建的一款工具,用於通過持續方法論(continuous methodologies)的軟體開發。 該持續方法論包含三個部分:持續整合、持續交付、持續部署。[12][13]
當開發者組態了GitLab CI/CD,那麼當開發者使用Git提交(commit),那麼就會觸發CI/CD相關的一系列操作。這一系列操作由GitLab Runner執行,相關組態記載於.gitlab-ci.yml
檔案中,執行的結果將在GitLab頁面中展示。[14] 每一次的提交(commit)將會觸發一條管線(pipeline),管線是不同階段(Stage)的任務(Job)的一個集合。[14] 階段(Stage)用於邏輯切割,同一階段的任務以並列方式執行,階段間是順序執行,上一個階段執行失敗,下一個階段將不會執行。[15] .pre
為第一階段(譯為:之前) 和 .post
最後階段(譯為:提交時),這兩個階段不需要被定義,也無法被修改。[16]
範例如下:
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 ,提供使用者下載。[14] 利用場景如下:在Android專案中,當組態了自動化構建Artifacts後,每次提交(push)代碼後,GitLab CI/CD 將自動構建 APK檔案,並在GitLab的頁面上提供下載按鈕。
任務(Job)可以自動部署檔案到外部伺服器,並通過 GitLab 頁面檢視該伺服器現今部署的狀態,以及進行重新部署(re-deploy)等操作。通過使用設定 environment
的 name
和 url
,還可以在GitLab頁面上直接檢視網站。[17][18] 通過該操作可以達到 持續部署 的目的。[18]
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。[19]
Runner 可安裝在作業系統,也可以通過Docker的方式安裝。當 Runner 安裝後,需要將其註冊在 GitLab 中,方可使用。Runner 有若干種執executor可供使用,如:Docker、Shell、SSH。[19] Runner 預設使用Shell,Shell模式下,所有構建都會發生在Runner安裝的機器中,操作十分簡單,但是缺點很多。[20][21]
.gitlab-ci.ym
檔案中通過 tags
關鍵詞選擇Runner。[22]Runner 的相關組態在 config.toml
檔案中記載。[23]
對基於Docker的專案 進行構建和測試,有幾種方式。一種方式是,使用shell executor進行Docker CLI命令操作。 另一種方式就是使用Docker executor進行操作,它是官方推薦的操作,executor通過在Docker中使用「Docker-in-Docker」鏡像進行Job相關操作。[24]
事件
GitLab於2017年1月31日發佈一系列緊急通告稱,位於荷蘭的系統管理員因操作失誤而刪除了包含310GB產品資料的資料夾,在取消刪除操作後僅剩下4.5GB。運維人員之後檢查發現,網站宣稱和配備的多項備份措施均未正常運作或難以利用。GitLab在YouTube直播了恢復資料的過程[25]。網站最終遺失了最後 6 小時的資料庫資料(包括問題、合併請求、評論、片段等,不含代碼庫)[26]。
2024年11月,一Gitlab公司員工楊州實名舉報,公司CEO柳鋼和副總裁何慶隱瞞美國身分,與中國中科院投資的國家重點企業中科星圖開展合作,涉嫌危害中國國家安全,影片中提及中科星圖為美國實體清單中禁止合作的單位,違反相關規定可能會被處以30萬美元的罰款,但是雙方合作的金額僅10萬人民幣,且需要中科星圖對Gitlab開放相關航天資料和資料,引起網友熱議。[27][28]
2024年12月,GitLab向使用者通知不再為中國大陸、香港、澳門的使用者提供服務,使用者必須在60日內遷移到本地公司「極狐」。[29]
參考文獻
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.