Github Actions自动发布release

开源 0

目录

  • 说明
  • 正文
    • 1.设置仓库密钥
    • 2.打开仓库权限
    • 3.配置自动化文件
    • 4.写在最后

说明

GitHub Actions 是 GitHub 的持续集成服务,于2018年10月推出。通过Github Actions可以实现诸多自动化功能,比如自动打包,自动发布Release等等。除此之外,GitHub Actions完全免费。

GitHub Actions 文档:

在这里插入图片描述

正文

1.设置仓库密钥

GitHub Actions多数时候会调用一个叫做github-actions的机器人进行工作,这意味着我们必须为仓库添加Token才能让GitHub Actions正常工作。

访问你的settings页面,找到Developer settings,选中Personal access tokens,选中子选项Token (classic),点击右上角Generate后再次选择classic,在密钥的设置界面取个名字,设置日期,勾选框图中的三个权限即可。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

拉到最下方点击generate后,复制密钥信息:

在这里插入图片描述

打开你的项目的settings页面,找到Secrets选项卡,选中Actions,选中下方New secret名字不重要可以随便取,填入刚刚的密钥后保存即可。

在这里插入图片描述
在这里插入图片描述

2.打开仓库权限

因为Release涉及文件读取,因此要把setings-Action-general中的读写权限开启:

在这里插入图片描述

3.配置自动化文件

GitHub Actions的自动化信息来自项目根目录下.github/workflows文件夹下后缀为.yml的文件(其文件格式遵循yaml)

Yaml文件在GitHub Actions中具有条件判断能力,你可以设置多个文件来满足不同的需要。

新建一个Release文件,填入以下内容即可:

name: Build and Releaseon:  push:    tags:      - "v*"jobs:  build:    runs-on: ubuntu-latest    steps:      - name: Checkout        uses: actions/checkout@v2      - name: Install gcc        run: sudo apt install -y gcc      - name: Make Build dir        run: mkdir build      - name: Build        run: gcc a.c -o ./build/release      - name: Release        uses: softprops/action-gh-release@v2        with:          token: ${{ secrets.123dsa }}          body_path: ./CHANGELOG.md          files: |            ./build/**            ./CHANGELOG.md

我不会细致地解释为什么这样写,在说明的文档超链接里有所有内容。

name:这个自动化的名称,会在GitHub Actions中作为分别选项卡进行区分
on:执行条件。因为支持通配符,这里的设置为当此push的标签为v开头时执行
jobs:很显然是做些什么
build:其中的runs-on指定在最新的ubuntu系统上运行
steps:执行内容,其中name指名称(不是很重要),run指定执行的代码。需要注意的是所有run命令的工作目录都是项目根目录

第一步为通用步骤,复制源代码并检查哈希值。

二三四步为一个简单的gcc构建。

第五步为构建发布,使用了GH Release这个Action,with指定了参数,token指定给机器人用的token,与上文添加的一致(其实你不加这一行都可以),body_path指定从根目录的CHANGELOG.md文件读取内容作为Release的内容(不加这一行也可以),files指定Release的文件,|为Yaml的特定符号,其下可以使用多行文字。通配符**代表build目录下所有文件。

效果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.写在最后

GitHub Actions自带有很多的参数,例如github.ref代表本次执行时传入的标签,并且GH Release这个Action还具有设置pre-release等等功能,可以自定义出相当实用的自动化。

也许您对下面的内容还感兴趣: