Devops自動化部署方案CICD-Jenkins&gitlab實踐

1. CI/CD

1.1 概念

持續(xù)集成(Continuous integration)是一種軟件開發(fā)實踐,即團隊開發(fā)成員經(jīng)常集成他們的工作,通常每個成員每天至少集成一次,也就意味著每天可能會發(fā)生多次集成。每次集成都通過自動化的構(gòu)建(包括編譯,發(fā)布,自動化測試)來驗證,從而盡早地發(fā)現(xiàn)集成錯誤。

持續(xù)部署(Continuous Deployment)強調(diào)部署代碼的過程實現(xiàn)自動化。

1.2 必要性

將機械的行為自動化,節(jié)省開發(fā)、測試、運維的工作量,且自動化行為不容易出錯。

2.CI/CD工具

工欲善其事,必先利其器。 -- 《論語》

持續(xù)集成/部署最流行的工具當屬Jenkins和gitlab了。

這兩種工具的docker方式安裝我之前都寫過博文記錄了。

docker搭建Jenkins平臺
docker搭建gitlab平臺

在以上基礎(chǔ)上,我們來體驗一下Jenkins pipelines和gitlab pipelines的效果。

2.1 Jenkins 流水線實踐

假設(shè)你已經(jīng)根據(jù)搭建好了你自己的Jenkins平臺。
下面我們來創(chuàng)建一個簡單的流水線示例。

  • 創(chuàng)建一個任務


    image.png
  • 填寫名稱->選擇流水線->確定


    image.png
  • 配置以下的流水線步驟,其它可以不配置
    下面的pipeline包括了三個階段stage,Build->Test->Deploy,Deploy對sh 'echo "retry again"'做了是吧

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'echo "Building environment"'
            }
        }
        stage('Test') {
            steps {
                sh 'echo "Code Test"'
            }
        }
        stage('Deploy') {
            steps {
                timeout(time: 3, unit: 'MINUTES') {
                    retry(3) {
                        sh 'echo "retry again"'
                    }
                }
                sh 'echo "Deploy success"'
            }
        }
    }
}
image.png
  • 構(gòu)建一下


    image.png
  • 我在構(gòu)建一次,點logs還可以看輸出


    image.png

    image.png

具體可以參考Jenkins文檔:
pipeline 執(zhí)行多個步驟(step)
流水線

  • 總結(jié)
    流水線其實就是一個自動化建模系統(tǒng),可以實現(xiàn)很多流程化的東西,比如環(huán)境構(gòu)建,代碼單元測試,代碼發(fā)布,發(fā)布完成通知等等。最后引用Jenkins文檔的一段話做一個完整的論述:

本質(zhì)上,Jenkins 是一個自動化引擎,它支持許多自動模式。 流水線向Jenkins中添加了一組強大的工具, 支持用例 簡單的持續(xù)集成到全面的CD流水線。通過對一系列的相關(guān)任務進行建模, 用戶可以利用流水線的很多特性:

  • Code: 流水線是在代碼中實現(xiàn)的,通常會檢查到源代碼控制, 使團隊有編輯, 審查和迭代他們的交付流水線的能力。

  • Durable: 流水線可以從Jenkins的主分支的計劃內(nèi)和計劃外的重啟中存活下來。

  • Pausable: 流水線可以有選擇的停止或等待人工輸入或批準,然后才能繼續(xù)運行流水線。

  • Versatile: 流水線支持復雜的現(xiàn)實世界的 CD 需求, 包括fork/join, 循環(huán), 并行執(zhí)行工作的能力。

  • Extensible:流水線插件支持擴展到它的DSL 的慣例和與其他插件集成的多個選項。

然而, Jenkins一直允許以將自由式工作鏈接到一起的初級形式來執(zhí)行順序任務, 流水線使這個概念成為了Jenkins的頭等公民。

構(gòu)建一個的可擴展的核心Jenkins值, 流水線也可以通過 Pipeline Shared Libraries 的用戶和插件開發(fā)人員來擴展。
下面的流程圖是一個 CD 場景的示例,在Jenkins中很容易對該場景進行建模:

image.png


2.2 gitlab 流水線實踐

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

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