云函数
前期准备
- 注册腾讯云函数
- 注册github(访问问题会自己解决)
- 耐心和对新知识探索的热情
腾讯云函数是什么
腾讯云云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助用户在无需购买和管理服务器的情况下运行代码, 是实时文件处理和数据处理等场景下理想的计算平台。 只需使用 SCF 平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。^[1]^简而言之,就是提供了一个部署好环境的可以进行脚本数据开发的平台。

优点
- 费用低
- 方便
- 快捷
对于个人开发者而言,腾讯云函数的优点在于:方便、快捷、费用低。腾讯云服务赠送的个人调用次数完全够用,节省了开发者大部分环境适配的时间。根据我使用了大概一年多时间的体验来看,云函数的功能基本能够满足日常需要,不过需要掌握一定的代码编辑知识才能比较好地运用云函数。

缺点
- 移动端和平板端适配不佳
- 环境选择后的代码编写入门难度大(适合有编程知识的开发者)
移动端和平板端适配不好,体验感差,在用平板进行数据编辑时,页面离开到另个网页再重新回到,网页会异常缩放。在平板编辑的时候新版编辑器无法全选代码复制,修改代码难度大。
而移动端更是难以使用,受限于移动端屏幕大小限制,云函数没有设配移动端比例,修改代码基本难以实现,对于我这种有灵活运用场景需要的人而言,明显是不够的, 因而也逐步转向了搭建一个docker进行代码的修改与维护。
两种部署方式教程
介绍完云函数的基本知识,部署教程正式开始:
传统云函数部署教程
该方式主要通过下载库中的代码包然后上传到云函数平台完成部署工作,优点在于操作方便,缺点在于后续代码包更新维护不方便,基本要手动补充新代码或者删除重新建立。已经有群友++忧郁的未来++写了一个比较全的教程,可以参考:
零基础腾讯云函数部署-忧郁的未来
Github Action联动云函数部署教程
开通相关服务
依次登录 SCF 云函数控制台 和 SLS 控制台 开通相关服务,确保账户下已开通服务并创建相应服务角色
建立SCF_QcsRole和SLS_QcsRole角色,如图所示:

为了确保权限足够,获取这两个参数时请使用主账号,同时腾讯云账户需要进行实名认证,并在这里新建访问密钥。
保存SecretId和SecretKey,
TENCENT_SECRET_ID对应库中的SecretId的值,TENCENT_SECRET_KEY对应库中的SecretKey的值。
fork仓库项目
打开 scf-checkbox,fork我的仓库(目前同步项目还是以我的仓库为中转,即暂时由我对源作者库进行更新,后续如果源库同意我request请求后就可以直接fork他仓库在里面直接action)。

申请一个PAT
GitHub 用户设置页面点击最下方的 Developer setting点击。^[2]^

然后选择 Personal access tokens 来生成一个token,把 repo和workflows部分打勾,会生产一个PAT密码,保存!保存!保存!这个密码只会出现一次,忘记了只能重新生成一个新的PAT。

填写参数到secret
依次点击setting-secret-action-new repository secret
setting

secret-aciton

new repository secret
按照图片所示填写,将上面步骤获取的参数填入name和value,name填名字,value填值。


点击action运行workflow
初次fork完后点击action后出现一个“I understand….”绿色的同意确定,点击确定,出现下图,再点 enable workflow。

名字为”部署到腾讯云函数”一样点击然后点enable workflow

接着点右边的run workflow,点击绿色的run workflow,这一个操作会在运行”同步大佬代码…”后自动运行第二步的”部署到腾讯云函数”

运行正常后就会是绿色,红色是异常。可以点开查看具体情况。

回到云函数填写config.yml
正常运行后在腾讯云函数出现一个scf-checkbox,然后点开函数代码复制其中的config.yml.sample的内容,新建一个config.yml将复制的参数填入,并且按照规范填写对应值即可(详细填写请参照传统教程中的文档)

最后关闭workflow的同步(重要)
原因在于暂时无法解决config.yml在下次同步时被覆盖掉的问题
如果想要同步请记得先去云函数备份config.yml!请记得先去云函数备份config.yml!!请记得先去云函数备份config.yml!!!(重要事情说三遍~)
按照图片所示点击右边的三个点的disable workflow关闭同步功能,把两个work flows都关了。

