还不会使用Github自动构建Actions?这么好用的功能实在是忍不住写一篇文章推广一下。如果你没使用过,那么就来看看吧。
Github被微软收购之前就有自动构建工具,比如Travis CI,自动构建可以让代码自动构建起来,甚至自动打包、自动发布,我也是在编写我的笔记程序时想让Github自动发布新版本才开始使用这个功能。
我的项目是private类型的,AppVeyor免费版本只支持public的项目,后来发现Github的Actions可以支持private并且功能异常强大,几乎所有的程序(Windows、Linux、安卓、IOS等)都可以使用Actions进行自动化。Actions标签如下图所示,点击即可进入操作界面。
Actions里面支持非常多的构建类型,通常你可以找到一个可以用的模板,如下:
比如我是windows开发,那么就选择了MSBuild based projects这个。点击Configure会创建一个msbuild.yml文件,默认会给你提供VS编译工具。
由于yml的内容非常多,可以参考官方文档,这里我列一下我构建时遇到的问题。
通常一个项目不会是由一个git项目组成,而是包含了很多外部模块,那么如何checkout其他项目源码呢?
如上图,在uses中使用checkout,with使用submodules为recursive,那么git会自动下载.gitmodules文件里面的子模块。注意如果是private项目,需要使用token,这个token是在如下页面设置的(用户Setting,然后点击最下面的Developer settings):
我在处理版本号时需要读取源码中的版本字符串,这个是用python写的脚本,如上图中,直接使用uses就可以了,可以指定python版本。这样可以在系统中非常方便的写python了!
默认run只会执行一条命令,如果写成run: |,那么可以写任意多行的命令,这样非常适合在yml中写shell脚本,而无需调用bat文件。
我是直接将nsis放在工程中,这样减少了nsis版本和插件等一堆问题。类似的可以将很多工具exe直接放到工程中,便于直接调用。
答案是可以,不过上传有一定概率失败,可能是速度有点慢容易超时。我打包后的文件是29MB,因此需要做超时处理。
从上面可以看出,我们完全可以把Github看成是我们自己的电脑,至少我使用的时候感觉不到任何限制,上传下载编译构建打包无所不能,唯一的限制是每个月只有2000分钟的构建时间,如果是Windows只有1000分钟,平均每天33分钟,但是对于一般的个人开发来说是够用的了。据说这个功能可以用来挖矿,现在估计严了,恶意操作小心封号。
由于我的笔记程序需要支持全平台,后面打包的事情貌似都可以使用Actions完成,刚搞定Windows的,后面再处理安卓的,不管你是开发什么程序,都可以使用构建工具做一些事情。安利完毕,看到这里相信你已经有大概印象了。