搜尋
首頁web前端css教學如何通過連續部署自動化項目版本並發布

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
模擬鼠標運動模擬鼠標運動Apr 22, 2025 am 11:45 AM

如果您曾經在現場演講或課程中必須顯示一個互動動畫,那麼您可能知道它並不總是那麼容易與您的幻燈片進行互動

通過Astro Action和Fuse.js為搜索提供動力通過Astro Action和Fuse.js為搜索提供動力Apr 22, 2025 am 11:41 AM

對於Astro,我們可以在構建過程中生成大部分網站,但是有一小部分服務器端代碼可以使用Fuse.js之類的搜索功能來處理搜索功能。在此演示中,我們將使用保險絲搜索一組個人“書籤”

未定義:第三個布爾值未定義:第三個布爾值Apr 22, 2025 am 11:38 AM

我想在我的一個項目中實現一條通知消息,類似於您在保存文檔時在Google文檔中看到的信息。換句話說,一個

捍衛三元聲明捍衛三元聲明Apr 22, 2025 am 11:25 AM

幾個月前,我正在使用黑客新聞(就像一個人一樣),並且遇到了一篇(現已刪除的)文章,內容涉及不使用if語句。如果您是這個想法的新手(就像我

使用網絡語音API進行多語言翻譯使用網絡語音API進行多語言翻譯Apr 22, 2025 am 11:23 AM

自科幻小說以來,我們就幻想著與我們交談的機器。今天這很普遍。即便如此,製造的技術

JetPack Gutenberg塊JetPack Gutenberg塊Apr 22, 2025 am 11:20 AM

我記得當古騰堡被釋放到核心時,因為那天我在WordCamp我們。現在已經過去了幾個月,所以我想我們越來越多的人

在VUE中創建可重複使用的分頁組件在VUE中創建可重複使用的分頁組件Apr 22, 2025 am 11:17 AM

大多數Web應用程序背後的想法是從數據庫中獲取數據,並以最佳方式將其呈現給用戶。當我們處理數據時

使用'盒子陰影”和剪輯路徑一起使用'盒子陰影”和剪輯路徑一起Apr 22, 2025 am 11:13 AM

讓我們在一個情況下做一些似乎有意義的事情的情況下逐步進行一些逐步,但是您仍然可以用CSS欺騙來完成它。在這個

See all articles

熱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

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

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!