最近在尝试使用 Github Actions 自动编译、发布树莓派Openwrt固件的时候,遇到了 Release 发布失败的问题。
可以看到 Create Release 这一步发生了错误 Bad credentials
,这个错误一般是调用 GitHub Release API 的时候 TOKEN 错误导致的,但是在我们这里是 GitHub 自动生成的 TOKEN ,照说应该一点问题都没有才对啊。
后来查找资料得知是因为 GitHub 为 Actions 的每一个 Workflow 都会申请一个临时的 TOKEN ,但是这个TOKEN 只有一个小时的失效,而我们的编译持续了一个半小时,此时的 TOKEN 已经失效了, 因此不再有效。
GitHub给出了一个解决的办法,就是创建不同的 Workflow,先单独编译,编译完成之后再将固件传到一个第三方的位置(比如你的云盘),然后再单独一个 Workflow 进行发布。
另外一种办法就是使用永久的 TOKEN ,但是对于公开仓库这显然不安全,所以可以考虑创建一个 private repo 在里面编译然后通过永久 TOKEN 上传到公开仓库的 Release 里。