通过 GitHub Actions 自动创建 Github Release
通过 GitHub Actions 自动创建 Github Release
Intro
在 GitHub 上维护了几个小的开源项目,每次在发布新版本的时候会创建一个 release,这样可以比较方便的找到对应的版本的代码,不需要再人肉的从 git log 中找到指定的 commit,而且在 GitHub 上创建 Release 的话别人可以方便的关注项目新版本的发布,之前都是手动创建 release,最近看到 docfx 的项目配置了自动创建 release,于是想给自己的项目里加上自动创建 release。
Sample
可以看一个实际的示例效果:
release 中的简介是后来编辑加上去的,因为选的这个 Action 暂时不支持设置 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 环境并且 build package,第二步是获取当前 package 的版本,用作 release 的 tag,第三步就是要创建 release 了,创建 release 使用的是一个开源的别人封装好的创建 release 的 action 模板(marvinpinto/action-automatic-releases
),具体使用可以参考文档介绍:
Parameter | Description | Default |
---|---|---|
repo_token **
|
GitHub Action token, e.g. "${{ secrets.GITHUB_TOKEN }}" .
|
null
|
draft
|
Mark this release as a draft? |
false
|
prerelease
|
Mark this release as a pre-release? |
true
|
automatic_release_tag
|
Tag name to use for automatic releases, e.g latest .
|
null
|
title
|
Release title; defaults to the tag name if none specified. | Tag Name |
files
|
Files 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 环境中获取变量 ReleaseVersion
的值,而 ReleaseVersion
是在上一步中执行的 powershell 脚本中设置的,GitHub Actions 中的环境变量并不直接等于系统的环境变量,出于安全考虑,GitHub Actions 使用了一个自定义的变量 GITHUB_ENV
来支持用户自定义环境变量,我们需要把自定义的变量放在这里面才能跨 step 共享
powershell 脚本比较简单就是获取 package version 并将其设置到 GitHub Actions 环境变量中,脚本内容如下:
$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}"
最后设置脚本的这里折腾了好久,因为官方给的示例是基于 Bash 的,基于 Linux 的示例,直接使用并没有效果,最后参考了这里的https://github.community/t/empty-github-env-variables-on-powershell/147626 的答案,使用了上面这种方式终于可以了,在 Linux 中需要使用 echo "ReleaseVersion=${ReleaseVersion}" >> $GITHUB_ENV
,详细信息可以参考 https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable
More
以上的示例是在 Windows 上,有需要的可以调整成 Linux 进行使用,只需要把获取和设置 ReleaseVersion
的逻辑换一下就可以了
这不仅仅适用于 Nuget 包的发布,同样可以适用于其他任何需要发布的项目
目前唯一的不够完美的地方就是不支持设置介绍部分,已经有一个 issue,有需要的可以关注一下 https://github.com/marvinpinto/actions/issues/19
现在 docfx 项目在使用这个 GitHub Action 来做自动发布 release,所以也使用了这个 Action,但是没看明白 docfx 项目是在哪里设置版本的,有兴趣的可以看一下 docfx 项目,目前 3.0 版本正在使用自动发布 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
通过 GitHub Actions 自动创建 Github Release相关推荐
- 用GitHub Actions自动部署Hexo
本文不算原创,是根据参考文档结合自己的需要修改而成,但也非转载和翻译. 老苏一直用 hexo 发博文,发布过程经历了 三个阶段 第一阶段 : 在家里的台式机上发布 hexo ,流程是先把要发布博文的 ...
- 如何使用 Github Actions 自动抓取每日必应壁纸?
Hello world : ) 微信搜「 程序猿阿朗 」.点赞再看,动力无限. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. 如何 ...
- 5 分钟教你快速掌握 GitHub Actions 自动部署博客
自从 GitHub 宣布 GitHub Actions 在平台上对所有开发人员和存储库可用以来,GitHub Actions 越来越受欢迎.很多第三方平台在生态系统中有速度等限制,将进一步推动开发人员 ...
- Dependabot:自动创建GitHub PR修复潜在漏洞
Dependabot基于GitHub Security Advisory API,旨在帮助开发人员跟踪依赖项.监控程序的安全性,并通过自动创建PR来移除任何潜在的漏洞. Dependabot联合创始人 ...
- 利用 Github Actions 自动更新 docfx 文档
利用 Github Actions 自动更新 docfx 文档 Intro docfx 是微软出品一个 .NET API 文档框架,有一个理念是代码即文档,会根据项目代码自动生成 API 文档,即使没 ...
- Github Actions 自动同步到 Gitee
目录 引言 具体方案 引言 平时开源代码一般已Github为主,但是会遇到网不好的情况,于是考虑将Github仓库自动同步到Gitee上,作为备份. 考虑不能手动做这个事情,于是想到了Github A ...
- 使用Github Actions自动部署vue项目到nginx服务器
解决的问题:妈妈再也不担心我deploy时候手滑了 1. 避免手动执行重复的前端发布流程,节约开发时间和耐心 2. 减少了使用Jenkins类似的工具来做这种简单的发布流程,减少了第三方系统(Jenk ...
- 使用GitHub Actions实现Android自动打包apk
记录一下,免得忘了 实现根据tag自动打包并上传至release 官方文档 workflow name: Android CI# 触发器 on:push:tags:- v*pull_request:t ...
- 使用GitHub Actions实现Hexo博客自动发布
我在使用jenkins实现hexo博客自动发布中介绍了可以使用jenkins实现博客自动发布,其实还有一种更简单的方法,就是GitHub提供的持续集成服务:GitHub Actions.下面就来介绍一 ...
最新文章
- C#开发微信门户及应用(25)-微信企业号的客户端管理功能
- php程序yii是什么意思,Yii框架啥意思
- SAP 电商云 Spartacus UI shipping method 切换时的 spinner 显示
- WebClient与WebRequest差异
- 顺序表应用2:多余元素删除之建表算法(SDUT 3325)
- 命名之法 —— 书名及角色、武功(金庸)
- Nopi的学习笔记(C#篇)
- TCP/IP协议号大全
- Jconsole小记
- matlab学习笔记 clc和clear
- 什么是SSD TRIM (by quqi99)
- 【Python 常用英文单词】——总结Python常用的英文单词 最全版
- CSS3基础一篇完结(豪豪的备忘录)
- 虚拟机NAT模式无法连外网
- rj45插座尺寸图_带灯RJ45插座接口定义及使用说明
- ICN6211-6202MIPI转RGB MIPI转LVDS
- Vue3基础安装教程
- Vue.js 3.0 学习笔记(十)过渡和动画效果
- 淘宝技术发展[转载]
- 【弱监督显著目标检测论文】Weakly-Supervised Salient Object Detection Using Point Supervison
热门文章
- Python基础学习总结__Day3
- MAMP升级mysql5.6到5.7
- thinkphp与php共享session
- 赠与大学毕业生_出售,赠与或交易iPhone之前应该做什么
- 计算机复试比重低的学校,又有985院校发布调剂信息,这个34所降低复试比重!...
- confd_confd + Nacos | 无代码侵入的配置变更管理
- 「读懂源码系列2」我从 lodash 源码中学到的几个知识点
- sqlplus命令行登录oracle数据库的N种方法盘点
- 2018暑假集训---递推递归----一只小蜜蜂hdu2044
- 你不知道的JavaScript(二)