使用者:九千鴉/GitLab
GitLab 是一款完全集成的軟件開發平台(fully integrated software development platform)。[1] [2] GitLab是一個基於Git的平台。
CI/CD
編輯GitLab CI/CD 是 GitLab 內置的一款工具,用於 通過 持續方法論(continuous methodologies)的軟件開發。 該持續方法論包含三個部分:持續集成、持續交付、持續部署。[3][4]
- 持續集成(Continuous Integration,簡稱CI),每次在上傳代碼塊到基於Git倉庫時,持續集成 會運行腳本去構建、測試、校驗代碼,這些操作是在合併到默認分支之前進行的。
- 持續交付(Continuous Delivery,簡稱CD),在 持續集成 之後(即合併到默認分支之後),持續交付 將進行手動部署應用。
- 持續部署(Continuous Deployment,簡稱CD),在 持續集成 之後(即合併到默認分支之後),持續部署 將進行自動部署應用。
原理
編輯當開發者配置了 GitLab CI/CD,那麼當開發者使用 git 提交(commit),那麼就會觸發 CI/CD 相關的一系列操作。 這一系列操作由 GitLab Runne 執行,相關配置記載於.gitlab-ci.yml
文件中,執行的結果將在Gitlab頁面中展示。[5]
每一次的提交(commit)將會出發一條流水線(pipeline),流水線是不同階段(Stage)的任務(Job)的一個集合。[5] 階段(Stage)用於邏輯切割,同一階段的任務以並行方式執行,階段間是順序執行,上一個階段執行失敗,下一個階段將不會執行。[6] .pre
為第一階段(譯為:之前) 和 .post
最後階段(譯為:提交時),這兩個階段不需要被定義,也無法被修改。[7]
示例如下:
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 ,提供用戶下載。[5] 利用場景如下:在Android項目中,當配置了自動化構建Artifacts後,每次提交(push)代碼後,GitLab CI/CD 將自動構建 APK文件,並在GitLab的頁面上提供下載按鈕。
任務(Job)可以自動部署文件到外部服務器,並通過 GitLab 頁面查看該服務器現今部署的狀態,以及進行重新部署(re-deploy)等操作。通過使用設定 environment
的 name
和 url
,還可以在GitLab頁面直接上查看網站。[8][9] 通過該操作可以達到 持續部署 的目的。[9]
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。[10]
Runner 可安裝在操作系統,也可以通過Docker的方式安裝。當 Runner 安裝後,需要將其註冊在 GitLab 中,方可使用。Runner 有若干種執executor可供使用,如:Docker、Shell、SSH。[10] Runner 默認使用Shell,Shell模式下,所有構建都會發生在Runner安裝的機器中,操作十分簡單,但是缺點很多。[11][12]
.gitlab-ci.ym
文件中通過 tags
關鍵詞選擇Runner。[13]Runner 的相關配置在 config.toml
文件中記載。[14]
與Docker結合
編輯對 基於Docker的項目 進行構建和測試,有幾種方式。[15]一種方式是,使用shell executor進行Docker CLI命令操作。[16] 另一種方式就是使用Docker executor進行操作,它是官方推薦的操作,executor通過在Docker中使用 Docker-in-Docker鏡像 進行Job相關操作。[17]
Mattermost
編輯參考文獻
編輯- ^ GitLab Pricing. GitLab. [2020-03-23] (英語).
- ^ User Docs | GitLab 中文文档教程. s0docs0gitlab0com.icopy.site. [2020-03-23].
- ^ GitLab CI/CD | GitLab. docs.gitlab.com. [2020-03-25].
- ^ Introduction to CI/CD with GitLab | GitLab. docs.gitlab.com. [2020-03-27].
- ^ 5.0 5.1 5.2 A beginner's guide to continuous integration. GitLab. [2020-03-27] (英語).
- ^ stages. docs.gitlab.com. [2020-03-27].
- ^ pre-and-post. docs.gitlab.com. [2020-03-27].
- ^ A beginner's guide to continuous integration. GitLab. [2020-03-27] (英語).
- ^ 9.0 9.1 Environments and deployments | GitLab. docs.gitlab.com. [2020-03-27].
- ^ 10.0 10.1 GitLab Runner Docs | GitLab. docs.gitlab.com. [2020-03-22].
- ^ Executors | GitLab. docs.gitlab.com. [2020-03-24].
- ^ Shell | GitLab. docs.gitlab.com. [2020-03-24].
- ^ GitLab CI/CD Pipeline Configuration Reference | GitLab. docs.gitlab.com. [2020-03-26].
- ^ Advanced configuration | GitLab. docs.gitlab.com. [2020-03-26].
- ^ Building Docker images with GitLab CI/CD | GitLab. docs.gitlab.com. [2020-03-26].
- ^ Building Docker images with GitLab CI/CD | GitLab. docs.gitlab.com. [2020-03-26].
- ^ Building Docker images with GitLab CI/CD | GitLab. docs.gitlab.com. [2020-03-26].