Gitlab-CI是gitlab8.0之後自帶的一個持續內建系統,中心思想是當每一次push到gitlab的時候,都會觸發一次腳本執行,然後腳本的内容包括了測試,編譯,部署等一系列自定義的内容。
Gitlab-CI的腳本執行,需要自定義安裝對應的gitlab-runner來執行,代碼Push之後,webhook檢測到代碼變化,就會觸發gitlab-CI,配置設定到各個Runner來運作相應的腳本script,這些腳本有的是測試項目用的,有的是部署用的。
1.GitLab CI/CD 由一個名為 .gitlab-ci.yml 的檔案進行配置,通過配置這個yaml檔案來告訴CI要對你的項目做什麼,改檔案位于倉庫的根目錄下。檔案中指定的腳本由GitLab Runner執行。
2.一旦你已經添加了.gitlab-ci.yaml到倉庫中,gitlab将檢測到該檔案,并使用名為gitlab Runner的工具運作你的腳本。
3.倉庫一旦收到任何推送,GitLab将立即查找.gitlab-ci.yml檔案,并根據檔案的内容在Runner上啟動作業。
4.這些腳本被分組到jobs,它們共同組成一個pipeline。一個最簡單的.gitlab-ci.yml檔案可能是這樣的:
before_script:
- apt-get install rubygems ruby-dev -y
run-test:
script:
- ruby --version 6
在gitlab中,Runner運作你定義在.gitlab.yaml中的作業(job),一個Runner可以是一個虛拟機,實體機,docker容器,或者一個容器叢集。
GitLab與Runner之間通過API進行通信,是以隻需要Runner所在的機器有網絡并且可以通路GitLab伺服器即可。
1.首先,定義.gitlab-ci.yaml檔案。在這個檔案中就定義了要執行的job和指令。
2.接着,将檔案推送至遠端倉庫
3.最後,配置runner,用于運作job
shared共享類型:運作整個平台項目的作業(gitlab)
group項目組類型,運作特定group下的所有項目的作業(group)
specific項目類型,運作指定的項目作業(project)
locked:鎖定狀态,無法運作項目作業
paused:暫停狀态,暫時不會接收新的作業