持續(xù)交付-入門(mén)介紹

持續(xù)交付


目的

  • 快速發(fā)現(xiàn)錯(cuò)誤

    • “快速失敗”,在對(duì)產(chǎn)品沒(méi)有風(fēng)險(xiǎn)的情況下進(jìn)行測(cè)試袱箱,并快速響應(yīng);

    • 每完成一點(diǎn)更新义矛,就集成到主干发笔,可以快速發(fā)現(xiàn)錯(cuò)誤,定位錯(cuò)誤也比較容易凉翻。

    • 最大限度地減少風(fēng)險(xiǎn)了讨,降低修復(fù)錯(cuò)誤代碼的成本;

  • 將重復(fù)性的手工流程自動(dòng)化

    • 讓工程師更加專注于代碼;
  • 保持頻繁部署前计,快速生成可部署的軟件胞谭;

  • 防止分支大幅偏離主干。如果不是經(jīng)常集成残炮,主干又在不斷更新韭赘,會(huì)導(dǎo)致以后集成的難度變大,甚至難以集成势就。

  • 增強(qiáng)開(kāi)發(fā)人員對(duì)軟件產(chǎn)品的信心

    • 提供項(xiàng)目的能見(jiàn)度,方便團(tuán)隊(duì)成員了解項(xiàng)目的進(jìn)度和成熟度脉漏;

    • 幫助建立更好的工程師文化苞冯;


準(zhǔn)則

  • 持續(xù)集成不是工具,而是一種實(shí)踐

  • 所有人投入一定的精力

  • 修復(fù)那些破壞了應(yīng)用的任意源代碼修改是團(tuán)隊(duì)優(yōu)先級(jí)最高的任務(wù)

  • 有限性依賴于團(tuán)隊(duì)的紀(jì)律


實(shí)現(xiàn)方式

  • 準(zhǔn)備工作

    • 版本控制

      • 產(chǎn)品代碼

      • 測(cè)試代碼

      • 數(shù)據(jù)庫(kù)腳本

      • 構(gòu)建腳本

      • 部署腳本

    • 自動(dòng)化構(gòu)建

      • 前提條件

        • 人和計(jì)算機(jī)都能通過(guò)命令行自動(dòng)執(zhí)行應(yīng)用的構(gòu)建侧巨、測(cè)試以及部署過(guò)程
      • 目標(biāo)

        • 自動(dòng)化執(zhí)行整個(gè)過(guò)程舅锄,能對(duì)出現(xiàn)問(wèn)題的做審計(jì)

        • 構(gòu)建腳本應(yīng)該與應(yīng)用代碼同等對(duì)待

        • 構(gòu)建過(guò)程應(yīng)該容易理解、維護(hù)司忱、調(diào)試和協(xié)作

  • 持續(xù)集成系統(tǒng)

    • 工具

      • Jenkins
    • 文檔記錄和自動(dòng)化持續(xù)集成構(gòu)建服務(wù)器的配置

    • 工作步驟

      • 7個(gè)步驟的流程圖隨后可以畫(huà)一個(gè)
    • 期望結(jié)果

      • 環(huán)境只要與我的持續(xù)集成環(huán)境一直皇忿,我的軟件就可以工作

前提條件

  • 頻繁提交

    • 每天至少幾次

    • 代碼的主干-分支

      • 提交到主干

      • 不推薦使用分支

      • 分支無(wú)法實(shí)現(xiàn)持續(xù)集成

  • 創(chuàng)建全面的自動(dòng)化測(cè)試集合包

    • 單元測(cè)試

      • 對(duì)象

        • 每個(gè)方法

        • 每個(gè)函數(shù)

        • 一組方法和函數(shù)之間的調(diào)用

      • 十分鐘內(nèi)完成所有測(cè)試

    • 組件測(cè)試

      • 測(cè)試幾個(gè)組件的行為

      • 可能需要連接數(shù)據(jù)庫(kù)、訪問(wèn)文件系統(tǒng)坦仍、外部接口

      • 需要較長(zhǎng)時(shí)間完成測(cè)試

    • 驗(yàn)收測(cè)試

      • 測(cè)試是否滿足預(yù)定義的業(yè)務(wù)需求

      • 其它方面

        • 容量

        • 有效性

        • 安全性

      • 整個(gè)應(yīng)用最好運(yùn)行在類生產(chǎn)環(huán)境

      • 運(yùn)行一整天或者更長(zhǎng)

  • 構(gòu)建和測(cè)試過(guò)程維護(hù)在更短的時(shí)間內(nèi)

    • 理想的時(shí)間:十分鐘內(nèi)鳍烁,最好五分鐘內(nèi),越短越好

    • 效率工具

      • JUnit

      • NUnit

    • 將測(cè)試分成若干階段

      • 第一階段:提交階段

        • 編譯軟件

        • 執(zhí)行單元測(cè)試

        • 構(gòu)建部署包

        • 冒煙測(cè)試(可選)

      • 第二階段

        • 驗(yàn)收測(cè)試

        • 集成測(cè)試

        • 性能測(cè)試(可選)

        • 任務(wù)可以并行

        • 大于半小時(shí)就需要通過(guò)投入更多運(yùn)算資源降低時(shí)間消耗

  • 管理開(kāi)發(fā)工作區(qū)

    • 從一個(gè)已知最新的正確版本的起點(diǎn)開(kāi)始

    • 精細(xì)的配置管理是基礎(chǔ)

    • 注意依賴的庫(kù)文件

    • 應(yīng)用可以在開(kāi)發(fā)機(jī)上跑起來(lái)

    • 自動(dòng)化測(cè)試(含冒煙測(cè)試)能在開(kāi)發(fā)機(jī)上跑通


使用持續(xù)集成軟件

  • 基本操作

    • 動(dòng)作

      • 第一部分:按時(shí)間間隔執(zhí)行工作流水線

      • 第二部分:展示流水線運(yùn)行結(jié)果

  • 鈴聲和口哨

    • 使用聲光電等提示錯(cuò)誤提示手段

    • 第一時(shí)間了解構(gòu)建狀態(tài)

    • 現(xiàn)在可以發(fā)送:Slack等即時(shí)線上通訊手段

    • 相關(guān)分析

      • 測(cè)試覆蓋率

      • 重復(fù)代碼

      • 編碼標(biāo)準(zhǔn)的遵從

      • 健康指標(biāo)


最佳實(shí)踐

  • 構(gòu)建失敗后停止新代碼提交

  • 提交前在本地和持續(xù)集成服務(wù)器測(cè)試執(zhí)行所有目標(biāo)測(cè)試

    • 保證構(gòu)建一直是綠的

    • 預(yù)提交測(cè)試

      • pretested commit

      • personal build

      • preflight build

    • 在本地測(cè)試將要提交的代碼

  • 等提交通過(guò)之后再繼續(xù)工作

  • 構(gòu)建必須成功后才能回家

  • 隨時(shí)準(zhǔn)備回滾到前一個(gè)舊版本

    • 不能在構(gòu)建失敗的情況下提交代碼
  • 回滾前要規(guī)定一個(gè)修復(fù)時(shí)間

    • 例如:十分鐘無(wú)法修復(fù)代碼就回歸到前一個(gè)版本
  • 不要將失敗的測(cè)試注釋掉

  • 為自己所導(dǎo)致的問(wèn)題負(fù)責(zé)

  • 使用測(cè)試驅(qū)動(dòng)開(kāi)發(fā)


推薦實(shí)踐

  • 極限編程開(kāi)發(fā)實(shí)踐

  • 若違背了架構(gòu)原則繁扎,就讓構(gòu)建失敗

  • 若測(cè)試運(yùn)行變慢了幔荒,就讓構(gòu)建失敗

    • 本地測(cè)試容忍時(shí)間:秒級(jí)

    • 盡早解決測(cè)試的性能問(wèn)題

  • 若編譯告警或代碼風(fēng)格有誤,就讓測(cè)試失敗

    • 代碼檢查工具

      • Simian

      • CheckStyle

      • FindBugs

    • 提高代碼質(zhì)量


小結(jié)

  • 快速發(fā)布梳玫。能夠應(yīng)對(duì)業(yè)務(wù)需求爹梁,并更快地實(shí)現(xiàn)軟件價(jià)值。

  • 編碼->測(cè)試->上線->交付的頻繁迭代周期縮短提澎,同時(shí)獲得迅速反饋姚垃;

  • 高質(zhì)量的軟件發(fā)布標(biāo)準(zhǔn)。整個(gè)交付過(guò)程標(biāo)準(zhǔn)化盼忌、可重復(fù)积糯、可靠。

  • 整個(gè)交付過(guò)程進(jìn)度可視化碴犬,方便團(tuán)隊(duì)人員了解項(xiàng)目成熟度絮宁;

  • 更先進(jìn)的團(tuán)隊(duì)協(xié)作方式。從需求分析服协、產(chǎn)品的用戶體驗(yàn)到交互 設(shè)計(jì)绍昂、開(kāi)發(fā)、測(cè)試、運(yùn)維等角色密切協(xié)作窘游,相比于傳統(tǒng)的瀑布式軟件團(tuán)隊(duì)唠椭,更少浪費(fèi)。

  • 持續(xù)集成提高了團(tuán)隊(duì)的生產(chǎn)效率

  • 需要良好的團(tuán)隊(duì)記錄

  • 相關(guān)基礎(chǔ)設(shè)施

    • 一個(gè)巨大的可視化指示器

    • 結(jié)果報(bào)表系統(tǒng)忍饰,供給給測(cè)試團(tuán)隊(duì)的安裝包

    • 為項(xiàng)目經(jīng)理提供項(xiàng)目資料監(jiān)測(cè)的應(yīng)用或報(bào)表

    • 用持續(xù)部署的流水線贪嫂,為所有人員提供能延伸到生產(chǎn)環(huán)境的一鍵式部署


持續(xù)集成-實(shí)踐

  • 實(shí)踐工具

    • Jenkins

參考

下篇文章 持續(xù)交付-Jenkins官網(wǎng)文檔閱讀筆記

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市艾蓝,隨后出現(xiàn)的幾起案子力崇,更是在濱河造成了極大的恐慌,老刑警劉巖赢织,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亮靴,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡于置,警方通過(guò)查閱死者的電腦和手機(jī)茧吊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)八毯,“玉大人搓侄,你說(shuō)我怎么就攤上這事』八伲” “怎么了讶踪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)尿孔。 經(jīng)常有香客問(wèn)我俊柔,道長(zhǎng),這世上最難降的妖魔是什么活合? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任雏婶,我火速辦了婚禮,結(jié)果婚禮上白指,老公的妹妹穿的比我還像新娘留晚。我一直安慰自己,他們只是感情好告嘲,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布错维。 她就那樣靜靜地躺著,像睡著了一般橄唬。 火紅的嫁衣襯著肌膚如雪赋焕。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天仰楚,我揣著相機(jī)與錄音隆判,去河邊找鬼犬庇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛侨嘀,可吹牛的內(nèi)容都是我干的臭挽。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼咬腕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼欢峰!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起涨共,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤纽帖,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后举反,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體抛计,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年照筑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瘦陈。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凝危,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出晨逝,到底是詐尸還是另有隱情蛾默,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布捉貌,位于F島的核電站支鸡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏趁窃。R本人自食惡果不足惜牧挣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望醒陆。 院中可真熱鬧瀑构,春花似錦、人聲如沸刨摩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)澡刹。三九已至呻征,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間罢浇,已是汗流浹背陆赋。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工沐祷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奏甫。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓戈轿,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親阵子。 傳聞我的和親對(duì)象是個(gè)殘疾皇子思杯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • <<互聯(lián)網(wǎng)敏捷DevOps和自動(dòng)化之5.持續(xù)集成>>持續(xù)集成的價(jià)值是什么?對(duì)于開(kāi)發(fā)和測(cè)試人員又意味著什么呢挠进?1.1...
    燕京博士閱讀 2,776評(píng)論 0 5
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,510評(píng)論 25 707
  • 9月17日色乾,寶寶整整一百天。 經(jīng)歷了數(shù)次無(wú)意義的宴會(huì)领突,夫人和我決定一切從簡(jiǎn)暖璧,就連象征性的蛋糕也因“沒(méi)人吃浪費(fèi)”被否...
    赤山紅土閱讀 396評(píng)論 0 1
  • 雨從昨夜來(lái)到了今晨,沒(méi)有離去的意思君旦。我喜歡你的溫度澎办,你的聲音,你的氣息金砍。一切都讓我不舍你離去局蚀。不要離去,好嗎恕稠?我不...
    水憶閱讀 180評(píng)論 0 0
  • 來(lái)回五天的新加坡之旅起因很簡(jiǎn)單:某天一曾經(jīng)跟我學(xué)英語(yǔ)的姑娘來(lái)工作室說(shuō)起了她的斯里蘭卡窮游體驗(yàn)琅绅,我說(shuō)我也想窮游個(gè)地方...
    Paula_Fan閱讀 632評(píng)論 2 7