我的主要想法是有两个独立的环境 - 一个 forproduction
和一个 for staging
。
为此,我在 Heroku 上创建了两个存储库(我不确定是否可以使用一个存储库来实现)
version: 2.1
jobs:
heroku/deploy-via-git:
docker:
- image: circleci/node:10.16.3
steps:
- checkout
- run:
name: build-dev-step
command: echo $HEROKU_APP_NAME "This is Heroku env variable"
setting_development_variables:
docker:
- image: circleci/node:10.16.3
environment:
HEROKU_APP_NAME: ****
steps:
- checkout
- run:
name: setting-variables-command
command: echo "Heroku env variables are set"
setting_production_variables:
docker:
- image: circleci/node:10.16.3
environment:
HEROKU_APP_NAME: ***2***
NODE_ENV: production
steps:
- checkout
- run:
name: setting-variables-command
command: echo "Heroku env variables are set"
orbs:
heroku: circleci/heroku@0.0.10
workflows:
production:
jobs:
- setting_production_variables:
filters:
branches:
only:
- main
- heroku/deploy-via-git:
requires:
- setting_production_variables
filters:
branches:
only:
- main
development:
jobs:
- setting_development_variables:
filters:
branches:
only:
- staging
- heroku/deploy-via-git:
requires:
- setting_development_variables
filters:
branches:
only:
- staging
在这里你可以看到我是如何让它为我工作的,但似乎我不能在那里设置任何环境,也HEROKU_APP_NAME
不能NODE_ENV
。
对于我在项目设置中设置环境变量的生产,它对我来说很好。但是当我尝试在配置文件中设置它时,它不想工作。
我在这里做错了什么,它不想为我设置环境变量?或者也许有更好的方法来分离 Heroku 和 CircleCI 之间的模式?
编辑:
据我了解NODE_ENV
,我应该通过 CircleCI 命令将变量设置在 Heroku 的一侧,对吗?不是我在这里设置的方式