BiliBiliToolPro 腾讯云云函数(SCF)部署完整指南:Actions 自动部署与 ZIP 手动部署
BiliBiliToolPro 腾讯云云函数SCF部署完整指南Actions 自动部署与 ZIP 手动部署【免费下载链接】BiliBiliToolProB 站bilibili自动任务工具支持docker、青龙、k8s等多种部署方式。全面拥抱AI。敏感肌也能用。项目地址: https://gitcode.com/GitHub_Trending/bi/BiliBiliToolPro本指南以 tencentScf/README.md 为主体系统讲解 BiliBiliToolPro 部署到腾讯云云函数Serverless Cloud FunctionSCF的两种完整方案GitHub Actions 自动部署推荐可自动定期更新代码与上传 ZIP 包手动部署直观但版本固定。读者按本文操作后可独立完成云函数创建、环境变量与触发器配置、函数测试并掌握通过附加消息传递任务编码如Daily、LiveLottery实现定时自动化运行的完整能力。1. 部署前的准备注册账号与免费额度腾讯云云函数SCF是腾讯云提供的 Serverless 计算服务使用前需先注册腾讯云账号。注册成功后需要激活云函数 SCF 功能。由于腾讯云会赠送免费额度正常使用是免费的SCF 官方文档对产品本身的介绍可参考腾讯云官网的产品文档本仓库只关注其在 BiliBiliToolPro 上的实际落地。2. 两种部署方式总览方式适用场景代码更新方式复杂度方式一Actions 自动部署推荐希望代码始终跟随仓库最新版本定时自动部署配合仓库自动同步配置一次 Secrets后续基本免维护方式二上传 ZIP 包部署追求简单直观、上手快手动上传固定版本更新需重新上传全程控制台点击操作以下两种方式任选一个适合自己需求的即可。3. 方式一Actions 自动部署推荐该方式通过 GitHub Actions 工作流调用腾讯云 Serverless Frameworkscf组件完成部署可以实现自动定期部署保证云函数中的代码始终是最新版本。仓库中已内置完整的工作流文件 .github/workflows/auto-deploy-tencent-scf.yml 与发布脚本 tencentScf/publish.sh。3.1 Fork 仓库到自己的 GitHub点击本仓库右上角的Fork按钮复刻本项目到自己的 GitHub 仓库。后续所有 Actions、Secrets 配置都在你自己的 fork 仓库中进行。3.2 到腾讯云获取密钥手动部署时可以通过扫描二维码来进行授权但为了避免人工重复授权这里采用密钥授权的方式步骤如下登录腾讯云后进入腾讯云密钥管理页面云 API 密钥管理cam/capi。如果提示创建子账号可以先拒绝简单起见直接使用主账号创建即可。点击新建密钥按钮创建一个密钥复制并保存SecretId和SecretKey两项内容后续配置 Secrets 时会用到。在 Actions 工作流中这两个密钥通过环境变量TENCENT_SECRET_ID、TENCENT_SECRET_KEY注入到 Serverless Framework从而决定部署到哪个腾讯云账户的 SCF 下见 .github/workflows/auto-deploy-tencent-scf.yml。3.3 通过 Secrets 添加配置进入自己 fork 的仓库点击Settings → Secrets → New repository secret依次添加以下 Secrets 作为配置。3.3.1 密钥相关配置这两个配置决定了会部署到哪个腾讯云账户的 SCF 下面配置名称NameValueIdTENCENT_SECRET_ID刚才在官网获取到的 SecretIdKeyTENCENT_SECRET_KEY刚才在官网获取到的 SecretKey3.3.2 云函数配置serverless.ymlActions 使用Serverless Framework来部署通过serverless.yml来配置函数信息如函数应用名称、区域、环境变量和触发器等仓库中提供了完整的默认配置示例 tencentScf/serverless.yml。配置步骤如下拷贝或下载 tencentScf/serverless.yml 文件内容到本地文件开始编辑内容。其中主要需要改的是最下方的环境变量——这些环境变量在部署后会添加到云函数中即云函数控制台看到的环境变量集合它们将作为应用配置传入 bilibili_tool 程序。例如需要增加一个环境变量时在最下方添加内容应该是注意缩进问题environment: variables: # 根据自己的需要修改 Ray_BiliBiliCookies__1: 123 # cookie必填 Ray_Security__RandomSleepMaxMin: 20 Ray_Security__IntervalSecondsBetweenRequestApi: 20cookie 是必填项。其他应用配置也可以通过添加相应的环境变量实现建议自己添加 UA、推送等配置。更多配置项请参考 docs/configuration.md仅用于参考环境变量请只关注表格中的环境变量一项并参照上面的方式添加。关于环境变量命名docs/configuration.md 中有明确说明Console 项目青龙的环境变量需要添加Ray_前缀比如原始配置 Key 为BiliBiliCookies__1在 Console 中则为Ray_BiliBiliCookies__1配置项之间用双下划线__分隔层级数字编号表示数组下标从而支持Ray_BiliBiliCookies__1、Ray_BiliBiliCookies__2多账号配置。配置文件、环境变量、命令行三种配置源的优先级由低到高依次是json 文件 环境变量 命令行。如果你不熟悉 yml 或者部署时遇到格式问题建议花几分钟阅读 YAML 入门教程。常犯错误 Q我在 Github Secrets 中添加了NUMBEROFCOINS值为 2为啥投币数量还是 5 A所有自定义配置项环境变量不能通过 Github Secrets 添加只能写在serverless.yml中。你应该参考上面的例子添加环境变量Ray_DailyTaskConfig__NumberOfCoins。拷贝修改后的内容将其整个添加到 Secrets 中配置名称NameValueserverless.yml内容TENCENT_SERVERLESS_YML刚才拷贝的整个文件内容工作流在部署时会读取该 Secret如果未配置TENCENT_SERVERLESS_YML则使用仓库内默认的 serverless.yml配置了则用 Secret 中的内容覆盖见 .github/workflows/auto-deploy-tencent-scf.yml。仓库默认的 tencentScf/serverless.yml 是一个可直接参考的完整示例它声明了如下关键信息函数基础信息函数名${name}_scf即bilibili_tool_scf、运行环境CustomRuntime、执行方法index.main_handler、默认区域广州region: ap-guangzhou、内存 128MB超时与执行initTimeout: 30初始化超时 30 秒、timeout: 86400执行超时 86400 秒、asyncRunEnable: true异步执行、traceEnable: true状态追踪触发器events段默认内置了 4 个定时触发器分别是每日任务DailyTask每天 12:30、天选抽奖LiveLotteryTask每 4 小时、自动取关UnfollowBatchedTask每周一零点、大会员积分VipBigPointTask每天 01:07环境变量environment.variables段Ray_BiliBiliCookies__1: 123即 cookie 占位配置需要替换成你自己的值。注意仓库默认 serverless.yml 中的 Cron 表达式是七段式秒 分 时 日 月 星期 年如0 30 12 * * * *而在云函数控制台手动创建触发器时常见写法是五段式分 时 日 月 星期如10 15 * * *表示每天 15 点 10 分运行。两种写法分别对应文件内配置与控制台配置不要混淆。3.3.3 自动定时更新部署配置添加如下配置即可开启自动定时部署配置名称NameValue定时自动部署IS_AUTO_DEPLOY_TENCENT_SCFtrue工作流默认按cron: 0 2 * * 1,3,5每周一、三、五定时触发并通过pre-check任务判断开关状态只有开启时才真正执行部署见 .github/workflows/auto-deploy-tencent-scf.yml。注意自动部署只是定时将你自己仓库的代码部署到云函数想要自动更新到上游作者的最新代码还需要开启仓库的自动同步——详见常见问题文档中《我 Fork 之后如何同步原作者的更新内容》章节见 docs/questions.md。3.4 手动执行 Actions在自己仓库页面依次点击Actions → auto-deploy-tencent-scf → Run workflow即可手动触发部署工作流。3.5 测试云函数如果部署成功登录自己的腾讯云函数控制台就可以看到对应的函数应用了。请参考下文《测试》章节进行手动测试函数运行。4. 方式二上传 ZIP 包部署该方式比较简单直观但代码上传的是固定版本想更新的话需要再次手动上传。4.1 下载压缩包到本地从项目 Release 页面选择最新版本的tencent-scf.zip下载到本地。仓库中的 tencentScf/publish.sh 展示了该压缩包的生产方式dotnet publish --configuration Release --runtime linux-x64 --self-contained true -p:PublishTrimmedtrue -o ../../tencentScf/bin/publish cp -r ./bootstrap ./index.sh ./bin/publish/ chmod 755 index.sh bootstrap zip -r -q ../tencent-scf.zip ./*即先以linux-x64自包含模式发布 .NET 程序启用裁剪PublishTrimmed再把云函数运行所需的bootstrap启动脚本与index.sh函数入口一并打包进 zip。Windows 用户可参考同目录下的 tencentScf/publish.bat。4.2 云函数控制台新增函数服务进入腾讯云云函数控制台单击左侧导航栏【函数服务】进入函数服务页面。顶部地域选择一个靠近自己位置的区域点击新建按钮。填写基本信息创建方式选择自定义创建函数名称bilibili_tool地域刚才已经选过了运行环境CustomRuntime函数代码提交方式本地上传zip包执行方法index.main_handler函数代码点击后选择之前本地下载好的 zip 包点击展开高级配置添加配置初始化超时时间30执行超时时间86400会警告超范围先不用管下面开启异步之后就好了环境变量这里先加 2 个配置就行了后续可以再添加其他的cookie 配置key 为Ray_BiliBiliCookies__1value 为之前浏览器抓取到的 cookie 字符串随机睡眠配置key 为Ray_Security__RandomSleepMaxMinvalue 为0为了方便测试先关掉后面测好之后再删掉该配置或者自己改一个 value 值指定任务key 为Ray_RunTasksvalue 为Test供首次部署时测试使用后续将通过触发器传递功能任务继续下滚找到执行配置模块异步执行勾选启用状态追踪勾选启用点击完成按钮创建函数。触发器配置先不用管可以等测试完成后再添加。4.3 手动运行测试参考下文《测试》章节进行手动测试。4.4 配置触发器设定运行时间和频率点击左侧【触发管理】导航点击创建触发器按钮。填写触发器信息触发方式定时触发定时任务名称DailyTask触发周期自定义触发周期Cron 表达式自己根据需求指定10 15 * * *表示每天 15 点 10 分运行五段式分 时 日 月 星期附加信息是信息内容Daily立即启用勾选启用填完后点击提交按钮提交即可完成。这里的附加信息将作为 runTasks欲运行的任务编码配置通过命令行传入程序。想多个任务共用一个触发器的话可以使用号拼接任务编码填入附加信息如DailyLiveLottery。等到触发器设定的时间对应的触发器就会去运行应用自动完成任务。4.5 触发消息是如何传给程序的index.sh 原理从源码结构看ZIP 包中携带的 tencentScf/index.sh 是函数真正的入口其核心逻辑为EVENT_DATA$1 runTasks if [[ $EVENT_DATA *Message* ]] then eventMsg$(echo $EVENT_DATA | grep -Po Message[ :]\K[^]) echo 触发事件中的附加消息任务编码为$eventMsg runTasks--runTasks$eventMsg fi ./Ray.BiliBiliTool.Console $runTasks也就是说触发器传递的附加信息如Daily、LiveLottery会出现在触发事件的Message字段中index.sh将其解析后拼装为--runTasksxxx命令行参数传给 Ray.BiliBiliTool.Console 运行如果触发事件中没有附加消息则不带参数运行此时会执行默认任务集。而 tencentScf/bootstrap 则是 CustomRuntime 环境要求的启动引导脚本它根据_HANDLER环境变量加载对应的函数文件index.sh完成初始化就绪信号上报后进入长轮询循环持续监听并处理事件调用。5. 测试云函数成功部署好函数后会看到函数管理页面点击顶部函数代码Tab 页准备测试。下拉找到测试按钮点击运行测试页面下方会同步显示日志。如果运行正常则表示部署已成功。返回函数配置页面将之前配置的环境变量Ray_RunTasks删除后续函数将自动执行触发器中配置的功能任务。注意ZIP 部署方式在控制台手动添加的环境变量如Ray_RunTasks: Test只用于首次部署验证正式使用后应删除该变量改用触发器附加信息来指定任务二者都是通过--runTasks参数生效的前者是环境变量注入后者由index.sh从触发事件解析。6. 关于腾讯云日志与费用腾讯云云函数默认将运行日志写入 CLS 日志服务需要关注其计费情况腾讯云关于 CLS 日志的免费额度说明如下官方文档截图每月提供一定免费额度。实测每日运行函数日志的花费大约如下图所示量级极小通常在免费额度覆盖范围内。如果需要完全白嫖即不需要任何费用可以切至腾讯云日志服务页。点击侧边栏的日志主题并找到云函数所在地域。点击删除删除该日志主题后云函数因为无法定位到日志集就不会产生额外费用。7. 小结两种部署方式的决策建议追求一次配置、长期免维护、代码跟随上游更新首选方式一 Actions 自动部署只需 Fork 仓库、配置 4 个 SecretsTENCENT_SECRET_ID、TENCENT_SECRET_KEY、TENCENT_SERVERLESS_YML、IS_AUTO_DEPLOY_TENCENT_SCF工作流会自动完成发布与scf deploy见 .github/workflows/auto-deploy-tencent-scf.yml追求上手快、逻辑直观选择方式二 ZIP 包部署从 Release 下载tencent-scf.zip按控制台向导逐步创建函数并配置触发器即可缺点是需要手动更新版本。无论哪种方式部署完成后BiliBiliToolPro 都会按触发器设定的时间自动运行通过index.sh解析附加消息中的任务编码完成每日任务、天选抽奖、自动取关、大会员积分等自动化操作。【免费下载链接】BiliBiliToolProB 站bilibili自动任务工具支持docker、青龙、k8s等多种部署方式。全面拥抱AI。敏感肌也能用。项目地址: https://gitcode.com/GitHub_Trending/bi/BiliBiliToolPro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考