1 原理

GitHub Actions 是一个强大的自动化工具,可以帮助你简化开发流程的各种操作。从测试代码到部署应用,它几乎可以自动化开发中的任何任务。

这里使用它来自动发布 Obsidian 插件。当打 TAG 时,它会触发编译并发布新版本。

2 操作

2.1 设置工作流

在 github 项目中创建一个工作流配置文件

1
2
3
4
5
mkdir.github/workflows/
vi .github/workflows/release.yml # 加上述文档中的内容
git add .github/workflows/release.yml
git commit -m 'xxx'
git push

yml 中具体内容见:ob 自动发布教程

2.2 本地测试

在本地安装一个与 yml 文件中类似的环境(node-version)。测试无误后,再上传 GitHub 进行编译。请确保 JSON 配置文件完整。

2.3 打标签即可触发工作流

1
2
git tag -a 1.0.0 -m "1.0.0"
git push origin 1.0.0

如果标签错误,需要先删除原有标签,然后重新标记;也可以在界面上重新运行工作流。

1
2
git tag -d 1.0.0
git push origin --delete 1.0.0

理论上,标签可以根据个人喜好命名,比如 v1.0 和 1.0 都是可以的。但有些软件有特定要求,例如,Obsidian 要求插件命名中只能使用数字和点。

3 调试

  • 在 GitHub 项目的界面上,点击“Actions”选项卡,即可查看工作流的进度。
  • 如果出现错误,可以在此界面查看错误原因。
  • 修改后,点击进入工作流,在右上角可以选择“Rerun job”。
  • 如果工作流运行正常,即可在 GitHub 项目右侧的“Release”链接中看到生成的软件版本。

4 问题与解决

4.1 权限问题

  • 描述:Build 成功,但在 Release 时显示没有写入权限。
  • 报错:HTTP 403: Resource not accessible by integration
  • 解决方法:在 yml 文件中启用写权限。
1
2
3
4
5
6
7
8
jobs:
build:
runs-on: ubuntu-latest
permissions: # add here
contents: write
packages: write
steps:
...

4.2 草稿问题

根据官方提供的默认配置文件,发布版本会默认以草稿形式出现,项目开发者以外的其它人看不到该版本,需要手动更改为正式发布 (Draft->Edit->Publish Release)。如果希望直接发布,可以在命令中去掉 --draft 参数。

如果是其它 yml 文件,可尝试:

1
2
3
4
5
6
7
- name: Create Release
uses: actions/create-release@v1
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false # 确保草稿是 false
prerelease: false # 如果不是预发布版本