RayWangQvQ / BiliBiliToolPro

B 站(bilibili)自动任务工具,支持docker、青龙、k8s等多种部署方式。敏感肌也能用。
MIT License
6.22k stars 1.76k forks source link

【其他】关于推送的环境变量设置问题 #78

Closed DoveBoy closed 2 years ago

DoveBoy commented 2 years ago

@RayWangQvQ 说明文档中看到可以添加TG推送,尝试设置环境变量名PUSHTGTOKENPUSHTGCHATID到SCF的环境变量中,运行后TG收不到推送消息;尝试设置环境变量名PUSHTGTOKENPUSHTGCHATID到GitHub Action的Secret中,通过GA自动部署到SCF也是同样的问题,SCF的环境变量中并没有显示出PUSHTGTOKENPUSHTGCHATID。已知PUSHTGTOKENPUSHTGCHATID两个变量的值肯定没有问题,放在其他项目中正常。请问PUSHTGTOKENPUSHTGCHATID该如何设置,具体填在哪里?

image image

catlair commented 2 years ago

你的第一种配置是对的(方式是对的,但是配置的 key 并不是环境变量的),第二种不对(详见:https://github.com/RayWangQvQ/BiliBiliToolPro/issues/45#issuecomment-1079883745

要使用 TG 推送,你的 SCF 环境是国外吗,如果不是那原因很清楚。 #65 有同样的需求

DoveBoy commented 2 years ago

@catlair 实际测试发现,说明文档可能有误,GitHub Secret中配置PUSHTGTOKENPUSHTGCHATID,通过GA自动部署到SCF并不会生效,需要将环境变量Ray__Serilog__WriteTo__3__Args__botTokenRay_Serilog__WriteTo__3__Args__chatId填入到serverless.yml,通过GA部署到SCF就正常了。

catlair commented 2 years ago

@catlair 实际测试发现,说明文档可能有误,GitHub Secret中配置PUSHTGTOKENPUSHTGCHATID,通过GA自动部署到SCF并不会生效,需要将环境变量Ray__Serilog__WriteTo__3__Args__botTokenRay_Serilog__WriteTo__3__Args__chatId填入到serverless.yml,通过GA部署到SCF就正常了。

文档没有提,而不是有误,这个属于是对 环境变量 的误解。填到 GitHub Secret 的并不是环境变量。

catlair commented 2 years ago

对文档做以下修改,下面内容中哪里不明白

Ⅰ.拷贝或下载 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 可选配置内容请参考官方说明

DoveBoy commented 2 years ago

文档没有提,而不是有误,这个属于是对 环境变量 的误解。填到 GitHub Secret 的并不是环境变量。

@catlair 没有提也说明了文档确实解释的不清楚,容易造成无解,既然GitHub Secret中设置的环境变量无法通过GA自动部署到SCF上面的环境变量中,就应该说明清楚,实际是必须在serverless中自定义环境变量才会在SCF中体现出来,另外在个性化自定义配置说明文档中,很多环境变量名缺少前缀Ray_或者直接就没有,对比其他环境变量名才发现大致的书写规则。

catlair commented 2 years ago

@DoveBoy

可以看看我上面修改后的文档,有什么补充的。

实际上 SCF 的文档我给了样例的,不过似乎好多人因为那个参考文档而忽略了这一点,参考文档其实只有环境变量那一项是有用的。

image

至于环境变量名缺少前缀Ray_或者直接就没有,我不清楚。可能是作者写错了,写文档有时比写代码还难。

DoveBoy commented 2 years ago

可以看看我上面修改后的文档,有什么补充的。

@catlair 个人建议删除GitHub Secret一栏,本身无法通过设置GitHub Secret来达到传递环境变量参数到SCF中,且实际设置GitHub Secret后也无任何作用。既然会造成很大的误解,不如删除。同时可以添加一句说明,所有自定义配置的环境变量必须写入serverless.yml中传递才有效

catlair commented 2 years ago

可以看看我上面修改后的文档,有什么补充的。

@catlair 个人建议删除GitHub Secret一栏,本身无法通过设置GitHub Secret来达到传递环境变量参数到SCF中,且实际设置GitHub Secret后也无任何作用。既然会造成很大的误解,不如删除。同时可以添加一句说明,所有自定义配置的环境变量必须写入serverless.yml中传递才有效

这个是所有配置共用的文档,并不能直接删除。

DoveBoy commented 2 years ago

以前有个火热的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;
DoveBoy commented 2 years ago

这个是所有配置共用的文档,并不能直接删除。

@catlair 如果这样的话,建议添加根据不同运行环境选择何种环境变量书写方式的说明,以便于区分,减少误解。

KudouRan commented 2 years ago

@DoveBoy

GitHub Secret 配置是为 Action 运行准备的似乎可以直接删除。

把环境变量设置到GitHub Secret中,通过GA自动部署传递到SCF中

这个挺麻烦的,就看是否有人愿意做了(看作者愿不愿意做)。如果只是想改一个变量,这个可以去腾讯云函数控制台修改。

不过还是感谢你的建议。 👍

RayWangQvQ commented 2 years ago

PR已合并入v0.1.1版本,另外已删除配置文档中的GitHub Actions章节,避免歧义