1. 程式人生 > 其它 >gitlab ci/cd介紹

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。 下面是流水線示例圖: 5) Stages Stages表示構建階段,可以理解為上面所說