梦想博客

Github实现集群批量更新

calendar 2024/05/13
refresh-cw 2024/05/15
1084字,3分钟
分类: github
tag github; ci/cd;

前言 🔗

作为一个.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,然后直接下载即可

下载完成后可以按照自己的需要进行处理,例如

1# 解压压缩包
2unzip $DOWNLOAD_FILE_NAME -o
3
4# 删除压缩包
5rm $DOWNLOAD_FILE_NAME

当完成如上配置后,可以算其为半自动化(还是需要人工执行一次脚本文件才可)

全自动化 🔗

在actions中增加一个job,当所有actions执行完毕后执行全自动化的流程

通过curl 您的服务器来实现类似于webhook相似的提醒机制,当服务器收到此提醒后自动触发流程即可完美实现全自动化的更新,彻底解放双手!

集群部署的思考 🔗

在很久很久以前,我非常好奇那些集群化的部署是怎么样实现的

经过这段时间的实操以及自我思考和大佬的启发,已经逐步构思出一套基于github的全自动化流程

当然,在目前的公司中用不到,但是工欲善其事,必先利其器。说不定以后转运维呢23333

使用限制 🔗

由于github actions有免费额度限制,不建议每次都编译全平台

相关内容请参考关于 GitHub Actions 的计费,最恶心的是mac平台居然是10x倍率真的是太恶心了,不过平心而论对于公司项目而言每个月2000min的使用已足以满足需求

分类