如何從 Git 標籤自動發布 GitHub 版本

如何從 Git 標籤自動發布 GitHub 版本

GitHub Releases 為最終用戶提供了一種易於訪問的方法來下載版本化的軟件二進製文件。您可以手動創建它們,但讓 GitHub Actions 使用在存儲庫中創建的發布標籤自動構建它們要容易得多。

使用標記版本

標籤是 Git 中的一項現有功能,並由 GitHub 的 Releases 提供擴展支持,它提供了一個託管具有相關變更日誌的二進製文件的位置。

您可以創建一個標籤,就像創建一個分支一樣,只不過它是一個固定點,不會移動並且始終指向特定的提交。這對於創建版本化版本很有用,大多數人會使用語義版本控制格式(Major.Minor.Patch)創建標籤。

標籤可以推送到 GitHub,在那裡它們可以在其他自動化工作流程中使用。在本例中,我們將設置一個 GitHub Actions 腳本,該腳本將偵聽包含標記版本的提交,並自動將構建工件發佈到版本。

設置 GitHub 操作

首先,您需要確保您有一個有效的 GitHub Actions 構建,並且您的構建腳本正常運行。工作流程的確切設置取決於您正在構建的項目類型,但通常您不想同時調試兩個問題,因此一旦您已經有了工作工件,您應該添加發布發布。您可以閱讀我們的設置 GitHub Actions 構建指南以了解更多信息。

要做的第一件事是編輯操作腳本的“on”部分,以便在創建標籤時也運行。默認情況下,您可能有“推送”事件來跟踪版本或主分支。您需要添加標籤並設置過濾器。對於所有標籤,只需使用通配符:

在工作流程結束時,所有內容都構建完成後,我們將創建發布條目。這是一個由兩部分組成的步驟 – 首先,我們需要創建一個包含所有元數據的新 Release 對象,然後我們可以使用輸出的發布 URL 來上傳工件。如果您有多個工件,您可以創建多個上傳步驟。

無論哪種情況,我們都只想在工作流因標籤而運行時才運行這些步驟。我們可以通過一個簡單的if檢查來做到這一點,並檢查該對像是否github.ref是一個標籤,它存儲觸發工作流的分支或標籤的引用名稱。

第一步是創建一個 Release 對象,這可以通過以下步驟完成。GitHub 令牌不需要手動創建 – 它是一個特殊的令牌,始終可以從 Actions 腳本中引用。

- name: Create Release

if: startsWith(github.ref, 'refs/tags/')

uses: actions/create-release@v1

id: create_release

with:

draft: false

prerelease: false

release_name: ${{ github.ref }}

tag_name: ${{ github.ref }}

body_path: CHANGELOG.md

env:

GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

請注意,該版本的變更日誌存儲在CHANGELOG.md,該位置必須存在才能使工作流程正常運行。您可以對每個標籤進行編輯,以更改 GitHub 在發布頁面上顯示的降價。有一些工具可以使用提交消息自動生成此信息,但大多數團隊無論如何都有自己的管理方法。

接下來,您可以開始上傳工件。這將使用上一步中的上傳 URL,並且您需要定義一個路徑以及資產的顯示名稱。

- name: Upload Release

if: startsWith(github.ref, 'refs/tags/')

uses: actions/upload-release-asset@v1

env:

GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

with:

upload_url: ${{ steps.create_release.outputs.upload_url }}

asset_path: Oxide.Ext.Sanctuary/bin/Release/net48/Oxide.Ext.Sanctuary.dll

asset_name: Oxide.Ext.Sanctuary.dll

asset_content_type: application/octet-stream

請注意,此處內容類型設置為octet-stream,這對於可執行文件和 DLL 等二進制數據來說是典型的。如果您要發布 ZIP 或其他類型的文件,您將需要更改此設置,儘管它只會影響發布頁面上的視覺效果。

現在,您可以將更改提交到操作工作流程,然後創建新標籤並將其推送到 GitHub。您應該看到正在創建一個新的工作流程運行,除了不是在 master 分支上運行之外,它是由於標籤而運行的:

完成後,您將在 GitHub 側欄中看到該版本。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *