2. 開始使用 GitLab CI/CD

原文鏈接:https://gitlab.com/help/ci/quick_start/README

開始使用 GitLab CI/CD

注意:從 8.0 版本開始,GitLab 持續(xù)集成(CI)完全集成到 GitLab 中,并在所有項(xiàng)目中默認(rèn)啟用。

注意:請(qǐng)記住,只有項(xiàng)目維護(hù)者和管理員才有權(quán)訪問(wèn)項(xiàng)目的設(shè)置。

注意:從 Jenkins 轉(zhuǎn)到 GitLab?查看將您已有的 pipelines 轉(zhuǎn)換為我們的格式的參考

GitLab 提供持續(xù)集成服務(wù)。如果你將 .gitlab-ci.yml 文件添加到存儲(chǔ)庫(kù)的根目錄下,并將 GitLab 項(xiàng)目配置為使用 Runner,則每次提交或推送都會(huì)觸發(fā) CI pipelines(注:pipelines 官方譯為“流水線”,本文中亦以此稱之)。

.gitlab-ci.yml 文件告訴 GitLab runner 該做什么。默認(rèn)情況下,它運(yùn)行一個(gè)包含三個(gè) stages(階段) 的流水線:buildtestdeploy。你不需要使用所有這三個(gè) stage;沒有作業(yè)的 stage 會(huì)被忽略。

如果一切運(yùn)行正常(沒有非零返回值),你會(huì)看到一個(gè)與提交相關(guān)的漂亮的綠色復(fù)選標(biāo)記 ?。這樣你可以在查看代碼之前,輕松查看提交是否導(dǎo)致任何測(cè)試失敗問(wèn)題。

大多數(shù)項(xiàng)目使用 GitLab 的 CI 服務(wù)來(lái)運(yùn)行測(cè)試套件,以便開發(fā)人員在修改某些內(nèi)容時(shí)立即獲得反饋。

使用持續(xù)交付和持續(xù)部署將測(cè)試代碼自動(dòng)部署到測(cè)試和生產(chǎn)環(huán)境的趨勢(shì)越來(lái)越明顯。

簡(jiǎn)而言之,實(shí)現(xiàn)一個(gè)可運(yùn)行的 CI 服務(wù)所需的步驟可歸納為:

  • .gitlab-ci.yml 文件添加到存儲(chǔ)庫(kù)的根目錄下。
  • 配置一個(gè) Runner。

自此,每次向你的 Git 存儲(chǔ)庫(kù)執(zhí)行 push 操作時(shí),Runner 將自動(dòng)啟動(dòng)流水線,流水線將顯示在項(xiàng)目的 Pipelines 頁(yè)面下。


本指南假設(shè)您擁有:

  • 一個(gè)正在運(yùn)行的大于 8.0 版本的 GitLab 實(shí)例或正在使用 GitLab.com
  • 一個(gè)存儲(chǔ)在 GitLab 中的項(xiàng)目,并且您希望使用 CI 服務(wù)。
  • 可以訪問(wèn)該項(xiàng)目的維護(hù)者或項(xiàng)目所有者。

讓我們分解它并努力解決 GitLab CI 難題。

創(chuàng)建一個(gè) .gitlab-ci.yml 文件

在創(chuàng)建 .gitlab-ci.yml 文件之前,讓我們先簡(jiǎn)要解釋一下這是什么。

什么是 .gitlab-ci.yml

您可以在 .gitlab-ci.yml 文件中配置 CI 對(duì)項(xiàng)目執(zhí)行的操作。該文件位于存儲(chǔ)庫(kù)的根目錄中。

當(dāng)向您的存儲(chǔ)庫(kù)執(zhí)行任何 push 操作時(shí),GitLab 將查找 .gitlab-ci.yml 文件,并根據(jù)該文件提交的內(nèi)容在 Runners 上啟動(dòng)一個(gè)作業(yè)。

因?yàn)?.gitlab-ci.yml 存儲(chǔ)在 Git 存儲(chǔ)庫(kù)中并且受版本控制,舊版本仍然可以成功構(gòu)建,分支可以輕松地使用 CI,分支可以具有不同的流水線和作業(yè),并且您有的單一可信的來(lái)源用于持續(xù)集成。您可以在我們的 博客 中詳細(xì)了解我們使用 .gitlab-ci.yml 的原因。

創(chuàng)建一個(gè)簡(jiǎn)單的 .gitlab-ci.yml 文件

注意:.gitlab-ci.yml 是一個(gè) YAML 格式的文件,因此您必須特別注意縮進(jìn)。始終使用空格,而不是制表符。

您需要在存儲(chǔ)庫(kù)的根目錄中創(chuàng)建名為 .gitlab-ci.yml 的文件。下面是 Ruby on Rails 項(xiàng)目的示例。

image: "ruby:2.5"

before_script:
  - apt-get update -qq && apt-get install -y -qq sqlite3 libsqlite3-dev nodejs
  - ruby -v
  - which ruby
  - gem install bundler --no-document
  - bundle install --jobs $(nproc)  "${FLAGS[@]}"

rspec:
  script:
    - bundle exec rspec

rubocop:
  script:
    - bundle exec rubocop

這是最簡(jiǎn)單的配置,適用于大多數(shù) Ruby 應(yīng)用程序:

  1. 定義兩個(gè)作業(yè) rspecrubocop(名稱是任意的)分別表示要執(zhí)行的兩種不同命令。
  2. 在每個(gè) job 作業(yè)被執(zhí)行之前,會(huì)先執(zhí)行 before_script 中定義的命令。

.gitlab-ci.yml 文件定義了具有運(yùn)行方式和時(shí)間約束的作業(yè)集。作業(yè)被定義為具有名稱的頂級(jí)元素(在我們的示例中為 rspecrubocop),并且始終必須包含 script 關(guān)鍵字。 Jobs 用于創(chuàng)建 jobs 作業(yè),然后由 Runners 選擇并在 Runner 的環(huán)境下執(zhí)行。

重要的是每項(xiàng) job 作業(yè)都是相互獨(dú)立運(yùn)作的。

如果要檢查項(xiàng)目中的 .gitlab-ci.yml 配置是否有效,則在項(xiàng)目命名空間的 /-/ci/lint 頁(yè)面下有一個(gè) Lint 工具。您還可以在你的項(xiàng)目的 CI/CD ? PipelinesPipelines ? Jobs 頁(yè)面下找到 “CI Lint” 按鈕。

有關(guān)更多信息和完整的.gitlab-ci.yml語(yǔ)法,請(qǐng)閱讀 GitLab CI/CD 管道配置參考文檔 。

.gitlab-ci.yml 推送到 GitLab

一旦你創(chuàng)建了 .gitlab-ci.yml 文件,你應(yīng)該將它添加到你的 Git 存儲(chǔ)庫(kù)并將其推送到 GitLab。

git add .gitlab-ci.yml
git commit -m "Add .gitlab-ci.yml"
git push origin master

現(xiàn)在,如果您轉(zhuǎn)到 “Pipelines(流水線)”頁(yè)面,您將看到 Pipelines 處于待處理狀態(tài)。

注意:如果您有一個(gè)來(lái)自 GitLab 的鏡像存儲(chǔ)庫(kù),您可能需要在項(xiàng)目的 Settings > Repository > Pull from a remote repository > Trigger pipelines for mirror updates 以啟用并觸發(fā)流水線。

您也可以轉(zhuǎn)到 “Commits” 頁(yè)面,注意提交 SHA 哈希值旁邊的小暫停圖標(biāo)。

image

點(diǎn)擊它,您將被重定向到該特定提交的 job 頁(yè)面。

image

請(qǐng)注意,有一個(gè)掛起的作業(yè)以我們?cè)?.gitlab-ci.yml 中寫的命名。橙色的標(biāo)識(shí) “stuck(卡?。北硎旧形礊榇俗鳂I(yè)配置 Runner。

配置 Runner

在 GitLab 中,Runners 運(yùn)行您在 .gitlab-ci.yml 中定義的作業(yè)。Runner 可以是虛擬機(jī),VPS,裸機(jī),docker 容器甚至是容器集群。GitLab 和 Runners 通過(guò) API 進(jìn)行通信。所以唯一的要求是部署 Runner 的機(jī)器可以訪問(wèn) GitLab 服務(wù)器。

Runner 可以特定于某個(gè)項(xiàng)目,也可以同時(shí)為 GitLab 中的多個(gè)項(xiàng)目提供服務(wù)。如果它服務(wù)于所有項(xiàng)目,則稱為 Shared Runner

Runners 文檔中查找有關(guān)不同 Runners 的更多信息。

您可以通過(guò)轉(zhuǎn)到 Settings ? CI/CD 找到是否為您的項(xiàng)目分配了任何 Runner。設(shè)置一個(gè) Runner 既簡(jiǎn)單又直接。由 GitLab 支持的官方 Runner 是用 Go 語(yǔ)言編寫的,其文檔可以在 https://docs.gitlab.com/runner/ 中找到。

要獲得 Runner 功能,您需要執(zhí)行以下兩個(gè)步驟:

  1. 安裝它
  2. 配置它。

按照上面的鏈接設(shè)置您自己的 Runner 或使用 Shared Runner,如下一節(jié)所述。

設(shè)置好 Runner 后,您應(yīng)該在項(xiàng)目的 Settings ? CI/CD 中的 Runners 頁(yè)面上看到它。

image

共享 Runners

如果您使用 GitLab.com,您可以使用 GitLab Inc. 提供的共享 Runners。

這些是在 GitLab 的基礎(chǔ)架構(gòu)上運(yùn)行的特殊虛擬機(jī),可以構(gòu)建任何項(xiàng)目。

要啟用共享 Runners,您必須轉(zhuǎn)到項(xiàng)目的 Settings ? CI/CD,然后單擊 Enable shared runners

查看流水線和作業(yè)的狀態(tài)

成功配置好 Runner 后,您應(yīng)該會(huì)看到上次提交的狀態(tài)從掛起更改為運(yùn)行、成功或失敗。您可以轉(zhuǎn)到項(xiàng)目的 “Pipelines” 頁(yè)面來(lái)查看所有的流水線。

image

或者您可以通過(guò) Pipelines ? Jobs 頁(yè)面查看所有的作業(yè)。

image

通過(guò)單擊作業(yè)的狀態(tài),您將能夠看到該作業(yè)的日志。這對(duì)于診斷工作失敗或行為與預(yù)期不同的原因非常重要。

image

您還可以在 GitLab 的各個(gè)頁(yè)面中查看任何提交的狀態(tài),例如 Commits 提交和 Merge requests 合并請(qǐng)求。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容