敏捷軟件開發(英語:Agile software development),又稱敏捷開發,是一種從1990年代開始逐漸引發普遍關注的一些新型軟件開發方法,是一種應對快速變化的需求的一種軟件開發能力。它們的具體名稱、理念、過程、術語都不盡相同,相對於「非敏捷」,更強調程序員團隊與業務專家之間的緊密協做、面對面的溝通(認爲比書面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織型的團隊、可以很好地適應需求變化的代碼編寫和團隊組織方法,也更注重軟件開發過程當中人的做用。html
1,CI/CD持續集成/持續部署python
持續集成(Continuous integration)是一種軟件開發實踐,即團隊開發成員常常集成它們的工做,經過每一個成員天天至少集成一次,也就意味着天天可能會發生屢次集成。每次集成都經過自動化的構建(包括編譯,發佈,自動化測試)來驗證,從而儘早地發現集成錯誤。git
持續部署(continuous deployment)是經過自動化的構建、測試和部署循環來快速交付高質量的產品。某種程度上表明瞭一個開發團隊工程化的程度,畢竟快速運轉的互聯網公司人力成本會高於機器,投資機器優化開發流程化相對也提升了人的效率,讓 engineering productivity 最大化。程序員
持續交付(英語:Continuous delivery,縮寫爲 CD),是一種軟件工程手法,讓軟件產品的產出過程在一個短週期內完成,以保證軟件能夠穩定、持續的保持在隨時能夠釋出的情況。它的目標在於讓軟件的建置、測試與釋出變得更快以及更頻繁。這種方式能夠減小軟件開發的成本與時間,減小風險。github
與DevOps的關係web
持續交付與DevOps的含義很類似,因此常常被混淆。可是它們是不一樣的兩個概念。DevOps的範圍更廣,它以文化變遷爲中心,特別是軟件交付過程所涉及的多個團隊之間的合做(開發、運維、QA、管理部門等),而且將軟件交付的過程自動化。另壹方面,持續交付是壹種自動化交付的手段,關注點在於將不一樣的過程集中起來,而且更快、更頻繁地執行這些過程。所以,DevOps能夠是持續交付的壹個產物,持續交付直接匯入DevOps;編程
與持續部署的關係服務器
有時候,持續交付也與持續部署混淆。持續部署意味着全部的變動都會被自動部署到生產環境中。持續交付意味着全部的變動均可以被部署到生產環境中,可是出於業務考慮,能夠選擇不部署。若是要實施持續部署,必須先實施持續交付。網絡
1.一、jenkins是什麼?併發
Jenkins是一個可擴展的持續集成引擎。
主要用用途:
持續、自動的構建/測試軟件項目。
監控一些定時執行的任務。、
特色:
易於安裝,只要把jenkins.war部署到servlet容器
易於配置-全部配置都經過其提供的web界面實現。
集成RSS/E-mail經過RSS發佈構建結果或當構件完成是經過e-mail通知。
生成JUnit/TestNG測試報告。
分佈式構建支持Jenkins可以讓多臺計算機一塊兒構建/測試。
文件識別:Jenkins可以跟蹤那次構建生成哪些jar,那次構建使用哪一個版本的jar
插入支持:支持擴展插件,能夠開發適合本身團隊的使用的工具。
Jenkins的目標是監控軟件的開發流程,快速顯示問題。因此能保證開發人員省事又省力提升開發效率。
二、項目版本迭代控制:、
現有的版本控制工具,如 Github、GitLab、SVN、CVS 等主流工具..
構建及測試:經過 Jenkins 實現自動構建和測試,還有商業軟件BAMBOO來持續集成。這個收費的。免費就用Jenkins..
交付:以Docker鏡像形式進行交付,提交至鏡像倉庫;
2.1 SVN服務器:
Subversion是一個版本控制系統,相對於的RCS、CVS,採用了分支管理系統,它的設計目標就是取代CVS。互聯網上免費的版本控制服務多基於Subversion。
Subversion的版本庫能夠經過網絡訪問,從而使用戶能夠在不一樣的電腦上進行操做。從某種程度上來講,容許用戶在各自的空間裏修改和管理同一組數據能夠促進團隊協做。由於修改再也不是單線進行(單線進行也就是必須一個一個進行),開發進度會進展迅速。此外,因爲全部的工做都已版本化,也就沒必要擔憂因爲錯誤的更改而影響軟件質量—若是出現不正確的更改,只要撤銷那一次更改操做便可。某些版本控制系統自己也是軟件配置管理系統(SCM),這種系統通過精巧的設計,專門用來管理源代碼樹,而且具有許多與軟件開發有關的特性——好比對編程語言的支持或者提供程序構建工具。不過Subversion並非這樣的系統,它是一個通用系統,能夠管理任何類型的文件集。
2.2 CVS服務器:
CVS(Concurrent Versions System)版本控制系統是一種GNU軟件包,主要用於在多人開發環境下源碼的維護。Concurrent有併發的、協做的、一致的等含義。實際上CVS能夠維護任意文檔的開發和使用,例如共享文件的編輯修改,而不只僅侷限於程序設計。CVS維護的文件類型能夠是文本類型也能夠是二進制類型。CVS用Copy-Modify-Merge(拷貝、修改、合併)變化表支持對文件的同時訪問和修改。它明確地將源文件的存儲和用戶的工做空間獨立開來,並使其並行操做。CVS基於客戶端/服務器的行爲使其可容納多個用戶。這一特性使得CVS成爲位於不一樣地點的人同時處理數據文件(特別是程序的源代碼)時的首選。
全部重要的免費軟件項目都使用CVS做爲其程序員之間的中心點,以便可以綜合各程序員的改進和更改。這些項目包括GNOME、KDE、THE GIMP和Wine等。
2.3 GIt/github:
GIT (分佈式版本控制系統)
Git是一款免費、開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。Git的讀音爲/gɪt/。
Git是一個開源的分佈式版本控制系統,能夠有效、高速的處理從很小到很是大的項目版本管理。Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。Torvalds 開始着手開發 Git 是爲了做爲一種過渡方案來替代 BitKeeper,後者以前一直是 Linux 內核開發人員在全球使用的主要源代碼工具。開放源碼社區中的有些人以爲BitKeeper 的許可證並不適合開放源碼社區的工做,所以 Torvalds 決定着手研究許可證更爲靈活的版本控制系統。儘管最初 Git 的開發是爲了輔助 Linux 內核開發的過程,可是咱們已經發如今不少其餘自由軟件項目中也使用了 Git。例如 不少 Freedesktop 的項目遷移到了 Git 上。
gitHub是一個面向開源及私有軟件項目的託管平臺,由於只支持git 做爲惟一的版本庫格式進行託管,故名gitHub。
gitHub於2008年4月10日正式上線,除了git代碼倉庫託管及基本的 Web管理界面之外,還提供了訂閱、討論組、文本渲染、在線文件編輯器、協做圖譜(報表)、代碼片斷分享(Gist)等功能。目前,其註冊用戶已經超過350萬,託管版本數量也是很是之多,其中不乏知名開源項目 Ruby on Rails、jQuery、python 等。