当前位置 : 主页 > 编程语言 > 其它开发 >

利用腾讯云函数部署.Net 5米游社原神每日签到功能

来源:互联网 收集:自由互联 发布时间:2022-05-30
自从GitHub批量禁止滥用Action功能后,项目不得不考虑另外方案执行应用。其中腾讯云函数被大家作为不错的选择( 虽然马上也要收费了 )。 但对于.Net的部署目前资源很少,而且我也没
自从GitHub批量禁止滥用Action功能后,项目不得不考虑另外方案执行应用。其中腾讯云函数被大家作为不错的选择(虽然马上也要收费了)。

 但对于.Net的部署目前资源很少,而且我也没学过bash。在去年请教了大佬后,终于误打误撞的配置成功了。本篇博客只是记录过程,有什么遗漏还需要各位大佬指出。

脚本步骤

 首先在新建,选择 运行环境 Custom Runtime。

 boostrap配置

虽然在文档有给出包需要包含 boostrap,但我并不知道boostrap具体实现方式,以下是我从文档和大佬的指引下写的执行代码,下图是执行输出日志,说明下一步是调用index.sh。其他地方不变。

  • 函数引导加载 SCF 首先检索部署包中的可执行引导文件 boostrap,根据检索结果并进行如下操作: 检索到 bootstrap 文件且可执行,加载执行 boostrap 程序,进入函数初始化阶段。 未检索到 bootstrap 文件或文件不可执行,返回 bootstrap 文件不存在,启动失败。
#! /bin/bash
set -euo pipefail

FuncFile="$(echo $_HANDLER | cut -d. -f1).sh"
echo "[step 1]初始化,开始加载函数文件 $FuncFile"
source ./$FuncFile
echo "=>完成"

echo "[step 2]初始化完成,开始发送ready信号"
curl -d " " -X POST -s "http://$SCF_RUNTIME_API:$SCF_RUNTIME_API_PORT/runtime/init/ready"
echo "=>完成"

echo "[step 3]开始循环监听处理事件调用"
while true
do
 HEADERS="$(mktemp)"
 echo "=>长轮询获取事件"
 EVENT_DATA=$(curl -sS -LD "$HEADERS" -X GET -s "http://$SCF_RUNTIME_API:$SCF_RUNTIME_API_PORT/runtime/invocation/next")
 echo "=>监听到事件:$EVENT_DATA"
 echo "=>调用函数,开始处理事件"
 $(echo "$_HANDLER" | cut -d. -f2) "$EVENT_DATA"
 RESPONSE=$EVENT_DATA
 echo "=>返回 $RESPONSE"
 echo "=>推送函数处理结果"
 curl -X POST -s "http://$SCF_RUNTIME_API:$SCF_RUNTIME_API_PORT/runtime/invocation/response"  -d "$RESPONSE"
done


 

 

index.sh配置

参考 https://github.com/RayWangQvQ/BiliBiliToolPro/blob/main/tencentScf/index.sh

只需要在合适位置把执行程序放进去即可。因为我没有额外的参数配置,所以只需要执行 GenshinDailyHelper

echo "成功加载index.sh函数文件"

function main_handler () {
    echo "进入main_handler"
    EVENT_DATA=$1
    echo "$EVENT_DATA" 1>&2;
    echo "开始运行GenshinDailyHelper......"
    ./GenshinDailyHelper
    echo "函数结束"
}
 项目步骤

以上已经把云函数需要的两个文件配置好后,接下来该在项目配置怎么再外部获取参数了。

可以使用 Environment.GetEnvironmentVariables() 获取变量。这里就简单粗暴一点。

var environmentVariables = Environment.GetEnvironmentVariables();

if (environmentVariables.Contains("scf_cookie"))
{
    cookies = environmentVariables["scf_cookie"]?.ToString()?.Split("#");
}

 然后打开虚拟机,将项目编译好(dotnet-publish),打包成zip格式文件。

文件目录如下

├ bootstrap
└ index.sh
参考资料

https://github.com/RayWangQvQ/BiliBiliToolPro/tree/main/tencentScf

https://cloud.tencent.com/document/product/583/47610

https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-publish

项目链接

https://github.com/yinghualuowu/GenshinDailyTools
https://github.com/yinghualuowu/GenshinDailyHelper.Docs

【本文由:香港云服务器 http://www.558idc.com/ne.html网络转载请说明出处】
上一篇:转载:屎人-->诗人系列--码农之歌
下一篇:没有了
网友评论