【问题标题】:Run `source` from package.json to set Enviroment-Variables for an script-run从 package.json 运行 `source` 以设置脚本运行的环境变量
【发布时间】:2019-07-28 01:20:48
【问题描述】:

我的 package.json 中有一些 script-Entries。

为了通过 Fastlane 将应用部署到应用商店,我需要为 APPLE_ID 或 google-services 的 JSON-File 设置环境变量。

此设置是每个用户(也可能是每个项目)的个人设置。

我知道,如何通过 package.json 添加硬编码的 ENV 变量:

"ANDROID_closedBeta": "FASTLANE_JSON_KEY_FILE=`find $(pwd) -name release_manager.json` bundle exec fastlane android deploy_closedBeta",

但这并不能解决我的问题。我创建了一个文件:ios_envlinux_env,用于导出一些敏感凭据。

如果我运行 source linux_env,则变量已设置,我可以通过 CLI 命令运行 fastlane,而不会出现任何问题:fastlane android deploy_closedBeta

但是如果我尝试通过 yarn 或 npm 运行它,将找不到这个 ENV。 所以我尝试在 falstlane-command 前面运行 source ,但也没有用:

"ANDROID_closedBeta": "`source ./linux_env` FASTLANE_JSON_KEY_FILE=`find $(pwd) -name release_manager.json` bundle exec fastlane android deploy_closedBeta",

如何让 package.json-script 识别我的环境变量而不需要将其硬编码到 package.json 中?

【问题讨论】:

    标签: linux macos environment-variables package.json fastlane


    【解决方案1】:

    我找到了一个丑陋的解决方法......但如果有人能告诉我一个更好的方法来:

    在 package.json 我声明了两个设置。一个具有需要仍然接收到的 ENV 变量的主脚本,以及一个首先加载环境然后在该环境中运行主脚本任务的脚本条目。

    很难解释,很容易展示……看看这个:

    "scripts": {
    ...
       "IOS_internalTest": "source ./fastlane/ios_env && IOS_DEPLOY_TYPE=deploy_internalTest npm run IOS_runDeployment",
       "IOS_betaTest": "source ./fastlane/ios_env && IOS_DEPLOY_TYPE=deploy_betaTest npm run IOS_runDeployment",
       "IOS_runDeployment": "bundle exec fastlane ios $IOS_DEPLOY_TYPE",
    ...
    } 
    

    第一个条目source我的文件,我所有的ENV导出都在其中(如export BIMBOM=FooBar) 完成后执行npm run IOS_doInternalTest。因为它在相同的 shell 上下文中运行,所以我之前sourceed 的 ENV 变量仍然可用。

    向你致敬,如果你有一个单一的解决方案

    【讨论】:

      猜你喜欢
      • 2022-07-06
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      • 2013-08-08
      • 2016-03-29
      • 1970-01-01
      • 2020-04-06
      • 2018-07-11
      相关资源
      最近更新 更多