文章來源:http://www.zghlxwxcb.cn/news/detail-757955.html
1.?行為準則
文章來源地址http://www.zghlxwxcb.cn/news/detail-757955.html
2.?軟件交付
2.1.?你應該了解你的代碼最終是如何出現(xiàn)在用戶面前的
2.2.?當軟件在生產(chǎn)環(huán)境中穩(wěn)定運行,并且被客戶真實使用時,它就被交付了
3.?軟件交付流程
3.1.?交付階段并沒有行業(yè)標準的定義
3.1.1.?從打包到展開,統(tǒng)稱為發(fā)布(release)
3.1.1.1.?打包一個構件稱為發(fā)布
3.1.2.?把構件交付下載的過程稱為發(fā)行(publishing)
3.1.3.?直到一個特性在生產(chǎn)環(huán)境中被打開時才能稱其為被“發(fā)布”了,而在這之前的一切行動都是部署(deploy)
3.1.3.1.?部署的軟件還不能被用戶訪問
3.1.3.1.1.?只是被安裝了而已
3.1.3.2.?一旦部署,軟件就會通過將用戶轉(zhuǎn)移到新的軟件上而進行展開
3.1.4.?一旦展開完成,就意味著完成了交付
3.1.4.1.?交付過程是更大的產(chǎn)品開發(fā)周期中的一部分
3.2.?軟件交付的4個階段,即構建(build)、發(fā)布、部署和展開(rollout)
3.2.1.?軟件包應該是不可變的,并且被標記了版本
3.3.?正確的分支策略將使軟件交付變得簡單和可預測
3.4.?錯誤的策略將使交付變成與流程本身的纏斗
4.?分支策略
4.1.?發(fā)布的軟件包是使用VCS中的代碼進行構建的
4.1.1.?軟件包是建立在穩(wěn)定的發(fā)布分支上的
4.2.?主分支
4.2.1.?主干或主線
4.2.2.?包含整個代碼庫的主版本,并有修改的歷史記錄
4.3.?分支
4.3.1.?是從主分支上“切”下來的,以進行代碼修改
4.3.2.?分支被用于單個小型特性、修復bug或更新
4.4.?只有當各分支可以快速合并到主分支時,基于主分支的開發(fā)模式的效果才是最好的
4.4.1.?如果不是在幾小時內(nèi),也應該在幾天內(nèi)合并到主分支,并且不在開發(fā)人員之間共享
4.4.2.?在一個分支被合并到主分支上之前,要運行快速的自動化測試來驗證其是否可以通過
4.4.3.?面向服務的系統(tǒng)通常使用基于主分支的開發(fā)模式
4.4.4.?除非你真的需要那種長期存續(xù)的特性分支,否則請堅持使用基于主分支的分支策略
4.5.?頻繁地合并被稱為持續(xù)集成(CI)
4.5.1.?CI可降低風險,因為代碼上的變化會迅速傳遞給所有的開發(fā)人員,使他們彼此之間不太可能有很大的分歧
4.5.2.?讓開發(fā)人員的代碼庫保持同步,可以防止?jié)撛诘淖詈笠环昼姷募烧系K,并盡早暴露出錯誤和不兼容的情況
4.6.?基于特性分支的開發(fā)模式
4.6.1.?在基于特性分支的開發(fā)模式中,許多開發(fā)人員同時在長期存續(xù)的特性分支上工作,每個特性分支與產(chǎn)品中的一個特性相關聯(lián)
4.6.2.?當主分支太不穩(wěn)定以至于無法發(fā)布給用戶時,或者開發(fā)人員希望避免進入特性凍結(jié)期,即在主分支線穩(wěn)定后禁止提交特性時,基于特性分支的開發(fā)就很常見
4.6.3.?基于特性分支的開發(fā)模式在收縮型軟件中更為常見,因為不同的用戶使用著不同的版本
4.7.?最流行的特性分支方法,由文森特·德里森在2010年歸納提出,被稱為Gitflow
4.7.1.?Gitflow使用開發(fā)分支、熱修復分支和發(fā)布分支
4.7.2.?開發(fā)分支被用作主分支,特性分支與之合并和變基
4.7.3.?主分支總被認為是可以隨時部署到生產(chǎn)環(huán)境的,因為它只包含穩(wěn)定的版本
4.7.4.?熱修復被應用于熱修復分支,然后會被合并到主分支和開發(fā)分支
4.7.5.?特性分支是長期存續(xù)的,它與開發(fā)分支之間有提交和合并
4.7.6.?德里森已經(jīng)修改了他最初關于Gitflow的博文,不再鼓勵將Gitflow用于可持續(xù)集成和交付的軟件
5.?構建環(huán)節(jié)
5.1.?軟件包是為每個發(fā)布版本而構建的,所以軟件不必在每臺運行它的計算機上再次構建
5.1.1.?與每臺計算機使用自己的環(huán)境和特異的工具集來編譯和運行代碼相比,預先構建好的軟件包更加一致
5.2.?如果軟件的目標是在一個以上的平臺或環(huán)境中運行的話,構建環(huán)節(jié)就會產(chǎn)生多個軟件包
5.3.?構建通常會為不同的操作系統(tǒng)、CPU架構或語言運行環(huán)境產(chǎn)生軟件包
5.4.?軟件包的內(nèi)容和結(jié)構各不相同
5.5.?軟件包可以包含二進制包或源代碼、依賴關系、配置、發(fā)行說明、文檔、媒體文件、許可證、校驗和,甚至是虛擬機鏡像
5.6.?應用程序包通常以ZIP壓縮包、TAR壓縮包(.tar文件)或安裝包(.dmg或setup.exe文件)的形式構建
5.6.1.?容器和機器包允許開發(fā)者不僅可以構建他們的軟件,而且還可以構建軟件運行的環(huán)境
5.7.?打包決定了什么軟件會被發(fā)布
5.7.1.?了解你的打包系統(tǒng)的假設和約定將防止部署環(huán)節(jié)出問題
5.8.?打包需要帶版本號
5.8.1.?軟件包也應該被納入版本管理,并且被分配唯一的標識符
5.8.2.?語義化版本是一個安全的選擇
5.9.?將不同的資源單獨打包
5.9.1.?軟件不僅僅是代碼,配置、schema、圖像和語言包(各種語言的翻譯)都是軟件的一部分
5.9.2.?不同的資源應該被分開單獨地打包,這樣它們就可以被修改而不需要重新構建整個軟件包
5.9.3.?分開打包讓每種類型資源都有自己的發(fā)布周期,可以獨立向前和向后滾動
5.10.?元包
5.10.1.?一個包含所有包的包
6.?發(fā)布環(huán)節(jié)
6.1.?發(fā)布環(huán)節(jié)可以讓用戶使用軟件,并實現(xiàn)部署,即交付的下一階段
6.2.?面向用戶的發(fā)布則需要發(fā)布構件、文檔的更新、發(fā)行說明和用戶溝通
6.3.?發(fā)布管理是一門藝術,它可以采用可預測的節(jié)奏來發(fā)布穩(wěn)定的、擁有良好文檔的軟件
6.4.?理解發(fā)布管理將幫助你有效地參與你公司的發(fā)布流程
6.5.?Apache軟件基金會的發(fā)布流程
6.5.1.?每一個Apache項目發(fā)布環(huán)節(jié)都會指定一名發(fā)布經(jīng)理來運作
6.5.2.?發(fā)布包括源代碼和通常的二進制包
6.5.3.?發(fā)布經(jīng)理使用加密密鑰對構件進行簽名,這樣用戶就可以驗證下載的軟件包是否來自Apache
6.5.4.?發(fā)布也包括用來檢測損壞的校驗和
6.5.5.?發(fā)布包括LICENSE和NOTICE文件,以聲明各種軟件許可和版權,并且所有源文件的頭注釋里都包括許可信息
6.6.?請勿只想著發(fā)布
6.6.1.?請對你的軟件發(fā)布負責
6.6.2.?你應該確保你的代碼在測試環(huán)境中運行良好,跟蹤發(fā)布時間表,理解那些可用的選項,并為你的應用程序選擇正確的配置
6.7.?將包發(fā)布到倉庫
6.7.1.?存儲資源庫會為終端用戶提供已發(fā)布的構件
6.8.?保持版本不變性
6.8.1.?一旦發(fā)布了,就永遠不要改變或覆蓋這個已發(fā)布的包
6.8.2.?不可變的發(fā)布包可保證所有運行特定版本的應用程序?qū)嵗际窍嗤模谧止?jié)層面上都一樣
6.8.3.?相同的發(fā)布包讓開發(fā)者可以推理出應用程序中的代碼以及它應該如何表現(xiàn)
6.8.4.?版本會變化的包并不比沒有版本的包更優(yōu)秀
6.9.?頻繁發(fā)布
6.9.1.?應該盡可能頻繁地發(fā)布
6.9.2.?在實踐中,快速的發(fā)布會產(chǎn)生更穩(wěn)定的軟件,當發(fā)現(xiàn)bug時更容易修復
6.9.3.?具有自動發(fā)布和部署特性的軟件應該可以在每次提交時都觸發(fā)發(fā)布流程
6.10.?對發(fā)布計劃保持透明
6.10.1.?發(fā)布時間表定義了軟件的發(fā)布頻率
6.10.2.?有些項目有可預測的基于時間的計劃
6.10.2.1.?每季度或每年發(fā)布一次
6.10.3.?有些項目則在特定特性完成時發(fā)布(也就是基于里程碑的發(fā)布)
6.10.4.?內(nèi)部系統(tǒng)經(jīng)常在每次提交時都發(fā)布版本
6.10.5.?公開時間表并在新版本發(fā)布時通知用戶
6.11.?撰寫變更日志和發(fā)行說明
6.11.1.?變更日志和發(fā)行說明可以幫助你的用戶和支持團隊了解一個版本中包含的具體內(nèi)容
6.11.2.?發(fā)行說明是對一個版本中包含的新特性和修復的bug的匯總
6.11.3.?變更日志主要會被支持團隊和開發(fā)團隊閱讀,而發(fā)行說明是專門給用戶看的
到了這里,關于讀程序員的README筆記10_軟件交付(上)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!