其他分享
首页 > 其他分享> > 利用腾讯云函数部署.Net 5米游社原神每日签到功能

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

作者:互联网

自从GitHub批量禁止滥用Action功能后,项目不得不考虑另外方案执行应用。其中腾讯云函数被大家作为不错的选择(虽然马上也要收费了)。

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

脚本步骤

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

 boostrap配置

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

#! /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

标签:原神,SCF,echo,API,游社,Net,RUNTIME,DATA,EVENT
来源: https://www.cnblogs.com/yinghualuowu/p/15783719.html