日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

通过 GitHub Actions 自动创建 Github Release

發(fā)布時間:2023/12/4 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过 GitHub Actions 自动创建 Github Release 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

通過 GitHub Actions 自動創(chuàng)建 Github Release

Intro

在 GitHub 上維護了幾個小的開源項目,每次在發(fā)布新版本的時候會創(chuàng)建一個 release,這樣可以比較方便的找到對應(yīng)的版本的代碼,不需要再人肉的從 git log 中找到指定的 commit,而且在 GitHub 上創(chuàng)建 Release 的話別人可以方便的關(guān)注項目新版本的發(fā)布,之前都是手動創(chuàng)建 release,最近看到 docfx 的項目配置了自動創(chuàng)建 release,于是想給自己的項目里加上自動創(chuàng)建 release。

Sample

可以看一個實際的示例效果:



release 中的簡介是后來編輯加上去的,因為選的這個 Action 暫時不支持設(shè)置 release 的簡介部分

Github ?Actions 配置

name:?Release on:push:branches:?[?master?] jobs:build:name:?Releaseruns-on:?windows-lateststeps:-?uses:?actions/checkout@v1-?name:?Setup?.NET?Coreuses:?actions/setup-dotnet@v1with:dotnet-version:?5.0.x-?name:?Buildshell:?pwshrun:?.\build.ps1?--stable=true-?name:?Get?Release?Versionshell:?pwshrun:?.\build\getReleaseVersion.ps1-?name:?Create?GitHub?releaseuses:?marvinpinto/action-automatic-releases@latestwith:repo_token:?"${{?secrets.GITHUB_TOKEN?}}"automatic_release_tag:?${{?env.ReleaseVersion?}}title:?${{?env.ReleaseVersion?}}prerelease:?falsefiles:?|artifacts/packages/*

整個 Action 大體上可以分為三步,第一步是安裝 dotnet 環(huán)境并且 build package,第二步是獲取當(dāng)前 package 的版本,用作 release 的 tag,第三步就是要創(chuàng)建 release 了,創(chuàng)建 release 使用的是一個開源的別人封裝好的創(chuàng)建 release 的 action 模板(marvinpinto/action-automatic-releases),具體使用可以參考文檔介紹:

ParameterDescriptionDefault
repo_token**GitHub Action token, e.g. "${{ secrets.GITHUB_TOKEN }}".null
draftMark this release as a draft?false
prereleaseMark this release as a pre-release?true
automatic_release_tagTag name to use for automatic releases, e.g latest.null
titleRelease title; defaults to the tag name if none specified.Tag Name
filesFiles to upload as part of the release assets.null

  • Parameters denoted with ** are required.

  • The files parameter supports multi-line glob patterns, see repository examples.

上面的 ${{ env.ReleaseVersion }} 表示從 GitHub Actions 環(huán)境中獲取變量 ReleaseVersion 的值,而 ReleaseVersion 是在上一步中執(zhí)行的 powershell 腳本中設(shè)置的,GitHub Actions 中的環(huán)境變量并不直接等于系統(tǒng)的環(huán)境變量,出于安全考慮,GitHub Actions 使用了一個自定義的變量 GITHUB_ENV 來支持用戶自定義環(huán)境變量,我們需要把自定義的變量放在這里面才能跨 step 共享

powershell 腳本比較簡單就是獲取 package version 并將其設(shè)置到 GitHub Actions 環(huán)境變量中,腳本內(nèi)容如下:

$versionPath=$PSScriptRoot+"/version.props" $versionXml=([xml](Get-Content $versionPath)) $versionProperty=$versionXml.Project.PropertyGroup $ReleaseVersion=$versionProperty.VersionMajor+"."+$versionProperty.VersionMinor+"."+$versionProperty.VersionPatch $ReleaseVersion Add-Content -Path $env:GITHUB_ENV -Value "ReleaseVersion=${ReleaseVersion}"

最后設(shè)置腳本的這里折騰了好久,因為官方給的示例是基于 Bash 的,基于 Linux ?的示例,直接使用并沒有效果,最后參考了這里的https://github.community/t/empty-github-env-variables-on-powershell/147626 的答案,使用了上面這種方式終于可以了,在 Linux 中需要使用 echo "ReleaseVersion=${ReleaseVersion}" >> $GITHUB_ENV,詳細(xì)信息可以參考 https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable

More

以上的示例是在 Windows 上,有需要的可以調(diào)整成 Linux 進行使用,只需要把獲取和設(shè)置?ReleaseVersion?的邏輯換一下就可以了

這不僅僅適用于 Nuget 包的發(fā)布,同樣可以適用于其他任何需要發(fā)布的項目

目前唯一的不夠完美的地方就是不支持設(shè)置介紹部分,已經(jīng)有一個 issue,有需要的可以關(guān)注一下?https://github.com/marvinpinto/actions/issues/19

現(xiàn)在 docfx 項目在使用這個 GitHub Action 來做自動發(fā)布 release,所以也使用了這個 Action,但是沒看明白 docfx 項目是在哪里設(shè)置版本的,有興趣的可以看一下 docfx 項目,目前 3.0 版本正在使用自動發(fā)布 release 的功能?https://github.com/dotnet/docfx/blob/v3-release/.github/workflows/release.yml

References

  • https://github.com/WeihanLi/WeihanLi.Common

  • https://github.com/WeihanLi/WeihanLi.Common/blob/dev/.github/workflows/release.yml

  • https://github.com/WeihanLi/WeihanLi.Common/actions/runs/671183725

  • https://github.community/t/empty-github-env-variables-on-powershell/147626

  • https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable

  • https://github.com/marvinpinto/action-automatic-releases

  • https://github.com/marvinpinto/actions/issues/19

總結(jié)

以上是生活随笔為你收集整理的通过 GitHub Actions 自动创建 Github Release的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。