gpt4 book ai didi

reactjs - 如何在 bitbucket 管道上运行环境变量?

转载 作者:行者123 更新时间:2023-12-04 11:45:39 24 4
gpt4 key购买 nike

我已经了解了使用 bitbucket 的管道,我想制作一个新的管道来上传我的 React 应用程序(使用 create-react-app 引导)并上传到 Amazon S3 存储桶。

我做了一个 bitbucket-pipelines.yml像这样的文件

image: node:10.15.3

pipelines:
default:
- step:
name: Installing dependencies
caches:
- node
script: # Modify the commands below to build your repository.
- rm -rf package-lock.json
- rm -f node_modules
- yarn add
- step:
name: Build
script:
- yarn build

当 Bitbucket 运行它时,它会向我显示下一条错误消息
env-cmd -f .env.production.local react-scripts build
Error: Unable to locate env file at location (.env.production.local)

这是因为在我的 package.json 中,我使用 env-cmd 来读取构建脚本的环境变量。
  "scripts": {
"start": "env-cmd -f .env.development.local react-scripts start",
"build": "env-cmd -f .env.production.local react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},

但我不知道如何在我的 bitbucket-pipelines.yml 文件中读取环境变量(本地化在我的 .env 文件中)

我怎么能得到那个?

最佳答案

迟到总比不到好...
.env、.env.production.local 或任何你想要的文件名。可互换。
首先编码你 .env 文件:

base64 -w 0 .env > envout.txt
然后将 envout.txt 的内容添加到 bitbucket $ENV_ENCODED 或类似的存储库变量中
将解码命令添加到您的管道:
echo $ENV_ENCODED | base64 -d > .env
额外信息:
  • 这需要作为一个步骤完成,因此在构建之前包含它
  • 如果未找到该命令,请使用带有 base64 的构建镜像
  • 其他选项是将 .env 包含在您托管在 AWS ECR 等安全服务上的 docker 镜像中,并从那里拉取镜像,它将拥有您的 .env 文件
  • 如果有人能够将构建代理下载为工件,他们将能够查看您的 .env 的内容。这比最安全的选择更具威慑力。
  • 添加 - cat .env作为一个步骤将验证该过程,但可能使用假 .env

  • 我还建议您在同一步骤中进行安装和构建。我遇到了生成的文件(尤其是 .env)在步骤之间不同的问题。
    image: node:10.15.3

    pipelines:
    default:
    - step:
    name: Installing dependencies and Build
    caches:
    - node
    script: # Modify the commands below to build your repository.
    - rm -rf package-lock.json
    - rm -f node_modules
    - yarn add
    - echo $ENV_ENCODED | base64 -d > .env
    - yarn build

    关于reactjs - 如何在 bitbucket 管道上运行环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58717144/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com