国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

什么是 CI/CD ?

這篇具有很好參考價值的文章主要介紹了什么是 CI/CD ?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

cicd,linux,ci,jenkins,git

說在開頭
CI、CD 其實是三個概念,包含了一個 CI 和兩個 CD,CI全稱 Continuous Integration,表示持續(xù)集成,CD包含 Continuous Delivery和 Continuous Deployment,分別是持續(xù)交付和持續(xù)部署。這三個概念之間是有前后依賴關系的。
CI/CD 并不是一個工具,它是一種軟件開發(fā)實踐,核心是通過引入自動化的手段來提高軟件交付效率。CI/CD 最終目的:讓工程師更快 & 更高質(zhì)量 & 更簡單的交付軟件!

持續(xù)集成 & 持續(xù)交付 & 持續(xù)部署
持續(xù)集成(Continuous Integration)

什么是持續(xù)集成?
定義:持續(xù)頻繁的(每天多次)將本地代碼“集成”到主干分支,并保證主干分支可用

持續(xù)集成這個詞,起源于極限編程,是當時原始的12種實踐之一,持續(xù)集成的目的快速反饋問題讓產(chǎn)品可以快速迭代,同時還能保持高質(zhì)量。它的核心措施是,代碼集成到主干之前,必須通過編譯、代碼掃描、安全掃描、自動化測試等。只要編譯失敗、掃描出高級別問題或測試用例失敗,就不能集成。
Martin Fowler 說過,“持續(xù)集成并不能消除Bug,而是讓它們非常容易發(fā)現(xiàn)和改正?!?/p>

好處?
(1)通過自動化手段提高集成速度
在傳統(tǒng)的研發(fā)過程中,一般通過手動方式執(zhí)行編譯、測試、部署,自動化后,可大幅提高集成頻次,同時可以減少維護手工腳本帶來的低級問題
(2)將問題前置
在每次 commit 時就觸發(fā)編譯、測試,更快的發(fā)現(xiàn)問題
(3)防止本地代碼大幅偏離主干
如果不是經(jīng)常集成,主干又在不斷更新,會導致以后集成的難度變大,甚至難以集成。
cicd,linux,ci,jenkins,git

觸發(fā)方式?
自動觸發(fā),通過自動化的 CI 服務或工具,自動監(jiān)聽代碼庫 Git Push & MR 等事件觸發(fā)

常見的工具如 Jenkins、GitlabCI、CircleCI、GithubActions 等等

螞蟻支持持續(xù)集成平臺有:雨燕(前端)、LinkE CI(后端)、伙伴(終端)、ACI(多語言)等

面臨的問題 & 阻礙?
理想很豐滿,現(xiàn)實很骨感,持續(xù)集成理念雖好,但實踐過程中卻有非常多的問題和阻礙,遠沒有想象中那么簡單!

常見的問題如:
(1)執(zhí)行環(huán)境異構(gòu)導致結(jié)果差異
比如Java測試,用戶執(zhí)行測試一般是本地通過IDEA右擊執(zhí)行測試或 mvn 命令,但是 CI 服務上的環(huán)境&機器規(guī)格和本地有很多差異,比如 JDK 不一樣、Maven 版本不一樣、Mac 和 Linux 差異等等會造成很多本地執(zhí)行可以通過但是 CI 上執(zhí)行不通過,或者 CI 上執(zhí)行明顯比本地慢的現(xiàn)象。
解決此類問題本質(zhì)還是減少異構(gòu),比如通過容器化方式讓執(zhí)行環(huán)境標準化,通過 Maven 緩存提高測試時間等等,同時作為 CI/CD 平臺方,也最好將測試、構(gòu)建的過程透明化(執(zhí)行機制、清晰的錯誤碼和解決方案),方便在出現(xiàn)問題的時候開發(fā)可以很方便的自助排查。

(2)沒有嚴格的測試要求
持續(xù)集成的理念是只要有問題一定要及時修復,比如執(zhí)行測試,必須保證所有case全部通過才能集成到主干,但是在現(xiàn)實中的場景,特別是一些規(guī)模大的歷史項目,由于歷史債等原因,導致測試case無法全部通過或者必須通過重試解決,開發(fā)很難有動力去改,導致集成質(zhì)量低效。
所以,持續(xù)集成的前提是,需要有一個心里準備花大精力去治理項目中的一些歷史債,尤其是改善歷史 case ,補充新 case ,降低 case 噪音,確保每次自動化觸發(fā)的測試可以準確反饋集成質(zhì)量!

(3)非常慢的構(gòu)建 & 測試速度
在 CI 上執(zhí)行構(gòu)建或測試的速度非常慢,導致集成效率非常低,這里的慢有兩種原因,一種是本身測試&編譯就慢,這時需要深入分析,需要結(jié)合并行分組、分布式緩存等技術解決。
這里的自動化測試中的集成測試可能會非常慢,所以一般保證在持續(xù)集成階段先讓單元測試通過,集成測試放在在持續(xù)交付階段完成。

持續(xù)交付(Continuous Delivery)
什么是持續(xù)交付?
定義:是持續(xù)集成的下一步,持續(xù)頻繁地將軟件的新版本交付到類生產(chǎn)環(huán)境(類似于預發(fā)),交付給測試、產(chǎn)品驗收。
持續(xù)交付強調(diào)的是“交付”,不管怎么更新,軟件是隨時隨地可以交付的,相比持續(xù)集成,持續(xù)交付除了交付到類生產(chǎn)環(huán)境之外,還會執(zhí)行一些集成測試、API測試等等,確保交付的產(chǎn)物可以直接交付部署。

觸發(fā)方式?
手動觸發(fā),通過研發(fā)平臺手動觸發(fā)(如觸發(fā)LinkE預發(fā)部署流水線),一般交付結(jié)果是一個二進制包或者鏡像

面臨的問題 & 阻礙?
(1)很難保證和線上環(huán)境完全一致
由于持續(xù)交付的環(huán)境很難和線上環(huán)境一致,所以可能導致一些問題無法驗證,使得交付的產(chǎn)物具備一定風險
探索方案:仿真環(huán)境

(2)大量腦殼疼的聯(lián)調(diào)環(huán)境問題
經(jīng)常遇到的場景是雖然本系統(tǒng)開發(fā)好了,但是由于各種原因?qū)е律舷掠蜗到y(tǒng)沒有 ready 導致無法持續(xù)交付,針對上下游依賴非常多的系統(tǒng),對聯(lián)調(diào)環(huán)境穩(wěn)定性、效率有非常強的依賴

(3)很難保證嚴格充分的自動化測試
持續(xù)交付最終要做到交付的產(chǎn)物可直接部署線上,那么對代碼的質(zhì)量要求就非常高,需要覆蓋全場景充分的測試 case

持續(xù)部署(Continuous Deployment)
什么是持續(xù)部署?

定義:是持續(xù)交付的下一步,“自動”將代碼部署到生產(chǎn)環(huán)境

持續(xù)部署強調(diào)的是“部署”,它的目標是,代碼在任何時刻都是可部署的,可以進入生產(chǎn)階段。

持續(xù)部署和持續(xù)交付觸發(fā)方式的區(qū)別是,持續(xù)部署是自動完成的,持續(xù)交付是手動完成的

觸發(fā)方式?
自動觸發(fā),通過研發(fā)平臺配置定時任務,自動獲取交付產(chǎn)物進行自動部署。

目前即使在螞蟻,應該很少有團隊和研發(fā)平臺能夠真正做到持續(xù)部署,因為持續(xù)的部署的條件更加嚴苛

面臨的問題 & 阻礙?
(1)發(fā)布條件受限
部分場景上線需要嚴格的審批的流程 & 頻繁的封網(wǎng)
(2)低效手工發(fā)布流程
發(fā)布過程需要人工一次次確認,灰度和線上發(fā)布過程多分組場景下,需要一次次人工確定,不放心自動發(fā)布
目前螞蟻解決方案:無人值守
(3)缺乏線上問題快速準確的反饋機制( 精準 OPS 能力)
沒有 OPS 或者 OPS 噪音太大都會導致反饋不及時,這樣研發(fā)就不敢把部署過程直接交給系統(tǒng),也是上面發(fā)布需要人工確認的根因

目前公司對線上安全要求非常高,持續(xù)部署現(xiàn)階段很難在螞蟻大規(guī)模落地,特別針對類似金融核心這些安全要求非常高的系統(tǒng),不過其實也未必要“一刀切”,公司還有很多級別不是特別高的應用,可以嘗試小范圍針對這些應用試點,同時不斷持續(xù)改進周邊 OPS 工具

cicd,linux,ci,jenkins,git

最后
最后,我們來暢想一下,一個優(yōu)秀的 CI/CD 研發(fā)過程應該是什么樣子的?
假設開發(fā)同學小螞第一天入職,他打開電腦,通過以下幾步完成上線:
第一步:從 AntCode clone 代碼到本地,修改了幾行代碼,本地測試后,通過git commit & push到代碼倉庫
第二步:push 過程自動觸發(fā)了 CI 流水線,5 min 后,執(zhí)行結(jié)束,通過釘釘通知告訴小螞某個測試case失敗了
第三步:小螞本地修改失敗 case ,重新 commit & push ,再次觸發(fā) CI 流水線,自動執(zhí)行編譯、測試、掃描等,收到釘釘消息,執(zhí)行通過
第四步:小螞將功能交給測試&產(chǎn)品驗收,發(fā)現(xiàn)問題或收到建議,重新到第二步修改代碼。
第五步:測試&產(chǎn)品驗收沒有問題后,手動觸發(fā)預發(fā)部署流水線,并自動生成部署產(chǎn)物交付,后面流程就不用管啦。
第六步:持續(xù)部署流水線每幾分鐘自動檢測交付產(chǎn)物包,發(fā)現(xiàn)更新后,自動將產(chǎn)物部署到線上。發(fā)布成功后,小螞收到通知小螞的功能生效啦。

理想狀態(tài)?
(1)由于發(fā)布而導致的加班頻次應該大幅減少
(2)開發(fā)大部分精力是花在寫代碼和思考如何寫好代碼,掃描、部署的事情交由平臺自動化完成,并且體驗良好,反饋精準。文章來源地址http://www.zghlxwxcb.cn/news/detail-779628.html

到了這里,關于什么是 CI/CD ?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • jenkins容器內(nèi)CI/CD 項目失敗問題

    1.1 原因:jenkins容器內(nèi): docker.sock 權(quán)限 1.2 問題解決方案 文件權(quán)限如下: srw-rw---- 1 root 994 0 Jun 30 06:51 docker.sock 進行權(quán)限修改 最終權(quán)限修改成功為:srw-rw-rw- 1 root root 0 Jun 30 06:51 docker.sock 2.1 問題原因 項目為前端vue,依賴于nodejs 和 npm, 需要為容器安裝npm, nodejs 2.2 問題解決方

    2024年02月13日
    瀏覽(29)
  • 基于 Jenkins 搭建一套 CI/CD 系統(tǒng)

    基于 Jenkins 搭建一套 CI/CD 系統(tǒng)

    一、CI/CD環(huán)境介紹 本次要實現(xiàn)如下效果,開發(fā)人員完成功能開發(fā)并提交代碼到gitlab倉庫,jenkins自動完成拉取代碼、編譯構(gòu)建、代碼掃描(sonarqube)、打包,再自動化完成部署到Tomcat服務器提供訪問。 環(huán)境準備三臺Centos7.6機器: 服務器 IP地址 配置 包含功能及版本 Gitlab 192.1

    2024年03月13日
    瀏覽(67)
  • docker部署Jenkins(Jenkins+Gitlab+Maven實現(xiàn)CI/CD)

    docker部署Jenkins(Jenkins+Gitlab+Maven實現(xiàn)CI/CD)

    ?? ?? GitLab是一個用于倉庫管理系統(tǒng)的開源項目,使用Git作為代碼管理工具,并在此基礎上搭建起來的Web服務,可通過Web界面進行訪問公開的或者私人項目。它擁有與Github類似的功能,能夠瀏覽源代碼,管理缺陷和注釋。 ??????GitLab是由GitLabInc.開發(fā),使用MIT許可證的基于

    2024年02月03日
    瀏覽(32)
  • gitlab+jenkins+harbor實現(xiàn)CI/CD(2)——初級

    gitlab+jenkins+harbor實現(xiàn)CI/CD(2)——初級

    git安裝 jenkins主機上安裝docker-ce 配置倉庫證書 測試 創(chuàng)建項目 創(chuàng)建一個freestyle project 在jenkins主機獲取密鑰 在gitlab上傳公鑰 在jenkins上傳私鑰 輸入測試命令后保存 點擊立即構(gòu)建 查看控制臺輸出 工作路徑 構(gòu)建觸發(fā)器,定時觸發(fā) 安裝插件 gitlab和 Cloudbee docker 配置gitlab 在網(wǎng)絡設

    2024年02月09日
    瀏覽(26)
  • 什么是 CI/CD ?

    什么是 CI/CD ?

    說在開頭 CI、CD 其實是三個概念,包含了一個 CI 和兩個 CD,CI全稱 Continuous Integration,表示持續(xù)集成,CD包含 Continuous Delivery和 Continuous Deployment,分別是持續(xù)交付和持續(xù)部署。這三個概念之間是有前后依賴關系的。 CI/CD 并不是一個工具,它是一種軟件開發(fā)實踐,核心是通過引

    2024年02月03日
    瀏覽(23)
  • Jenkins CI/CD 持續(xù)集成專題三 Jenkins 使用shell腳本打包組件配置流程

    Jenkins CI/CD 持續(xù)集成專題三 Jenkins 使用shell腳本打包組件配置流程

    第六步 查看編譯狀態(tài)和產(chǎn)物 到這里,jenkins 配置shell腳本打包組件的完整配置流程就已經(jīng)完成

    2024年04月29日
    瀏覽(28)
  • nodejs前端項目的CI/CD實現(xiàn)(二)jenkins的容器化部署

    nodejs前端項目的CI/CD實現(xiàn)(二)jenkins的容器化部署

    docker安裝jenkins,可能你會反問,這太簡單了,有什么好講的。 我最近就接手了一個打包項目,它是一個nodejs的前端項目,jenkins已在容器里部署且運行OK。 但是,前端組很追求新技術,不斷地升級Nodejs的版本,之前是14,現(xiàn)在需要升級到16。 也就是說,原本運行順暢的打包不

    2024年01月20日
    瀏覽(24)
  • [Docker實現(xiàn)測試部署CI/CD----Jenkins集成相關服務器(3)]

    [Docker實現(xiàn)測試部署CI/CD----Jenkins集成相關服務器(3)]

    ???????? SonarScanner 是一種代碼掃描工具,專門用來掃描和分析項目代碼質(zhì)量。掃描和分析完 成之后,會將結(jié)果寫入到 SonarQube 服務器的數(shù)據(jù)庫中,并在 SonarQube 平臺顯示這些數(shù) 據(jù)。 ????????在 SonarQube 官網(wǎng)的幫助文檔中可以下載 SonarScanner。這里下載一個 Linux 系統(tǒng)下使

    2024年02月14日
    瀏覽(27)
  • Rancher2.7 + Jenkins CI/CD全流程保姆級最佳實踐

    Rancher2.7 + Jenkins CI/CD全流程保姆級最佳實踐

    CI方面,官方推薦的視頻教程等多是使用極狐Gitlab CI,但社區(qū)版極狐每月僅400分鐘構(gòu)造時間,額外購買價格為1000分鐘/68元,而私有化部署極狐Gitlab對比部署使用Jenkins,具有更高的成本、更狹窄的適用面,且如果個人使用其代碼倉庫功能,并不比Gitee可靠。 Gitee 同樣提供CI服務

    2024年02月05日
    瀏覽(29)
  • Jenkins分布式實現(xiàn): 構(gòu)建彈性和可擴展的CI/CD環(huán)境!

    Jenkins分布式實現(xiàn): 構(gòu)建彈性和可擴展的CI/CD環(huán)境!

    Jenkins是一個流行的開源持續(xù)集成(Continuous Integration,CI)和持續(xù)交付(Continuous Delivery,CD)工具,它通過自動化構(gòu)建、測試和部署過程,幫助開發(fā)團隊更高效地交付軟件。Jenkins的分布式實現(xiàn)允許將任務分散到多個計算機上執(zhí)行,從而提高系統(tǒng)的彈性和可擴展性。本文將深入

    2024年02月01日
    瀏覽(94)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包