Запустите `source` из package.json, чтобы установить переменные Enviroment для запуска скрипта - PullRequest
0 голосов
/ 06 марта 2019

У меня есть несколько script -Entries в моем package.json.

Для развертывания приложения через Fastlane в магазине приложений мне нужно установить enviroment-Variables для APPLE_ID или для JSON-файла Google-services.

Эти настройки индивидуальны для каждого пользователя (и, возможно, для проекта).

Я знаю, как добавить жестко закодированную переменную ENV через package.json:

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

Но это не решает мою проблему.Я создал файл: ios_env и linux_env , который экспортирует некоторые конфиденциальные учетные данные.

Если я запускаю source linux_env, переменные установлены, и я могу запустить fastlane безлюбая проблема через CLI-Command: fastlane android deploy_closedBeta

Но если я попытаюсь запустить его через пряжу или npm, этот ENV не будет найден.Поэтому я попытался запустить источник перед командой falstlane, но также не сработало:

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

Как мне заставить скрипт package.json распознавать мои переменные окружения безнужно жестко закодировать его в package.json?

1 Ответ

0 голосов
/ 06 марта 2019

Я нашел уродливый обходной путь ... но был бы рад, если бы кто-нибудь мог показать мне лучший способ:

В 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. Поскольку он запускается в том же контексте оболочки, переменные ENV, которые я source редактировал ранее, по-прежнему доступны.

Слава вам, если вы получили решение в одну строку

...