目錄
語義化版本控制
主要版本變更(Major)
次要版本變更(Minor)
修補版本變更(Patch)
提交信息格式
提交標題
提交腳註
強制執行提交信息格式
生成發布
發布派對!
首頁 web前端 css教學 如何通過連續部署自動化項目版本並發布

如何通過連續部署自動化項目版本並發布

Apr 01, 2025 am 04:16 AM

How to Automate Project Versioning and Releases with Continuous Deployment

採用語義化版本控制能更輕鬆地維護和溝通軟件變更,但手動操作卻很繁瑣。即使手動合併PR、標記提交並推送發布,仍然需要編寫發布說明。步驟眾多,且重複性高,耗時費力。

本文將介紹如何通過將語義化版本控制集成到持續部署流程中,實現更高效的流程並完全自動化發布流程

語義化版本控制

語義化版本是一個由三個數字組成的版本號,例如1.4.10。每個數字都有特定的含義:

主要版本變更(Major)

第一個數字表示主要版本變更,意味著存在破壞性變更。

次要版本變更(Minor)

第二個數字表示次要版本變更,意味著添加了新功能。

修補版本變更(Patch)

第三個數字表示修補版本變更,意味著修復了bug。

可以將語義化版本更簡潔地理解為:破壞性變更.功能變更.錯誤修復。這種描述方式更精確,避免歧義。

提交信息格式

為了確保正確遞增語義化版本號並發布正確版本,需要標準化提交信息格式。標準化的提交信息格式有助於確定何時遞增哪個數字,並輕鬆生成發布說明。這裡將使用Angular 提交信息約定,當然也可以根據需要更改。

格式如下:

<code></code>
登入後複製

每個提交信息包含標題正文腳註

提交標題

標題是必須的,它具有特殊的格式,包括類型、可選的範圍主題

標題的類型是必填字段,用於說明提交內容對下一個版本的影響。它必須是以下類型之一:

  • feat : 新功能
  • fix : bug 修復
  • docs : 文檔變更
  • style : 不影響代碼含義的變更(例如:空格、格式、缺少分號等)
  • refactor : 代碼重構,既不修復bug也不添加功能
  • perf : 性能改進
  • test : 添加或修正測試
  • chore : 構建流程或輔助工具和庫的變更,例如生成文檔

範圍是一個分組屬性,用於指定提交相關的子系統,例如API、應用程序的儀表板或用戶帳戶等。如果提交修改了多個子系統,則可以使用星號(*) 代替。

標題主題應簡要描述所做的更改。編寫主題時需遵循以下規則:

  • 使用祈使句,現在時態(例如,“更改”而不是“已更改”或“更改”)。
  • 首字母小寫。
  • 末尾不加句點(.)。
  • 避免主題長度超過80 個字符。提交正文。

與標題主題一樣,正文也應使用祈使句,現在時態。它應包括更改的動機,並將其與之前的行為進行對比。

提交腳註

腳註應包含任何有關破壞性變更的信息,也是引用此提交關閉的問題的地方。

破壞性變更信息應以BREAKING CHANGE: 開頭,後跟空格或兩行新行。其餘提交信息在此處。

強制執行提交信息格式

在團隊協作中,標準化任何需要每個人都遵守的內容始終是一項挑戰。為了確保每個人都使用相同的提交標準,我們將使用Commitizen。

Commitizen 是一個命令行工具,它簡化了使用一致的提交信息格式的過程。使倉庫與Commitizen 兼容意味著團隊中的任何人都可以運行git cz 並獲得詳細的提示以填寫提交信息。

生成發布

現在我們知道我們的提交遵循一致的標準,我們可以開始生成發布和發布說明了。為此,我們將使用名為semantic-release 的包。這是一個維護良好的包,對多種持續集成(CI) 平台具有良好的支持。

semantic-release 是我們旅程的關鍵,因為它將執行發布所需的所有步驟,包括:

  1. 確定您發布的最後一個版本
  2. 根據自上次發布以來添加的提交確定發布類型
  3. 為自上次發布以來添加的提交生成發布說明
  4. 更新package.json 文件並創建與新發布版本對應的Git 標籤
  5. 推送新版本

任何CI 都可以。在本文中,我們使用GitHub Action,因為我喜歡在尋求第三方解決方案之前使用平台的現有功能。

安裝semantic-release 的方法有很多,但我們將使用semantic-release-cli,因為它提供了逐步操作。讓我們在終端中運行npx semantic-release-cli setup,然後填寫交互式嚮導。

該腳本將執行以下幾件事:

  • 使用提供的NPM 信息運行npm adduser 以生成.npmrc。
  • 創建GitHub 個人訪問令牌。
  • 更新package.json。

CLI 完成後,它會將semantic-release 添加到package.json,但不會實際安裝它。運行npm install 以安裝它以及其他項目依賴項。

剩下的唯一事情是通過GitHub Actions 配置CI。我們需要手動添加一個將運行semantic-release 的工作流程。讓我們在.github/workflows/release.yml 中創建一個發布工作流程。

 <code>name: Release on: push: branches: - main jobs: release: name: Release runs-on: ubuntu-18.04 steps: - name: Checkout uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 12 - name: Install dependencies run: npm ci - name: Release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # If you need an NPM release, you can add the NPM_TOKEN # NPM_TOKEN: ${{ secrets.NPM_TOKEN }} run: npm run release</code>
登入後複製

Steffen Brewersdorff 已經出色地介紹了使用GitHub Actions 進行CI,但讓我們簡要回顧一下這裡發生的事情。

這將等待對主分支的推送發生,然後才運行管道。可以隨意更改此設置以在一個、兩個或所有分支上運行。

 <code>on: push: branches: - main</code>
登入後複製

然後,它使用checkout 拉取倉庫並安裝Node,以便npm 可用於安裝項目依賴項。如果這是您偏好的內容,則可以添加測試步驟。

 <code>- name: Checkout uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v1 with: node-version: 12 - name: Install dependencies run: npm ci # You can add a test step here # - name: Run Tests # run: npm test</code>
登入後複製

最後,讓semantic-release 完成所有神奇的操作:

 <code>- name: Release run: npm run release</code>
登入後複製

推送更改並查看操作:

現在,每次對指定分支進行提交(或合併)時,操作都將運行並進行發布,並附帶發布說明。

發布派對!

我們已經成功創建了一個CI/CD 語義化發布工作流程!是不是沒那麼痛苦?設置相對簡單,擁有語義化發布工作流程沒有任何缺點。它只會使跟踪更改變得容易得多。

semantic-release 還有許多插件可以實現更高級的自動化。例如,甚至還有一個Slack 發布機器人,可以在項目成功部署後發佈到項目頻道。無需前往GitHub 查找更新!

以上是如何通過連續部署自動化項目版本並發布的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

帶有粘性定位的堆疊卡和一點點的雜物 帶有粘性定位的堆疊卡和一點點的雜物 Apr 03, 2025 am 10:30 AM

前幾天,我發現了科里·金尼文(Corey Ginnivan)網站上的這一點,當您滾動時,彼此之間的卡片堆放集。

Google字體可變字體 Google字體可變字體 Apr 09, 2025 am 10:42 AM

我看到Google字體推出了新設計(Tweet)。與上一次大型重新設計相比,這感覺更加迭代。我幾乎無法分辨出區別

如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 Apr 11, 2025 am 11:29 AM

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

為什麼Flex佈局中的紫色斜線區域會被誤認為是'溢出空間”? 為什麼Flex佈局中的紫色斜線區域會被誤認為是'溢出空間”? Apr 05, 2025 pm 05:51 PM

關於Flex佈局中紫色斜線區域的疑問在使用Flex佈局時,你可能會遇到一些令人困惑的現象,比如在開發者工具(d...

HTML數據屬性指南 HTML數據屬性指南 Apr 11, 2025 am 11:50 AM

您想了解的有關HTML,CSS和JavaScript中數據屬性的所有信息。

如何通過CSS選擇第一個類名為item的子元素? 如何通過CSS選擇第一個類名為item的子元素? Apr 05, 2025 pm 11:24 PM

在元素個數不固定的情況下如何通過CSS選擇第一個指定類名的子元素在處理HTML結構時,常常會遇到元素個數不�...

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

在前端開發中,如何使用CSS和JavaScript實現類似Windows 10設置界面的探照燈效果? 在前端開發中,如何使用CSS和JavaScript實現類似Windows 10設置界面的探照燈效果? Apr 05, 2025 pm 10:21 PM

在前端開發中如何實現類似Windows...

See all articles