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

DevOps落地筆記-14|部署流水線:打造一站式部署的關(guān)鍵平臺

這篇具有很好參考價值的文章主要介紹了DevOps落地筆記-14|部署流水線:打造一站式部署的關(guān)鍵平臺。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

上一課時我主要介紹了實現(xiàn)自動化測試的范圍、流程和結(jié)構(gòu)圖,自動化測試是持續(xù)集成實踐不可或缺的一部分,從而使得軟件向高效率和高質(zhì)量邁進了一大步。持續(xù)集成主要關(guān)注的是代碼是否可以編譯成功、是否可以通過單元測試和驗收測試等。但持續(xù)集成并不能實現(xiàn)軟件包向測試環(huán)境和生產(chǎn)環(huán)境部署的要求。如果軟件包不能很快的部署到測試環(huán)境和類生產(chǎn)環(huán)境,就導(dǎo)致開發(fā)人員不能及時的收到反饋,就會使軟件存在更多的缺陷。今天介紹的內(nèi)容——部署流水線,就是搭建一套從開發(fā)到測試,到運維的流水線,能夠?qū)崿F(xiàn)一鍵式的將軟件部署到生產(chǎn)環(huán)境。

什么是部署流水線?

軟件開發(fā)過程是一個將客戶或用戶的想法變成一個真實可用的特性的過程。部署流水線是這個過程中的一部分,是指軟件從版本控制庫到用戶手中這一過程自動化的展現(xiàn)形式。這一過程包括編譯構(gòu)建、代碼檢查、上傳制品庫、測試和部署等,并且這些階段的執(zhí)行都應(yīng)該是自動執(zhí)行的。自動化帶來的好處是這個流程變得更快、可重復(fù)且更加可靠。

部署流水線主要包含下面幾個階段:

& 提交階段,代碼提交后會運行代碼編譯、自動化單元測試以及對代碼進行動靜態(tài)掃描;

& 自動化測試階段,主要是從功能性和非功能性方面驗證系統(tǒng)是否可用,并且滿足用戶需求;

& 手工測試階段,主要是用戶驗收測試,用于驗證系統(tǒng)是否為用戶提供了價值;

**發(fā)布階段,**將軟件交付給用戶,交付方式有多種,可以是獨立部署的方式,也可以是 SaaS 服務(wù)的方式。

部署流水線包含的很多階段我們之前的課程都有提到,比如提交檢查、自動化測試等,和部署相關(guān)的內(nèi)容涉及較少,這部分內(nèi)容是本課時的一個重點。

部署流水線相關(guān)實踐

為了更好地發(fā)揮部署流水線的作用,在實施部署流水線的時候要遵循以下幾個準則:

一包到底

一包到底是之前課時的內(nèi)容,就是將軟件從源代碼編譯構(gòu)建出一個部署包,在后續(xù)的流程中都統(tǒng)一使用這一個部署包。這樣做的好處有以下兩點。

& 減少了編譯時間:每次編譯都需要花費時間,并且占用編譯機的資源,如果代碼庫比較大重復(fù)編譯將是一場災(zāi)難。

& 保證部署包的一致性:因為在各個階級進行測試的部署包都是同一個,這樣可以保證部署到生產(chǎn)環(huán)境中的部署包與前面測試階段驗證過的部署包是完全一樣的。

那么如何保證每次部署的包都是同一個呢?在之前的流水線中,每次生成部署包的同時也會生成一個 md5 值,并在后續(xù)每次部署時利用這個 md5 值對部署包進行驗證。這也是大多數(shù)企業(yè)中部署時采用的一種方法。

另外,對于每次構(gòu)建出的部署包都需要存放到專門的制品庫中,如 Jfrog Artifactory。這一步驟可以集成到持續(xù)集成流水線中,上傳制品庫時同時也會攜帶該部署包的屬性,如:代碼庫、版本號、CommitId。Jfrog Artifactory 支持對制品打標簽,可以在后續(xù)的測試階段將測試結(jié)果以標簽的形式打到制品上,作為是否進階到下一個階段的判斷條件。

相同的部署方式

使用相同的流水線、相同的部署方式部署任意一套環(huán)境,包括生產(chǎn)環(huán)境! 這樣既能對構(gòu)建和部署流程進行有效測試,提高部署流水線的穩(wěn)定性和健壯性。又能保證不同環(huán)境的部署過程是一致的。當部署的服務(wù)出現(xiàn)問題時,可以排除部署腳本導(dǎo)致的因素。

實際情況中,每套環(huán)境有很多不同之處,比如機器的 IP 會不同,操作系統(tǒng)和中間件的配置不同等。不同的環(huán)境信息并不意味著就要為每套環(huán)境都準備一套部署腳本,我們可以采用將部署腳本與配置信息分離的方法。在之前的“環(huán)境管理”課時中提到,將部署腳本作為模板存儲在 Git 代碼庫中,將每個環(huán)境不同的配置信息存儲在 CMDB 中,就能實現(xiàn)通過一套部署腳本部署所有環(huán)境。

采用相同的部署方式是降低發(fā)布風(fēng)險的方法之一。因為不管是測試環(huán)境、還是生產(chǎn)環(huán)境都是相同的部署方式,在向生產(chǎn)環(huán)境部署之前,已經(jīng)在測試環(huán)境部署了 n 次了,部署腳本已經(jīng)非常健壯,能夠大大降低向生產(chǎn)環(huán)境部署的風(fēng)險。

對部署冒煙測試

在應(yīng)用程序部署完成后,應(yīng)該有相應(yīng)的腳本對應(yīng)用程序進行冒煙測試,以確保應(yīng)用程序啟動并運行了。這個測試可以很簡單,比如調(diào)用接口檢查是否能正常返回。如果要檢查依賴的服務(wù),比如數(shù)據(jù)庫和緩存服務(wù)等,可以調(diào)用從依賴服務(wù)獲取數(shù)據(jù)的接口,結(jié)果可以是空,只要能確保連接是正常的即可。

冒煙測試又稱為部署測試,它是環(huán)境部署完成并交付使用的有效驗證方法。如果服務(wù)不可用,也能知道是什么原因?qū)е碌牟豢捎茫菏欠?wù)本身還是依賴服務(wù)?這對排除應(yīng)用程序無法正常運行問題也很有幫助。

如何實現(xiàn)部署流水線

下面介紹一下如何實現(xiàn)部署流水線。下圖是部署流水線的結(jié)構(gòu)圖,該圖也反映了真實的軟件交付過程。起點是開發(fā)人員將代碼提交到版本控制系統(tǒng)中,終點是將軟件部署到生產(chǎn)環(huán)境交付給用戶。在上面介紹的部署流水線的相關(guān)實踐,在該圖中都有所體現(xiàn)。

& 版本控制系統(tǒng)和制品庫是源代碼和制品的單一可信數(shù)據(jù)源。制品庫中的部署包只能通過版本控制系統(tǒng)中的源代碼編譯構(gòu)建產(chǎn)出,并上傳到制品庫。后面測試環(huán)境和生產(chǎn)環(huán)境需要的部署包都來自同一個制品庫,保證了部署包的唯一性。

& 測試環(huán)境和生產(chǎn)環(huán)境都是通過部署平臺統(tǒng)一部署,測試環(huán)境可以由測試人員自服務(wù)部署,生產(chǎn)環(huán)境可以由運維人員一鍵部署。

& 不管是測試環(huán)境還是生產(chǎn)環(huán)境,當軟件部署完成后,通過冒煙測試驗證服務(wù)是否正常啟動。
init:devops 標書,java,devops,筆記,運維,java,后端
部署流水線中的很多階段在之前的課時中都有涉及,提交階段的編譯打包、代碼掃描、自動化測試、環(huán)境管理等,這里就不做太多闡述。我主要介紹一下自動化部署和發(fā)布到生產(chǎn)環(huán)境相關(guān)的內(nèi)容。如下圖所示,自動化部署平臺提供一鍵部署的功能。用戶只需要選擇在哪個環(huán)境、使用哪個軟件版本,采用什么樣的部署策略即可。
init:devops 標書,java,devops,筆記,運維,java,后端
自動化部署平臺

自動化部署平臺是部署流水線中的重要組件,通過封裝統(tǒng)一的部署流程,提供易用的用戶界面,對外提供統(tǒng)一的軟件部署的能力。部署平臺提供一套部署腳本,屏蔽測試環(huán)境和生產(chǎn)環(huán)境的差異。在進行自動化部署時,只需要提供部署的軟件版本以及要部署的目標環(huán)境,采用什么樣的部署策略(只對生產(chǎn)環(huán)境有效),點擊“開始”按鈕,所有的部署過程都是自動化的。

關(guān)于“部署軟件”和“發(fā)布軟件”,很多人認為它們是一樣的,他們的區(qū)別在于 “發(fā)布”是一個業(yè)務(wù)行為。部署軟件是將軟件部署到生產(chǎn)環(huán)境中,但部署的服務(wù)是否發(fā)布給用戶是由業(yè)務(wù)決定的。目前很多企業(yè)中,部署和發(fā)布是相等的,軟件部署到生產(chǎn)環(huán)境就直接發(fā)布給用戶使用了。但有些功能這樣做會有問題,特別是跟時間、位置相關(guān)的功能。比如促銷活動,只能在固定的時間范圍內(nèi)有效。只不過目前的發(fā)布并不是由業(yè)務(wù)人員手動點擊發(fā)布按鈕觸發(fā),而是由程序自動化的觸發(fā)。

部署策略

部署策略是針對生產(chǎn)環(huán)境的,因為生產(chǎn)環(huán)境是用戶使用的真實環(huán)境,部署失敗可能會對用戶造成嚴重影響。因此,在部署生產(chǎn)環(huán)境時要采取低風(fēng)險、零停機的部署方式。目前常用的方式有藍綠部署、金絲雀發(fā)布和特性開關(guān)等方式。

& 藍綠部署:藍綠部署是指有兩套相同的生產(chǎn)環(huán)境,一套叫藍環(huán)境,一套叫綠環(huán)境。如上圖中兩種不同的顏色。假如當前用戶正在使用作為生產(chǎn)環(huán)境的藍環(huán)境。如果要發(fā)布一個新版本,先把該版本發(fā)布到綠環(huán)境中,并在綠環(huán)境中進行冒煙測試來檢查服務(wù)是否可以正常工作。當一切準備就緒后,將用戶引導(dǎo)到綠環(huán)境即可完成新版本的升級。如果此時出現(xiàn)問題,再將用戶切換回之前的藍環(huán)境即可完成回滾。這樣不會對用戶造成太大的影響。

& 金絲雀發(fā)布:金絲雀發(fā)布是指將新版本的服務(wù)部署到生產(chǎn)環(huán)境的一部分服務(wù)器中,如上圖所示。通過一小撮用戶試用的方式,可以快速得到反饋,及時的發(fā)現(xiàn)新版本中存在的問題,而不會影響大部分用戶。如果新版本出現(xiàn)問題,只要不把流量引導(dǎo)到有問題的新版本上就行。另外,金絲雀發(fā)布的方式可以用來做 A/B 測試,將一部分用戶引導(dǎo)至新版本和舊版本上,分別分析不同版本對用戶、收入等指標的差異。

& 特性開關(guān):特性開關(guān)是一種輕松開啟和關(guān)閉功能的方式。當軟件部署到生產(chǎn)環(huán)境中,此時該功能并未對用戶開放,只有通過特性開關(guān)啟用該功能時,用戶才能使用該功能。如果此時發(fā)現(xiàn)問題,只需要將開關(guān)關(guān)閉即可。特性開關(guān)實現(xiàn)也比較簡單,可以在代碼中通過 if-else 的方式控制代碼執(zhí)行的路徑。

總結(jié)

本課時介紹了使用部署流水線實現(xiàn)一鍵部署軟件到測試環(huán)境及生產(chǎn)環(huán)境,通過自動化的方式完成軟件部署的最后一公里。部署流水線并不是指用于部署,而是從代碼提交到代碼庫到最終部署到生產(chǎn)環(huán)境的整個過程,包含了前面提到的代碼掃描、自動化測試和環(huán)境管理等階段。為了更好地實施部署流水線,介紹了幾個關(guān)鍵的實踐以及通過自動化部署平臺完成部署這個階段的操作,最后介紹了零停機發(fā)布到生產(chǎn)環(huán)境的幾種部署策略,實現(xiàn)低風(fēng)險發(fā)布。部署流水線是 CICD 的重要組成部分,也是實現(xiàn)持續(xù)部署的重要環(huán)節(jié)。這一部分在企業(yè)里一般屬于運維側(cè)平臺,隨著 DevOps 的普及,開發(fā)和運維的界限越來越模糊,開發(fā)人員可以利用運維開發(fā)的部署平臺自服務(wù),根據(jù)業(yè)務(wù)需求隨時發(fā)布軟件到生產(chǎn)環(huán)境。文章來源地址http://www.zghlxwxcb.cn/news/detail-835048.html

到了這里,關(guān)于DevOps落地筆記-14|部署流水線:打造一站式部署的關(guān)鍵平臺的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 云計算課程第四次實驗-搭建DevOps流水線

    云計算課程第四次實驗-搭建DevOps流水線

    子任務(wù)2:搭建DevOps流水線環(huán)境 ? 本實驗以主機本地虛擬機為載體,搭建Dev-ops流水線環(huán)境 使用的工具: 目錄 一、實驗概述 1.實驗名稱 2.實驗?zāi)康?3.實驗環(huán)境 二、實驗內(nèi)容 1.實驗設(shè)計 2.實驗過程 1.gitlab-server的搭建 2.harbor-server的搭建 3.Jenkins-server的搭建 4.Web-server的搭建 5.Dev搭

    2024年02月03日
    瀏覽(40)
  • DevOps系列文章 之GitLabCI模板庫的流水線

    DevOps系列文章 之GitLabCI模板庫的流水線

    目錄結(jié)構(gòu),jobs目錄用于存放作業(yè)模板。templates目錄用于存放流水線模板。這次使用? ?default-pipeline.yml? ?作為所有作業(yè)的基礎(chǔ)模板。 作業(yè)模板 作業(yè)分為Build、test、codeanalysis、artifactory、deploy部分,在每個作業(yè)中配置了rules功能開關(guān),由變量控制最終作業(yè)的運行。 jobs/buil

    2024年02月16日
    瀏覽(67)
  • (十六)devops持續(xù)集成開發(fā)——jenkins流水線構(gòu)建之郵件通知

    (十六)devops持續(xù)集成開發(fā)——jenkins流水線構(gòu)建之郵件通知

    本節(jié)內(nèi)容主要介紹jenkins在流水線任務(wù)構(gòu)建完成后的通知操作,使用jenkins的郵件通知插件完成構(gòu)建任務(wù)結(jié)束的通知。一般項目發(fā)布都會通知相關(guān)的責任人,這樣項目發(fā)布在出現(xiàn)問題時能夠及時的處理。 ①在插件中心安裝Email Extension郵件通知插件 ②申請一個發(fā)送郵件的郵箱服務(wù)

    2024年02月21日
    瀏覽(39)
  • 用diffuser代碼方式打造Ai作畫流水線(1)

    用diffuser代碼方式打造Ai作畫流水線(1)

    stablediffusion已經(jīng)成為作畫人的標配,通過sd的ps插件,或者通過SD webui就可以快速的構(gòu)建出一套屬于自己的Ai作畫環(huán)境。這種可視化的界面確實方便也是更好藝術(shù)家個代碼工程師協(xié)同合作的模式,可視化界面方便藝術(shù)家創(chuàng)造,需要更多組建、模型支持時候可以算法工程師來幫忙

    2024年02月11日
    瀏覽(24)
  • (十四)devops持續(xù)集成開發(fā)——jenkins流水線使用pipeline方式發(fā)布項目

    (十四)devops持續(xù)集成開發(fā)——jenkins流水線使用pipeline方式發(fā)布項目

    本節(jié)內(nèi)容我們使用另外一種方式pipeline實現(xiàn)項目的流水線部署發(fā)布,Jenkins Pipeline是一種允許以代碼方式定義持續(xù)集成和持續(xù)交付流水線的工具。通過Jenkins Pipeline,可以將整個項目的構(gòu)建、測試和部署過程以腳本的形式寫入Jenkinsfile中,實現(xiàn)對整個流程的可視化管理和控制。在

    2024年02月21日
    瀏覽(37)
  • PingCode DevOps 團隊:企業(yè)CICD流水線可能會遇到的問題及解法

    CICD 流水線是指一系列自動化的構(gòu)建、測試和部署步驟,用于將應(yīng)用程序從開發(fā)到生產(chǎn)環(huán)境的過程。在 CICD 流水線中,每個步驟都是自動化的,并且在完成后會觸發(fā)下一個步驟的執(zhí)行。 CICD 流水線可以幫助團隊更快地交付產(chǎn)品,減少手動錯誤,并提高軟件質(zhì)量。通過自動化構(gòu)

    2024年02月10日
    瀏覽(21)
  • devops-5:從0開始構(gòu)建一條完成的CI CD流水線

    devops-5:從0開始構(gòu)建一條完成的CI CD流水線

    前文中已經(jīng)講述了靜態(tài)、動態(tài)增加agent節(jié)點,以動態(tài)的k8s cloud為例,下面就以Maven構(gòu)建Java程序為例,開始構(gòu)建出一條完整的CI CD流水線。 實現(xiàn)功能目標: 1.分別可以根據(jù)分支和tag從源碼倉庫clone代碼 2.拿到源碼后開始編譯 3.構(gòu)建image,并push到鏡像倉庫 4.部署到對應(yīng)k8s集群 5.部署

    2023年04月20日
    瀏覽(43)
  • (十五)devops持續(xù)集成開發(fā)——jenkins流水線構(gòu)建策略配置及觸發(fā)器的使用

    (十五)devops持續(xù)集成開發(fā)——jenkins流水線構(gòu)建策略配置及觸發(fā)器的使用

    本節(jié)內(nèi)容我們主要介紹在Jenkins流水線中,其構(gòu)建過程中的一些構(gòu)建策略的配置,例如通過遠程http構(gòu)建、定時任務(wù)構(gòu)建、輪詢SCM構(gòu)建、參數(shù)化構(gòu)建、Git hook鉤子觸發(fā)構(gòu)建等,可根據(jù)不同的需求完成不同構(gòu)建策略的配置。 - 構(gòu)建策略說明: - 測試驗證 - 構(gòu)建說明 - 測試驗證 - 配置

    2024年02月21日
    瀏覽(39)
  • Jenkins部署Docker與Jenkins流水線

    Jenkins部署Docker與Jenkins流水線

    接上篇 1. 外掛文件的方式在docker容器中啟動 2. 將構(gòu)建運行放入docker容器中(不構(gòu)建鏡像) 修改Jenkins構(gòu)建前設(shè)置 修改部署后操作 重新構(gòu)建,已經(jīng)成功構(gòu)建在容器中 3. 將構(gòu)建運行放入docker鏡像中(采用dockerfile) 1.編寫dockerfile,放入項目中, 注意不能和依賴的包同級 寫好可

    2024年01月22日
    瀏覽(47)
  • [小白]Java自動部署之-流水線[超詳細]

    [小白]Java自動部署之-流水線[超詳細]

    個人博客: www.wdcdbd.com ? devops文檔鏈接: https://pan.baidu.com/s/12kOXbduI6daJBXQ0FWJaig?pwd=1234? ? ? 提取碼:1234 在我們開發(fā)寫代碼的時候,可以在本地啟動,這樣似乎挺方便的,但是如果我們想要部署到服務(wù)器上就很費勁了,不但要maven構(gòu)建和將.jar包發(fā)布上去,還要重啟等一系列麻

    2024年01月23日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包