gitlab ci/cd介紹


1. gitlab-CI/CD持續集成介紹
持續集成是一種軟件開發實踐,即團隊開發成員經常集成他們的工作,通常每個成員每天至少集成一次,也就意味着每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡快的發現集成錯誤。許多團隊發現這個過程可以大大減少集成的問題,讓團隊能夠更快的開發內聚的軟件。
  1) 概念
      持續集成 (Continuous Integration):頻繁地(一天多次)將代碼集成到主干。讓產品可以快速迭代,同時還能保持高質量。它的核心措施是,代碼集成到主干之前,必須通過自動化測試。只要一個測試用例失敗,就不能集成。“持續集成並不能消除bug”而是讓它們非常容易發現和改正。
      持續交付 (Continuous Delivery): 頻繁地將軟件的新版本,交付給質量團隊或用戶,以供評審。如果評審通過,代碼就進入生產階段。持續交付可以看作持續集成的下一步。它強調的是,不管怎么更新,軟件是隨時隨地可以交付的。
      持續部署 (continuous Deployment): 代碼通過評審以后,自動部署到生產環境。是持續部署是持續交付的下一步,持續部署的目標是,代碼在任何時刻都是可部署的,可以進入生產階段。
  2)持續集成的好處
       自動化構建且狀態對每個人可見。可以使用Maven、Gradle等來實現自動化構建,可以在構建過程中實現自動化測試(前提是有寫單元測試用例)。集成服務器在持續集成過程中發現問題可以及時發送警告給相關的干系人。
       解放了重復性勞動。自動化部署工作可以解放集成、測試、部署等重復性勞動,而機器集成的頻率明顯比手工高很多。
       更快地發現和修復問題。持續集成更早的獲取變更,更早的進入測試,更早的發現問題,解決問題的成本顯著下降。
       更快的交付成果。更早發現錯誤減少解決錯誤所需的工作量。集成服務器在構建環節發現錯誤可以及時通知開發人員修復。集成服務器在部署環節發現錯誤可以回退到上一版本,服務器始終有一個可用的版本。
       減少手工的錯誤。在重復性動作上,人容易犯錯,而機器犯錯的幾率幾乎為零。
       減少了等待時間。縮短了從開發、集成、測試、部署各個環節的時間,從而也就縮短了中間可以出現的等待時機。持續集成,意味着開發、集成、測試、部署也得以持續。
       更高的產品質量。集成服務器往往提供代碼質量檢測等功能,對不規范或有錯誤的地方會進行標致,也可以設置郵件和短信等進行警告。
2. gitlab持續集成
    1) gitlab介紹
       GitLab 是一個利用Ruby on Rails開發的開源應用程序,實現一個自托管的 Git 項目倉庫,可通過 Web 界面進行訪問公開的或者私人項目。它擁有與GitHub類似的功能,能夠瀏覽源代碼,管理缺陷和注釋。可以管理團隊對倉庫的訪問,它非常易於瀏覽提交過的版本並提供一個文件歷史庫。
    2) gitlab CI/CD
       GitLab CI/CD 是GitLab Continuous Integration(Gitlab持續集成)的簡稱。GitLab 自GitLab 8.0開始提供了持續集成的功能,且對所有項目默認開啟。只要在項目倉庫的根目錄添加.gitlab-ci.yml文件,並且配置了Runner(運行器),那么每一次push或者合並請求(Merge Request)都會觸發CI Pipeline。
    3) gitlab Runner
        GitLab Runner GitLab Runner是一個開源項目,可以運行在 GNU / Linux,macOS 和 Windows 操作系統上。每次push的時候 GitLab CI 會根據.gitlab-ci.yml配置文件運行你流水線(Pipeline)中各個階段的任務(Job),並將結果發送回 GitLab。GitLab Runner 是基於 Gitlab CI 的 API 進行構建的相互隔離的機器(或虛擬機)。           GitLab Runner 不需要和 Gitlab 安裝在同一台機器上,且考慮到 GitLab Runner 的資源消耗問題和安全問題,也不建議這兩者安裝在同一台機器上。
       Gitlab Runner分為三種:
          共享Runner(shared runners)
          專享Runner(specific runners)
          分組Runner(Group runners)
    4) Pipelines
        Pipelines 中文稱為流水線,是分階段執行的構建任務。如:安裝依賴、運行測試、打包、部署開發服務器、部署生產服務器等流程。每一次push或者Merge Request都會觸發生成一條新的Pipeline。
       下面是流水線示例圖:
        All 573 
Status 
@ passed 
@ passed 
@ passed 
Pending O 
Pipeline 
#18968 
#18967 
#18864 
Running 
o 
Finished 
Triggerer 
573 
Branches 
Commit 
Tags 
Stages 
P master -o- gbd8b470 
ppre -o- f6bag6c8 
€3 
Merge branch 'FCM' into pre 
Pmaster 176g17db 
Run Pipeline 
1 hour ago 
1 hour ago 
3 days ago
    5) Stages
        Stages表示構建階段,可以理解為上面所說


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM