前言 🔗
作为一个.net小白,自从完美实现了asp.net core on the linux后,每次版本更新都需要在vs2022中手动编译,然后scp或xftp等工具上传更新包,然后再手动chmod +x最后systemctl restart,循环往复
这实在是太麻烦了,而且部分情况下还很容易出错,为了避免前端手动ssh进入服务器覆盖更新或减少自己的工作量,于是在某位神秘大佬の启发下,终于弄出了一套全自动化的脚本以实现自动更新的需求
果然偷懒才是人类进步的阶梯啊,淦
说明 🔗
此方法可同样适用于测试和生产环境,由于太懒了所以只打算在生产环境中使用
现阶段在测试环境中采用的是webhook,感觉没有动的必要
在此之前,您首先需要阅读Github REST API文档,以了解github提供哪些功能
其次,您需要熟练了解并使用linux相关的命令(遇到问题只会问ai的还是洗洗睡吧)
实操 🔗
为了防止被白嫖,只做说明不附任何脚本和程序
首先按照之前的在 Github中的actions用法 这篇文章中,实现actions相关内容,并push tag实现自动化编译
然后按照Github REST API中的文档说明来实现自动获取仓库内的信息
请注意,私有化仓库的release并不能直接访问,需要使用其他的方法来实现
由于网上关于私有化仓库的donwload文档很少,这次附上一个我参考的文档How do I download binary files of a GitHub release?
如果仓库的权限为公开,那么获取 https://api.github.com/repos/$USERNAME/$REPO/releases/latest,然后直接下载即可
下载完成后可以按照自己的需要进行处理,例如
当完成如上配置后,可以算其为半自动化(还是需要人工执行一次脚本文件才可)
全自动化 🔗
在actions中增加一个job,当所有actions执行完毕后执行全自动化的流程
通过curl 您的服务器来实现类似于webhook相似的提醒机制,当服务器收到此提醒后自动触发流程即可完美实现全自动化的更新,彻底解放双手!
集群部署的思考 🔗
在很久很久以前,我非常好奇那些集群化的部署是怎么样实现的
经过这段时间的实操以及自我思考和大佬的启发,已经逐步构思出一套基于github的全自动化流程
当然,在目前的公司中用不到,但是工欲善其事,必先利其器。说不定以后转运维呢23333
使用限制 🔗
由于github actions有免费额度限制,不建议每次都编译全平台
相关内容请参考关于 GitHub Actions 的计费,最恶心的是mac平台居然是10x倍率真的是太恶心了,不过平心而论对于公司项目而言每个月2000min的使用已足以满足需求