什么是CI/CD

一、簡介

CI / CD的采用改變了開發人員和測試人員如何發布軟件。

最初是瀑布模型,后來是敏捷開發,現在是DevOps,這是現代開發人員構建出色的產品的技術路線。隨著DevOps的興起,出現了持續集成(Continuous Integration)持續交付(Continuous Delivery)?、持續部署(Continuous Deployment)?的新方法。傳統的軟件開發和交付方法正在迅速變得過時。從歷史上看,在敏捷時代,大多數公司會每月,每季度,每兩年甚至每年發布部署/發布軟件。然而,現在,在DevOps時代,每周,每天,甚至每天多次是常態。當SaaS正在占領世界時,尤其如此,您可以輕松地動態更新應用程序,而無需強迫客戶下載新組件。很多時候,他們甚至都不會意識到正在發生變化。開發團隊通過軟件交付流水線(Pipeline)實現自動化,以縮短交付周期,大多數團隊都有自動化流程來檢查代碼并部署到新環境。今天,我們將介紹什么是CI / CD / CD,以及現代軟件公司如何使用工具將部署代碼的流程自動化。

持續集成的重點是將各個開發人員的工作集合到一個代碼倉庫中。通常,每天都要進行幾次,主要目的是盡早發現集成錯誤,使團隊更加緊密結合,更好地協作。

持續交付的目的是最小化部署或釋放過程中固有的摩擦。它的實現通常能夠將構建部署的每個步驟自動化,以便任何時刻能夠安全地完成代碼發布(理想情況下)。

持續部署是一種更高程度的自動化,無論何時對代碼進行重大更改,都會自動進行構建/部署。

這些階段中的每一個都是交付管道的一部分 。在Humble和Farley的書《持續交付:可靠的軟件版本中,通過構建,測試和部署自動化》,解釋“對軟件的每次更改,都會在發布過程中經歷一個復雜的過程。該過程涉及構建軟件,然后通過多個測試和部署階段進行這些構建。反過來,這需要許多人之間的合作,也許需要幾個團隊之間的合作。部署管道對此過程進行建模,并且它在持續集成和發布管理工具中的實現,使您能夠在從版本控制轉移到各種測試和部署,以向用戶發布時查看和控制每個更改的進度。”


軟件交付流水線

二、持續集成(CI)

通過持續集成,開發人員能夠頻繁將其代碼集成到公共代碼倉庫的主分支中。開開發人員能夠在任何時候多次向倉庫提交作品,而不是獨立地開發每個功能模塊并在開發周期結束時一一提交。

這里的一個重要想法是讓開發人員更快,更頻繁地做到這一點,從而降低集成成本。實際情況中,開發人員在集成時經常會發現新代碼和已有代碼存在沖突。如果集成較早并更加頻繁,那么沖突將更容易解決且執行成本更低。當然,還有一些權衡。此流程變更不提供任何額外的質量保證。實際上,許多組織發現這種集成變得更加昂貴,因為它們依賴于手動過程來確保新代碼不會引入新的錯誤,并且不會破壞現有代碼。為了減少集成任務期間的摩擦,持續集成依賴于測試套件和自動化測試執行。然而,要認識到自動化測試和持續測試是完全不同的這一點很重要,我們會在文章結尾處詳細說明。

CI 的目標是將集成簡化成一個簡單、易于重復的日常開發任務,這將有助于降低總體構建成本,并在周期的早期發現缺陷。要想有效地使用 CI 必須轉變開發團隊的習慣,要鼓勵頻繁迭代構建,并且在發現 bug 的早期積極解決。

三、持續交付(CD)

實際上是 CI 的擴展,其中軟件交付流程進一步自動化,以便隨時輕松地部署到生成環境中。CD 集中依賴于部署流水線,團隊通過流水線自動化測試和部署過程。此流水線是一個自動化系統,可以針對構建執行一組漸進的測試套件。CD 具有高度的自動化,并且在一些云計算環境中也易于配置。在流水線的每個階段,如果構建無法通過關鍵測試會向團隊發出警報。否則,將繼續進入下一個測試,并在連續通過測試后自動進入下一個階段。流水線的最后一個部分會將構建部署到和生產環境等效的環境中。這是一個整體的過程,因為構建、部署和環境都是一起執行和測試的,它能讓構建在實際的生產環境可部署和可驗證。

AWS上提供了現代CI / CD管道的可靠展示。亞馬遜是云計算提供商之一,提供令人印象深刻的CI / CD 管道環境,并提供一個演練過程,您可以從其中選擇眾多開發資源,并將它們鏈接在一個易于配置且易于監控的管道中。

許多人認為持續交付的吸引力主要在于,它自動化了從提交代碼到倉庫,再到測試和發布產品過程的所有步驟。這是構建和測試過程細致的自動化,但是如何發布以及發布什么仍然是需要人工操作,持續部署可以改變這一點。

四、持續部署(CD)

持續部署擴展了持續交付,以便軟件構建,在通過所有測試時自動部署。在這樣的流程中,不需要人為決定何時及如何投入生產環境。CI/CD 系統的最后一步將在構建后的組件/包退出流水線時自動部署。此類自動部署可以配置為快速向客戶分發組件、功能模塊或修復補丁,并準確說明當前提供的內容。

采用持續部署的組織可以將新功能快速傳遞給用戶,得到用戶對于新版本的快速反饋,并且可以迅速處理任何明顯的缺陷。用戶對無用或者誤解需求的功能的快速反饋有助于團隊規劃投入,避免將精力集中于不容易產生回報的地方。隨著 DevOps 的發展,新的用來實現 CI/CD 流水線的自動化工具也在不斷涌現。這些工具通常能與各種開發工具配合,包括像 GitHub 這樣的代碼倉庫和 Jira 這樣的 bug 跟蹤工具。此外,隨著 SaaS 這種交付方式變得更受歡迎,許多工具都可以在現代開發人員運行應用程序的云環境中運行,例如 GCP 和 AWS。最受歡迎的自動化工具是 Jenkins(以前的 Hudson),這是一個由數百名貢獻者和商業公司 Cloudbees 支持的開源項目。Cloudbees 甚至聘請了 Jenkins 的創始人,并提供了一些 Jenkins 培訓項目和附加組件。除了開源項目之外,還有一些更現代化的商業產品例如 CircleCI,Codeship 和 Shippable。這些產品各有優缺點,我鼓勵開發人員在開發流程中一一嘗試它們,以了解它們在您的環境中的工作方式,以及它們如何與您的工具、云平臺、容器系統等協作。

五、下一步是什么?

一旦部署了現代化的 CI/CD 流水線,您可能會意識到開發人員工作流程中的一些工具和流程也需要進行現代化改造。測試是一個要著重關注的領域,如果您的部署頻率是每天或者一天多次,您的每次測試可能需要數小時甚至一晚上才能完成。mabl 正在使用機器學習解決這個問題。

原文來自:https://dzone.com/articles/what-is-cicd

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

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

相關文章

FFmpeg在Windows系統下的編譯過程

由于FFMpeg是基于Linux開發的開源項目,源代碼和Windows下最常見的Visual Studio提供的C/C編譯器不兼容,因此它不能使用MSVC編譯。要想使用FFMpeg,最先要解決的問題就是在Windows下配置一個類似Linux的編譯環境,將FFMpeg編譯為二進…

centos 文件夾網絡連接_centos8 安裝后網絡不通及網絡配置

一 修改配置文件設置網絡時首先打開配置文件,配置文件默認如下所示,如果使用dhcp自動獲取ip,只需將ONBOOTno修改為ONBOOTno即可。#網卡配置文件按默認配置TYPEEthernetPROXY_METHODnoneBROWSER_ONLYnoBOOTPROTOdhcpDEFROUTEyesIPV4_FAILURE_F…

STM32 HAL庫詳解 及 手動移植

源: STM32 HAL庫詳解 及 手動移植轉載于:https://www.cnblogs.com/LittleTiger/p/8044047.html

Python 內置函數之 open (文件操作)

正常的文件操作都分三步走:打開文件,操作文件,關閉文件。 python open() 函數用于打開一個文件,創建一個 file 對象,相關的方法才可以調用它進行讀寫 語法 文件句柄 open(文件名,模式) 例如:f open(a…

windows系統下_ffmpeg編譯_2011年

ffmpeg開源庫在linux系統下弄的,是一個很全的音頻和視頻的編解碼庫要在windows下編譯出用于開發的lib庫確實比linux下要麻煩,百度了很久,參照別人的見解終于成功編譯出自己需要的可以用于開發的庫(dll的形式,附帶dll的…

部署WEB項目到服務器(三)安裝mysql到linux服務器(Ubuntu)詳解

突發奇想,想在自己電腦上部署一個web網站。 1,首先是下載一個適合自己已安裝服務器版本的mysql數據庫。 這里使用網上的鏈接http://dev.mysql.com/downloads/mysql/5.6.html#downloads 或者使用代理網站上下載:https://mirrors.huaweicloud.c…

在Windows下編譯ffmpeg完全手冊

本文的內容幾乎全部來自于FFmpeg on Windows,但是由于國內的網絡封鎖,很難訪問這個域名下的內容,因此我一方面按照我自己的理解和實踐做了翻譯,另一方面也是為了能提供一個方便的參考方法。 注: 1. 對于compil…

padding和卷積的區別_TensorFlow筆記1——20.CNN卷積神經網絡padding兩種模式SAME和VALID...

第1種解說:(核心最后一張圖,兩種填充方式輸出的形狀尺寸計算公式)在用tensorflow寫CNN的時候,調用卷積核api的時候,會有填padding方式的參數,找到源碼中的函數定義如下(max pooling也是一樣)&am…

MORMOT數據庫連接池

MORMOT數據庫連接池 MORMOT封裝了一堆的PROPS控件,用于連接各種數據庫。 MORMOT的封裝是武裝到了牙齒的,這堆PROPS控件居然數據庫連接池也封裝好了。這就為我們省了不少事,筆者非常喜歡! 下面拿TOleDBMSSQLConnectionProperties控…

循環神經網絡變形之 (Long Short Term Memory,LSTM)

1、長短期記憶網絡LSTM簡介 在RNN 計算中,講到對于傳統RNN水平方向進行長時刻序列依賴時可能會出現梯度消失或者梯度爆炸的問題。LSTM 特別適合解決這種需要長時間依賴的問題。 LSTM(Long Short Term Memory,長短期記憶網絡)是R…

Windows 系統下使用 MinGW + MSYS + GCC 編譯 FFMPEG

一定要按照順序操作,否則你很可能持續遇到很多奇怪的問題(ffmpeg對編譯系統版本要求比較高)。 1. www.mingw.org: 下載并安裝 MinGW 5.1.4 (http://jaist.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.4.exe),安裝時選中 g, m…

eclipse怎樣改編碼格式_Eclipse中各種編碼格式及設置

操作系統:Windows 10(家庭中文版)Eclipse版本:Version: Oxygen.1a Release (4.7.1a)剛看到一篇文章,里面介紹說Ascii、Unicode是編碼,而GBK、UTD-8等是編碼格式。Java中的編碼問題(by 迷失之路):https://www.cnblogs.c…

UE4 ShooterGame Demo的開火的代碼

之前一直沒搞懂按下鼠標左鍵開火之后&#xff0c;代碼的邏輯是怎么走的&#xff0c;今天看懂了之前沒看懂的部分&#xff0c;進了一步 ShooterCharacter.cpp void AShooterCharacter::OnStartFire() {AShooterPlayerController* MyPC Cast<AShooterPlayerController>(Co…

kafka 異常:return ‘<SimpleProducer batch=%s>‘ % self.async ^ SyntaxError: invalid syntax

Python3.X 執行Python編寫的生產者和消費者報錯&#xff0c;報錯信息如下&#xff1a; Traceback (most recent call last): File "mykit_kafka_producer.py", line 9, in <module> from kafka import KafkaProducer File "/usr/local/lib/python3.7/sit…

python 分布式計算框架_漫談分布式計算框架

如果問 mapreduce 和 spark 什么關系&#xff0c;或者說有什么共同屬性&#xff0c;你可能會回答他們都是大數據處理引擎。如果問 spark 與 tensorflow 呢&#xff0c;就可能有點迷糊&#xff0c;這倆關注的領域不太一樣啊。但是再問 spark 與 MPI 呢&#xff1f;這個就更遠了。…

Codeforces 899D Shovel Sale

題目大意 給定正整數 $n$&#xff08;$2\le n\le 10^9$&#xff09;。 考慮無序整數對 $(x, y)$&#xff08;$1\le x,y\le n, x\ne y$&#xff09;。 求滿足 「$xy$ 結尾連續的 9 最多」的數對 $(x,y)$ 的個數。 例子&#xff1a; $n50$&#xff0c;$(49,50)$ 是一個滿足條件的…

Windows系統使用minGW+msys 編譯ffmpeg 0.5的全過程詳述

一.環境配置 1.下載并安裝 MinGW-5.1.4.exe (http://jaist.dl.sourceforge.net/sourcef … -5.1.4.exe)&#xff0c;安裝時選中 g, mingw make。建議安裝到c:/mingw. 2.下載并安裝 MSYS-1.0.11-rc-1.exe (http://jaist.dl.sourceforge.net/sourcef … 1-rc-1.exe)&#xff0c;安…

Liunx安裝gogs,mysql,jdk,tomcat等常用軟件

Liunx CentOS系統采用yum安裝Mysql 一.安裝mysql客戶端 yum -y install mysql 二.安裝mysql服務器端 [注意:由于CentOS7下的不自帶mysql-server,所以得先安裝資源包,步驟: 1.wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm (采用wget獲取必須有wge…

stm32單片機端口映射_STM32單片機的重映射與地址映射的使用方法及步驟

重映射STM32中對于一些端口的外設已經被其他引腳所使用&#xff0c;這是就需要用端口重映射來解決了&#xff0c;很方便。以USART1為例重映射的步驟為&#xff1a;打開重映射時鐘和USART重映射后的I/O口引腳時鐘&#xff0c;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_A…

python 第三方模塊 yaml - 處理 YAML (專門用來寫配置文件的語言)

markdown 的配置使用 Yaml —— Yet Another Markup Language &#xff1a;另一種標記語言。 簡介 YAML 是專門用來寫配置文件的語言&#xff0c;非常簡潔和強大&#xff0c;遠比 JSON 格式方便。 YAML在python語言中有PyYAML安裝包。 YAML 語言&#xff08;發音 /?jm?l/ &…