自从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

利用腾讯云函数部署.Net 5米游社原神每日签到功能的更多相关文章

  1. 利用Github Action和.Net 5 自动执行米游社原神每日签到福利

    GenshinDailyHelper 原神的签到福利是需要单独下载APP进行才可以领取,并且每天需要打卡,虽然奖励并不是很可观,但有一些摩拉,食材和可观的经验书累计起来还是挺有吸引力的.可能本身不怎么 ...

  2. 利用.NET 5和Github Action 自动执行米游社原神每日签到福利

    背景 众所周知,原神的签到福利是需要下载app才可以领取的.但像我这种一般不怎么刷论坛的人,每天点开app签到很麻烦. 很多大佬利用Github的Action自动执行的模式,实现了很多好东西.加上.n ...

  3. 腾讯云函数免费搭建onedrive网盘

    目录 腾讯云函数 介绍 真免费? 搭建教程 准备条件 创建云函数 创建触发器 配置SecretId和SecretKey 添加onedriver盘 自定义域名 访问路径处理 总结 搭建期间遇到的问题 想 ...

  4. 如何利用腾讯云COS为静态博客添加动态相册

    前言 本文首发于个人网站Jianger's Blog,欢迎访问订阅.个人博客小站刚建站不久,想着除了主题里的功能外再添加上相册模块,于是半搜索半摸索把相册模块搞出来了,最后采用了利用腾讯云对象存储作图 ...

  5. 基于【腾讯云函数】/【GitHub Actions】/【Docker】的每日签到脚本(支持多账号使用)

    每日签到集合 基于[腾讯云函数]/[GitHub Actions]/[Docker]的每日签到脚本 支持多账号使用 特别声明: 本仓库发布的脚本及其中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究 ...

  6. 在腾讯云上部署Hexo博客

    推荐理由 ----搭建个人的空间博客目前深受个人开发者的追捧,然而博客的种类和平台有很多,Hexo是一个开源的静态博客生成器.相比于其他博客而言它只要是web容器就能用.除了闷头专研技术之外,程序员还 ...

  7. 从QQ音乐开发,探讨如何利用腾讯云SDK在直播中加入视频动画

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云发表于云+社区专栏 看着精彩的德甲赛事,突然裁判一声口哨,球赛断掉了,屏幕开始自动播放"吃麦趣鸡盒,看德甲比赛&q ...

  8. Tencent Cloud 腾讯云上部署 EMR Cluster + Kafka + Confluent (Schema-Registry)

    腾讯云上有些操作比起 Amazon AWS 还是很方便的, 尤其部署EMR Cluster,下面详细介绍步骤:

  9. 利用腾讯云COS云对象存储定时远程备份网站

    版权声明:本文由张戈 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/942851001487125915 来源:腾云阁 h ...

随机推荐

  1. Python包装器

    def func(): print("func body") def f1(arg): print("f1:",arg) def wrapper(b): pri ...

  2. innodb和myisam

    在Mysql数据库中,常用的引擎主要就是2个:Innodb和MyIASM.这篇文章将主要介绍这两个引擎,以及该如何去选择引擎,最后在提一下这2种引擎所使用的数据结构是什么. 首先介绍一下Innodb引 ...

  3. elasticsearch 的倒排索引是什么 ?

    面试官:想了解你对基础概念的认知. 解答:通俗解释一下就可以. 传统的我们的检索是通过文章,逐个遍历找到对应关键词的位置. 而倒排索引,是通过分词策略,形成了词和文章的映射关系表,这种词典+映射表 即 ...

  4. SpringCloud个人笔记-02-Feign初体验

    项目结构 sb_cloud_product <?xml version="1.0" encoding="UTF-8"?> <project x ...

  5. 经历了源码的痛苦,掌握DRF的核心序列化器

    目录 DRF的核心--序列化器 序列化器 什么是序列化和反序列化? 序列化 序列化demo 字段类型 字段参数 序列化自定制返回字段 方法一:在序列化类(serializers.py)中写 方法二:在 ...

  6. linux环境下搭建solr服务器--单机版

    前提需要在安装好jdk和tomcat,本人用的是jdk1.8+tomcat8.5+solr4.10. 第一步:安装linux.jdk.tomcat.(这步都是比较简单的,就不多说了) 第二步:把sol ...

  7. 攻防世界 web_php_include

    Web_php_include 进入题目源码直接出来了 <?php show_source(__FILE__); echo $_GET['hello']; $page=$_GET['page'] ...

  8. xacro 语法总结

    xacro是为了解决在编写urdf文件过程中,出现的标签内容重复,但又不得不去写.一些值的计算有依赖的问题.为了和urdf文件区分,我们定义的模型文件名后缀为.xacro. 从功能的角度来说,xacr ...

  9. (stm32f103学习总结)—DS18B20

    一. DS18B20简介 DS18B20数字温度传感器接线方便,封装后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式.主要根据应用场合的不同而改变其外观.封装后的DS18B20可用于电缆 ...

  10. 顺利通过EMC实验(19)