GitLab CI/CD快速入門

  • A+
所屬分類:自動化運維

官方原文檔:https://docs.gitlab.com/ee/ci/quick_start/README.html

注:從8.0版本開始,GitLab?*&####&*_1_*&####&*(CI)完全集成到GitLab中,且默認所有的項目開啟。

GitLab提供持續集成服務。如果添加一個.gitlab-ci.yml文件到項目根目錄,并配置GitLab項目使用某個Runner,然后每一次提交或者是推送都會觸發CI?pipeline.

.gitlab-ci.yml文件會告訴GitLab Runner 做什么。默認情況下,它運行一個pipeline,分為三個階段:buildtestdeploy。你并不需要用到所有的階段,沒有job的階段會被忽略。

如果一切運行正常(沒有非零的返回值),您將得到與commit關聯的漂亮的綠色標記。這使得在查看代碼之前,很容易就能看出是否有一個提交導致了測試失敗。

大多數項目使用GitLab CI服務來運行測試套件,這樣如果開發人員發現問題就會及時得到反饋。

因此,簡而言之,CI所需要的步驟可以歸結為:

1. 添加.gitlab-ci.yml到項目的根目錄

2. 配置一個Runner

從此刻開始,在每一次push到Git倉庫的過程中,Runner會自動開啟pipline,pipline將顯示在項目的Pipline頁面中。


本指南要求:

  • 使用版本8.0+ 的GitLab實例或者是使用GitLab.com
  • 一個想使用GitLab CI的項目

讓我們把它分解成碎片,并致力于解決GitLab CI之謎。

創建.gitlab-ci.yml

在創建.gitlab-ci.yml之前,我們先對它進行個簡單的解釋。

.gitlab-ci.yml是什么

.gitlab-ci.yml是用來配置CI在我們的項目中做些什么工作。它位于項目的根目錄。

在任何的push操作,GitLab都會尋找.gitlab-ci.yml文件,并對此次commit開始jobs,jobs的內容來源于.gitlab-ci.yml文件。

因為.gitlab-ci.yml是存在于我們的項目倉庫中,并且受版本控制的,所以舊版本也可以執行成功,且使用CI可以讓forks更容易,分支可也以擁有不同的pipelines和jobs,而且對于CI來說只會擁有單一的來源。你也可以在我們的博客中找到我們為什么使用.gitlab-ci.yml的原因。

創建一個簡單的.gitlab-ci.yml

注意:.gitlab-ci.yml是一個*&####&*_10_*&####&*文件,所以必須要格外注意鎖緊。使用空格,而不是tabs。

在項目的根目錄創建一個名為.gitlab-ci.yml的文件。下面是一個Ruby on Rails項目的示例。

這是大多數Ruby應用程序最簡單的配置:

  1. 定義了兩個jobs,rspecrubocop(名字可以隨便取),他們執行不同的命令。
  2. 在每個jobs之前,before_script定義的命令都將會被執行。

.gitlab-ci.yml定義了一系列的jobs,其中包含如何運行和何時運行的限制。jobs必須定義一個名稱(在示例中分別是rspecrubocop)作為頂級元素,而且總是必須包含script關鍵字。Jobs被用來創建任務,它們會被Runners接受和環境中的Runner執行。

重要的是,每個工作都是獨立運行的。

如果你想檢驗.gitlab-ci.yml文件的語法是否正確,在GitLab實例頁面中有一個命令行工具/ci/lint。也可以從項目中的CI/CD ? Pipelines?and?Pipelines ? Jobs找到此頁面。

關于更多.gitlab-ci.yml的信息和語法,請閱讀.gitlab-ci.yml參考文檔。

推送.gitlab-ci.yml到GitLab

一旦創建了.gitlab-ci.yml,你應該及時添加到Git倉庫并推送到GitLab。

現在到Pipelines頁面查看,將會看到該Pipline處于等待狀態。

你也可以到Commits頁面查看,并會發現SHA旁邊的暫停按鈕。

CI/CD

點擊它即可進入到該特定commit的jobs頁面。

CI/CD

配置Runner

在GitLab中,Runners將會運行你在.gitlab-ci.yml中定義的jobs。Runner可以是虛擬機,VPS,裸機,docker容器,甚至一堆容器。GitLab和Runners通過API通信,所以唯一的要求就是運行Runners的機器可以聯網。

一個Runner可以服務GitLab中的某個特定的項目或者是多個項目。如果它服務所有的項目,則被稱為共享的Runner。

Runners文檔中查閱更多關于不同Runners的信息。

你可以通過Settings->CI/CD查找是否有Runners分配到你的項目中。創建一個Runner是簡單且直接的。官方支持的Runner是用GO語言寫的,它的文檔在這里https://docs.gitlab.com/runner/。

為了有一個功能性的Runner,你需要遵循以下步驟:

  1. 安裝
  2. 配置

按照上面的連接設置你自己的Runner或者使用下一節介紹的共享Runner。

一旦Runner安裝好,你可以從項目的Settings->CI/CD找到Runner頁面。

CI/CD

共享Runners

如果你用的是GitLab.com,你可以使用GitLab公司提供的共享Runners。

這些是運行在GitLab基礎設置上面的特殊虛擬機,可以構建任何項目。

你可以通過項目中的Settings->CI/CD找到Shared Runners,并點擊開啟它。

閱讀更多關于共享Runners

查看pipeline和jobs的狀態

成功的配置好Runner后,你應該查看最后一次提交后的狀態,從pending、到執行中成功失敗

你可以通過項目中的Piplines頁面查看所有的piplines。

CI/CD

也可以通過Piplines->Jobs頁面查看所有的jobs。

CI/CD

通過點擊jobs的狀態,查看該job的日志。這對于幫助診斷job失敗或者job與預期結果不同很重要。

CI/CD

你還可以查看在GitLab的各種頁面中的任何提交狀態,例如CommitsMerge requests

實例

這里,可以查看各種語言使用GitLab CI的示例。

weinxin
微信公眾號
掃一掃關注運維生存時間公眾號,獲取最新技術文章~

發表評論

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前評論:2   其中:訪客  2   博主  0

    • 開源系統 0

      相互學習學習

      • 哦引力 0

        舊版本麻煩