Closed DoveBoy closed 2 years ago
你的第一种配置是对的(方式是对的,但是配置的 key 并不是环境变量的),第二种不对(详见:https://github.com/RayWangQvQ/BiliBiliToolPro/issues/45#issuecomment-1079883745)
要使用 TG 推送,你的 SCF 环境是国外吗,如果不是那原因很清楚。 #65 有同样的需求
@catlair 实际测试发现,说明文档可能有误,GitHub Secret中配置PUSHTGTOKEN
和PUSHTGCHATID
,通过GA自动部署到SCF并不会生效,需要将环境变量Ray__Serilog__WriteTo__3__Args__botToken
和Ray_Serilog__WriteTo__3__Args__chatId
填入到serverless.yml,通过GA部署到SCF就正常了。
@catlair 实际测试发现,说明文档可能有误,GitHub Secret中配置
PUSHTGTOKEN
和PUSHTGCHATID
,通过GA自动部署到SCF并不会生效,需要将环境变量Ray__Serilog__WriteTo__3__Args__botToken
和Ray_Serilog__WriteTo__3__Args__chatId
填入到serverless.yml,通过GA部署到SCF就正常了。
文档没有提,而不是有误,这个属于是对 环境变量
的误解。填到 GitHub Secret
的并不是环境变量。
对文档做以下修改,下面内容中哪里不明白
Ⅰ.拷贝或下载 serverless.yml 文件内容到本地文件中,开始编辑内容
其中主要需要改的是最下方的环境变量,这些环境变量在部署后会添加到云函数中(即云函数控制台看到的环境变量集合),它们将作为应用配置传入 bilibili_tool
例如,你需要增加一个环境变量,在最下方添加内容应该是(注意缩进问题):
environment:
variables: # 根据自己的需要修改
Ray_BiliBiliCookies__1: 123 # cookie,必填
Ray_Security__RandomSleepMaxMin: 20
Ray_Security__IntervalSecondsBetweenRequestApi: 20
注意:其中 cookie 是必填项,其他应用配置的也可以通过添加相应的环境变量实现,建议自己添加UA、推送等配置。(更多配置项请参考配置说明文档,仅用于参考环境变量,请只关注表格中的环境变量
一项,并参照上面的方式添加)
如果你不熟悉 yml 或者部署时遇到格式问题,建议花几分钟阅读 YAML 入门教程
常犯错误:
Q:我在 Github Secrets 中添加了NUMBEROFCOINS
,值为 2,为啥投币数量还是 5。
A:环境变量 不能通过 Github Secrets 添加,是因为环境变量作用于 SCF 而不是 Github。你应该通过上面的serverless.yml
添加环境变量Ray_DailyTaskConfig__NumberOfCoins
。
其他 serverless.yml
可选配置内容请参考官方说明
文档没有提,而不是有误,这个属于是对
环境变量
的误解。填到GitHub Secret
的并不是环境变量。
@catlair 没有提也说明了文档确实解释的不清楚,容易造成无解,既然GitHub Secret
中设置的环境变量无法通过GA自动部署到SCF上面的环境变量中,就应该说明清楚,实际是必须在serverless中自定义环境变量才会在SCF中体现出来,另外在个性化自定义配置说明文档中,很多环境变量名缺少前缀Ray_
或者直接就没有,对比其他环境变量名才发现大致的书写规则。
@DoveBoy
可以看看我上面修改后的文档,有什么补充的。
实际上 SCF 的文档我给了样例的,不过似乎好多人因为那个参考文档而忽略了这一点,参考文档其实只有环境变量那一项是有用的。
至于环境变量名缺少前缀Ray_或者直接就没有,我不清楚。可能是作者写错了,写文档有时比写代码还难。
可以看看我上面修改后的文档,有什么补充的。
@catlair 个人建议删除GitHub Secret
一栏,本身无法通过设置GitHub Secret
来达到传递环境变量参数到SCF中,且实际设置GitHub Secret
后也无任何作用。既然会造成很大的误解,不如删除。同时可以添加一句说明,所有自定义配置的环境变量必须写入serverless.yml
中传递才有效
可以看看我上面修改后的文档,有什么补充的。
@catlair 个人建议删除
GitHub Secret
一栏,本身无法通过设置GitHub Secret
来达到传递环境变量参数到SCF中,且实际设置GitHub Secret
后也无任何作用。既然会造成很大的误解,不如删除。同时可以添加一句说明,所有自定义配置的环境变量必须写入serverless.yml
中传递才有效
这个是所有配置共用的文档,并不能直接删除。
以前有个火热的jd_scripts项目,也是通过GA自动部署到SCF中,建议可以把环境变量设置到GitHub Secret
中,通过GA自动部署传递到SCF中,避免因为修改其中一个变量而修改整个serverless.yml
文件的麻烦。
name: 部署到腾讯云函数
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
if: github.event.repository.owner.id == github.event.sender.id
env:
Ray_BiliBiliCookies__1: ${{ secrets.Ray_BiliBiliCookies__1}}
steps:
- name: Checkout
uses: actions/checkout@v2
with:
repository: ${{ github.repository }}
- name: "将Secrets里面配置的变量添加到severless.yml里面作为环境变量"
run: |
if [ $Ray_BiliBiliCookies__1 ]; then sed -i "/variables/a\ Ray_BiliBiliCookies__1: $Ray_BiliBiliCookies__1" serverless.yml; fi;
这个是所有配置共用的文档,并不能直接删除。
@catlair 如果这样的话,建议添加根据不同运行环境选择何种环境变量书写方式的说明,以便于区分,减少误解。
@DoveBoy
GitHub Secret 配置是为 Action 运行准备的似乎可以直接删除。
把环境变量设置到GitHub Secret中,通过GA自动部署传递到SCF中
这个挺麻烦的,就看是否有人愿意做了(看作者愿不愿意做)。如果只是想改一个变量,这个可以去腾讯云函数控制台修改。
不过还是感谢你的建议。 👍
PR已合并入v0.1.1
版本,另外已删除配置文档中的GitHub Actions章节,避免歧义
@RayWangQvQ 说明文档中看到可以添加TG推送,尝试设置环境变量名
PUSHTGTOKEN
和PUSHTGCHATID
到SCF的环境变量中,运行后TG收不到推送消息;尝试设置环境变量名PUSHTGTOKEN
和PUSHTGCHATID
到GitHub Action的Secret中,通过GA自动部署到SCF也是同样的问题,SCF的环境变量中并没有显示出PUSHTGTOKEN
和PUSHTGCHATID
。已知PUSHTGTOKEN
和PUSHTGCHATID
两个变量的值肯定没有问题,放在其他项目中正常。请问PUSHTGTOKEN
和PUSHTGCHATID
该如何设置,具体填在哪里?