持續集成 簡介環境搭建

1. 持續集成簡介

1.1 持續集成的作用

隨著互聯網的蓬勃發展,軟件生命周期模型也經歷了幾個比較大的階段,從最初的瀑布模型,到 V 模型,再到現在的敏捷或者 devops,不論哪個階段,項目從立項到交付幾乎都離不開以下幾個過程,開發、構建、測試和發布,而且一直都在致力于又好又快地完成軟件的交付。

然而大多數互聯網公司面臨的常態卻是,臨近上線日全員待命,如臨大敵,通宵達旦,生怕出現上線事故導致版本回滾,即使暫時上線成功后也可能會出現明明測試環境全部通過了,卻依然有各種線上質量問題頻發。這些現象的主要原因就是代碼合并的太晚,而且每次改動未經過充分的測試,代碼合并時出現沖突,為了解決沖突重新修改代碼,新修改的代碼又有可能會引發新的問題,進入了惡性循環。

那么如何才能快速地合并代碼,快速地構建,快速地測試,快速地發布高質量的代碼呢?持續集成就應運而生了,它的宗旨就是多次合并代碼,合并完成后在各種環境下進行多次充分的測試,保證版本的可用性和代碼更改的正確性。

1.2 持續集成的定義

我們經常聽到的持續工程方法有 3 個,分別為持續集成(Continuous Integration,CI)、持續交付(Continuous Delivery,CD)和持續部署(Continuous Deploy,CD)。

  • 持續集成:指的是在一定時間內,開發人員多次將代碼合并到同一主干上。代碼入庫后將代碼編譯打包成可以發布的形式,先發布到測試環境進行詳細全面的測試(如果是代碼修復的情況下可以根據實際情況只進行精準的測試),測試環境通過后再發布到預生產環境,最終部署到線上環境。目的就是頻繁的集成以便發現其中的錯誤。
  • 持續交付:強調的是短時間內完成可以隨時發布的軟件產品,對每一個進入主干分支的代碼提交后,構建打包,測試環境驗證通過,預發布環境進行驗證,保證產品是可發布的狀態。目的是快速地得到市場的反饋,以便更好地進行開發和設計。
  • 持續部署:將每一次代碼提交后,都構建出產品直接上線,交付給用戶使用。

以上 3 個流程的本質都是為了保證每一次代碼合并后都能經過一系列的驗證,保證這些變更的質量。以下是 3 個持續過程的流水線示意圖:

1.3 持續集成的原則

測試要盡量得充分

因為持續集成最終的目的是保證版本的可用性,而且由于多人協作,合并后的代碼有可能對整個的軟件都會有影響,所以一般情況下需要把所有的測試流程都走一遍,比如靜態代碼掃描、單元測試、功能測試、接口測試、性能測試等等;如果只是修復了一些 bug,代碼改動不大的情況下,可以只做一些針對性測試。

測試的速度要盡可能得快

持續集成中每天都會有代碼合并,甚至一天有好幾次合并,如果測試的效率不夠高的話很可能會出現一個打包的版本還未測試完成,新的版本就已經出現了,甚至積壓幾個版本,這樣的話就不能及時的發現是哪個版本出現的問題,而且開發一直是在有問題的版本上進行的修改,所以這就要求測試的速度要快,自動化測試肯定是不可或缺的,甚至還要并行或者分布式執行測試。

盡量使用和生產環境類似的環境進行測試

如果持續集成采用的測試環境和線上環境差異太大的話,測試的結果很可能是不準確的,有些線上的問題也是很難發現的,特別是關于性能測試的結果,資源和鎖等問題。所以采用和線上環境完全一樣的環境時最理想的,如果條件不允許的話要盡可能采用同比例縮小的環境進行測試,以保證測試結果的準確性。

1.4 整體流程

 

2. 持續集成環境搭建

Win10 + Jenkins 2.277.2 + JDK 1.8 + Maven + Git + Tomcat

2.1 Git 安裝

1)登錄官網下載安裝包:官網 https://git-scm.com/download/win

2)下載完成后雙擊安裝,如下圖所示:

雙擊 exe 文件,一路 next 即可。

3)配置環境變量:將 Git 的 bin 目錄 添加到環境變量。

4&#

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90996.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90996.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90996.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于 java:11. 項目結構、Maven、Gradle 構建系統

一、Java 項目目錄結構標準1.1 Java 項目標準目錄結構總覽標準 Java 項目目錄結構(以 Maven / Gradle 通用結構為基礎):project-root/ ├── src/ │ ├── main/ │ │ ├── java/ # 主業務邏輯代碼(核心…

大數據的安全挑戰與應對

在大數據時代,大數據安全問題已成為開發者最為關注的核心議題之一。至少五年來,大數據已融入各類企業的運營體系,而采用先進數據分析解決方案的組織數量仍在持續增長。本文將明確當前市場中最關鍵的大數據安全問題與威脅,概述企業…

PostgreSQL ERROR: out of shared memory處理方式

系統允許的總鎖數 SELECT (SELECT setting::int FROM pg_settings WHERE name max_locks_per_transaction) * (SELECT setting::int FROM pg_settings WHERE name max_connections) (SELECT setting::int FROM pg_settings WHERE name max_prepared_transactions);當鎖大于…

Django 模型(Model)

1. 模型簡介 ORM 簡介 MVC 框架中一個重要的部分就是 ORM,它實現了數據模型與數據庫的解耦,即數據模型的設計不需要依賴于特定的數據庫,通過簡單的配置就可以輕松更換數據庫。即直接面向對象操作數據,無需考慮 sql 語句。 ORM 是“對象-關系-映射”的簡稱,主要任務是:…

深入解析Hadoop RPC:技術細節與推廣應用

Hadoop RPC框架概述在分布式系統的核心架構中,遠程過程調用(RPC)機制如同神經網絡般連接著各個計算節點。Hadoop作為大數據處理的基石,其自主研發的RPC框架不僅支撐著內部組件的協同運作,更以獨特的工程哲學詮釋了分布…

為什么玩游戲用UDP,看網頁用TCP?

故事場景:兩種不同的遠程溝通方式假設你需要和遠方的朋友溝通一件重要的事情。方式一:TCP — 打一個重要的電話打電話是一種非常嚴謹、可靠的溝通方式。? 1. 建立連接 (三次握手):? 你拿起電話,撥號(SYN)。? 朋友那…

【EGSR2025】材質+擴散模型+神經網絡相關論文整理隨筆(二)

High-Fidelity Texture Transfer Using Multi-Scale Depth-Aware Diffusion 這篇文章可以從一個帶有紋理的幾何物體出發,將其身上的紋理自動提取并映射到任意的幾何拓撲結構上(見下圖紅線左側);或者從一個白模幾何對象出發&#x…

深度學習圖像分類數據集—玉米粒質量識別分類

該數據集為圖像分類數據集,適用于ResNet、VGG等卷積神經網絡,SENet、CBAM等注意力機制相關算法,Vision Transformer等Transformer相關算法。 數據集信息介紹:玉米粒質量識別分類:[crush, good, mul] 訓練數據集總共有3…

Unity VR手術模擬系統架構分析與數據流設計

Unity VR手術模擬系統架構分析與數據流設計 前言 本文將深入分析一個基于Unity引擎開發的多人VR手術模擬系統。該系統采用先進的網絡架構設計,支持多用戶實時協作,具備完整的手術流程引導和精確的工具交互功能。通過對系統架構和數據管道的詳細剖析&…

【Spring Boot】Spring Boot 4.0 的顛覆性AI特性全景解析,結合智能編碼實戰案例、底層架構革新及Prompt工程手冊

Spring Boot 4.0 的顛覆性AI特性全景解析,結合智能編碼實戰案例、底層架構革新及Prompt工程手冊一、Spring Boot 4.0 核心AI能力矩陣二、AI智能編碼插件實戰(Spring AI Assistant)1. 安裝與激活2. 實時代碼生成場景3. 缺陷預測與修復三、AI引…

audiobookshelf-web 項目怎么運行

git clone https://github.com/audiobookshelf/audiobookshelf-web.git cd audiobookshelf-web npm i 啟動項目 npm run dev http://localhost:3000/

掃描文件 PDF / 圖片 糾斜 | 圖片去黑邊 / 裁剪 / 壓縮

問題:掃描后形成的 PDF 或圖片文檔常存在變形傾斜等問題,手動調整頗為耗時費力。 一、PDF 糾斜 - Adobe Acrobat DC 1、所用功能 掃描和 OCR: 識別文本:在文件中 → 設置 確定后啟動掃描,識別過程中自動糾偏。 2、…

適配器模式:兼容不兼容接口

將一個類的接口轉換成客戶端期望的另一個接口,解決接口不兼容問題。代碼示例:// 目標接口(客戶端期望的格式) interface ModernPrinter {void printDocument(String text); }// 被適配的舊類(不兼容) class…

流程控制:從基礎結構到跨語言實踐與優化

流程控制 一、流程控制基礎概念與核心價值 (一)流程控制定義與本質 流程控制是通過特定邏輯結構決定程序執行順序的機制,核心是控制代碼運行路徑,包括順序執行、條件分支、循環迭代三大核心邏輯。其本質是將無序的指令集合轉化為有…

Http與Https區別和聯系

一、HTTP 詳解 HTTP(HyperText Transfer Protocol)?? 是互聯網數據通信的基礎協議,用于客戶端(瀏覽器)與服務器之間的請求-響應交互 核心特性??: 1.無連接(Connectionless)??…

飛算JavaAI:開啟 Java 開發 “人機協作” 新紀元

每日一句 明天是新的一天, 你也不再是昨天的你。 目錄每日一句一、需求到架構:AI深度介入開發“源頭設計”1.1 需求結構化:自然語言到技術要素的精準轉化1.2 架構方案生成:基于最佳實踐的動態適配二、編碼全流程:從“…

Qt項目鍛煉——TODO(五)

發現問題如果是自己創建的ui文件,怎么包含進自己的窗口類并且成為ui成員?一般來說Qt designer 會根據你.ui文件生成對應的ui_文件名這個類(文件名是ui文件名),它包含了所有 UI 組件(如按鈕、文本框、標簽等…

Vue框架之模板語法全面解析

Vue框架之模板語法全面解析一、模板語法的核心思想二、插值表達式:數據渲染的基礎2.1 基本用法:渲染文本2.2 純HTML渲染:v-html指令2.3 一次性插值:v-once指令三、指令系統:控制DOM的行為3.1 條件渲染:v-if…

從零開始的語言模型構建 CS336 第一課(一)

語言模型的發展歷史 🏗 Early foundation models (2010年代后期) 2018:ELMo(基于 LSTM 預訓練 微調)[Peters 2018]2018:BERT(基于 Transformer 預訓練 微調)[Devlin 2018]2019:G…

微信獲取access_token授權的兩種不同情況

1.網頁授權:需要頁面調用授權的sdk,首先需要獲取到code參數 (A.網頁版的獲取code參考另一篇文章:https://blog.csdn.net/ettamei/article/details/148763361?spm1011.2415.3001.5331 B.前端sdk提供:code只有5分鐘的有…