如何在軟件發(fā)布計(jì)劃中自動(dòng)化語(yǔ)義化版本與變更日志

      網(wǎng)友投稿 758 2025-03-31

      引言:在“DevOps能力之屋(Capabilities House of DevOps)”中,華為云DevCloud提出(工程方法+最佳實(shí)踐+生態(tài))×工具平臺(tái)=DevOps能力。華為云DevCloud將推出“DevOps on DevCloud”系列,針對(duì)DevOps領(lǐng)域場(chǎng)景,闡述該場(chǎng)景在華為云DevCloud上的實(shí)施方法與實(shí)踐。本文通過(guò)自動(dòng)化語(yǔ)義化版本與變更日志,提升DevOps自動(dòng)化水平。本文與莫妮卡共同完成。


      隨著DevOps方法與實(shí)踐的普及,越來(lái)越多的企業(yè)開(kāi)始使用持續(xù)部署流水線來(lái)提升軟件持續(xù)交付的效率與質(zhì)量。然而,我們發(fā)現(xiàn)在發(fā)布計(jì)劃中,我們通常會(huì)面臨如何為軟件版本打標(biāo)簽以及如何準(zhǔn)備發(fā)布變更日志等方面的挑戰(zhàn)。在版本發(fā)布過(guò)程中,不少企業(yè)仍會(huì)在手動(dòng)為軟件版本打標(biāo)簽,準(zhǔn)備發(fā)布變更日志等方面會(huì)進(jìn)行大量繁瑣、重復(fù)的工作,投入了很大的人力成本,而且無(wú)法集成到持續(xù)交付流水線的自動(dòng)化流程中。

      本文引入兩個(gè)工具commitizen和standard-version來(lái)實(shí)現(xiàn)語(yǔ)義化版本與變更日志的自動(dòng)化,提升規(guī)范化程度,減少人工干預(yù)產(chǎn)生的問(wèn)題。

      1????? 規(guī)范代碼提交說(shuō)明

      為了使代碼提交說(shuō)明更有意義,同時(shí)也可以讓團(tuán)隊(duì)其他成員更輕松地了解代碼變更的原因、目的與影響范圍,因此在團(tuán)隊(duì)中對(duì)代碼提交說(shuō)明進(jìn)行輕量級(jí)約定顯得非常有必要。所謂git commit message規(guī)范即通過(guò)提交說(shuō)明中的特定關(guān)鍵字來(lái)描述代碼變更的范疇等,例如特性新增、缺陷修復(fù)、文檔變更等。

      為此,我們選擇Conventional Commits作為人與機(jī)器之間協(xié)同工作的規(guī)范,為自動(dòng)化軟件版本奠定基礎(chǔ)。Conventional Commits是許多NPM包使用的非常常見(jiàn)的規(guī)范。該規(guī)范提供了一組簡(jiǎn)單的規(guī)則來(lái)創(chuàng)建顯式提交歷史。該規(guī)范在提交說(shuō)明中描述了features、fixes等,與SemVer相匹配。

      提交說(shuō)明的結(jié)構(gòu)如下所示,詳情請(qǐng)參考鏈接Conventional Commints:

      [optional scope]:

      [optional body]

      [optional footer(s)]

      為了在團(tuán)隊(duì)中落實(shí)代碼提交說(shuō)明規(guī)范,不可避免地需要成熟的工具來(lái)支持。目前,在自動(dòng)約束提交信息這方面已經(jīng)有很多成熟的工具了,python語(yǔ)言工具,PHP語(yǔ)言工具,以及本文介紹的基于Node.js語(yǔ)言的工具——commitizen,開(kāi)發(fā)者可以直接將它安裝在自己的工作機(jī)中,在代碼提交時(shí)直接使用。此外,對(duì)于一些流行的IDE,有許多提交兼容插件,比如VSCode和visual studio。在安裝commitizen后,并在代碼倉(cāng)庫(kù)中安裝changelog適配模塊后,就可以使用git cz命令來(lái)代替git commit,進(jìn)行代碼提交說(shuō)明的規(guī)范化提交。

      2????? 標(biāo)準(zhǔn)化版本號(hào)與變更日志

      為了標(biāo)準(zhǔn)化版本號(hào),大家可以先了解一下SemVer,主要規(guī)定了版本號(hào)如何表示,如何增加,如何進(jìn)行比較,不同的版本號(hào)意味著什么。我們通過(guò)commitizen工具已經(jīng)實(shí)現(xiàn)了代碼提交說(shuō)明的規(guī)范化,接下來(lái)我們使用standard-version完成如下工作:

      ??????????? 檢索代碼倉(cāng)庫(kù)當(dāng)前的版本;

      ??????????? 根據(jù)規(guī)范化的提交信息更改版本;

      ??????????? 根據(jù)規(guī)范化的提交信息生成變更日志;

      ??????????? 創(chuàng)建一個(gè)新的提交,包含新版本和更新了的變更日志;

      ??????????? 用這個(gè)新版本號(hào)創(chuàng)建一個(gè)tag標(biāo)簽。

      開(kāi)發(fā)團(tuán)隊(duì)對(duì)階段性開(kāi)發(fā)進(jìn)行第一次發(fā)布

      如何在軟件發(fā)布計(jì)劃中自動(dòng)化語(yǔ)義化版本與變更日志

      較小的功能修復(fù)引起的小版本+1(1.0.0->1.0.1)發(fā)布

      3????? 在華為云DevCloud上發(fā)布版本

      當(dāng)開(kāi)發(fā)者在本地完成代碼開(kāi)發(fā)后,可以使用commitizen與stardard-version規(guī)范化代碼提交說(shuō)明,并形成changelog與版本號(hào),然后將代碼推送至DevCloud的代碼倉(cāng)庫(kù)中,觸發(fā)DevCloud流水線,完成軟件發(fā)布。

      3.1??? 配置流水線

      首先,配置DevCloud流水線的觸發(fā)器,使代碼提交自動(dòng)觸發(fā)流水線運(yùn)行。

      然后使用系統(tǒng)參數(shù)GIT_COMMIT將CommitID作為發(fā)布倉(cāng)庫(kù)路徑。

      3.2??? 本地代碼推送到云端代碼倉(cāng)庫(kù)

      3.3??? 查看代碼提交歷史

      3.4??? 查看發(fā)布倉(cāng)庫(kù)

      每次代碼提交后,觸發(fā)流水線中的構(gòu)建任務(wù),生成軟件包,自動(dòng)歸檔在DevCloud發(fā)布倉(cāng)庫(kù)中。在發(fā)布倉(cāng)庫(kù)中,可以代碼提交所對(duì)應(yīng)的發(fā)布倉(cāng)中的軟件包。

      圖 代碼倉(cāng)庫(kù)提交歷史

      圖 軟件發(fā)布庫(kù)

      至此,我們利用commitizen與standard-version工具實(shí)現(xiàn)了語(yǔ)義化版本與變更日志的自動(dòng)化,在一定程度上提升了軟件發(fā)布的效率。然而深入思考,我們會(huì)發(fā)現(xiàn)standard-version的工作仍然存在手工操作。我們也探討了利用華為云DevCloud流水線將此工作進(jìn)一步自動(dòng)化的可行性。遺憾的是,目前華為云DevCloud不支持向用戶代碼庫(kù)提交變更的能力。我們希望華為云DevCloud可以進(jìn)一步評(píng)估向用戶代碼庫(kù)提交變更的能力。那么在當(dāng)前限制下,是不是就沒(méi)有可能自動(dòng)化了呢?路是存在的,只是有點(diǎn)復(fù)雜,感興趣的開(kāi)發(fā)者,可以參考博文“如何在華為云DevCloud流水線中運(yùn)行OWASP ZAP安全測(cè)試”。

      流水線 CloudPipeline DevOps

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:項(xiàng)目資金管理,有效控制項(xiàng)目資金的重要性
      下一篇:apaas數(shù)據(jù)開(kāi)發(fā)(AP數(shù)據(jù)庫(kù))
      相關(guān)文章
      国产精品亚洲精品观看不卡| 亚洲欧洲日产v特级毛片| 亚洲精品视频在线播放| 亚洲一区二区三区偷拍女厕| 色久悠悠婷婷综合在线亚洲| 亚洲国产成人爱av在线播放 | 亚洲 综合 国产 欧洲 丝袜| 色欲aⅴ亚洲情无码AV| 亚洲av无码专区亚洲av不卡| 亚洲变态另类一区二区三区| 亚洲AV永久无码精品网站在线观看| 亚洲色偷偷综合亚洲av78 | 亚洲日韩av无码| 亚洲日韩精品射精日| 亚洲VA中文字幕无码一二三区| 亚洲国产精品乱码一区二区| 亚洲AV无码成人精品区在线观看| 久久精品国产亚洲av成人| 亚洲bt加勒比一区二区| 亚洲伦另类中文字幕| 久久精品国产亚洲av麻豆小说 | 国产亚洲情侣久久精品| 亚洲av无码乱码在线观看野外 | 亚洲性69影院在线观看| 亚洲乱码卡三乱码新区| 亚洲色精品VR一区区三区| 亚洲精品蜜夜内射| 麻豆亚洲AV成人无码久久精品 | 亚洲视频一区在线观看| 亚洲精品视频在线免费| 亚洲成人激情小说| 噜噜综合亚洲AV中文无码| 亚洲国产a级视频| 亚洲精品卡2卡3卡4卡5卡区| 亚洲人成电影福利在线播放| 亚洲激情黄色小说| 亚洲熟女综合色一区二区三区 | 亚洲视频2020| 亚洲天堂2016| 国产精品观看在线亚洲人成网| 久久亚洲欧洲国产综合|