是否可以在 Heruku 帐户之间的 circleci 中分离环境?

Posted

技术标签:

【中文标题】是否可以在 Heruku 帐户之间的 circleci 中分离环境?【英文标题】:Is it possible to separate environments in circleci between Heruku accounts? 【发布时间】:2021-09-15 13:48:49 【问题描述】:

我的主要想法是有两个独立的环境——一个用于production,一个用于staging

为此,我在 Heroku 上创建了两个 repo(我不确定是否可以使用一个 repo)


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_NAMENODE_ENV 都没有。

对于生产,当我在项目设置中设置环境变量时,它对我来说很好。但是当我尝试在配置文件中设置它时它不想工作。

我在这里做错了什么,它不想为我设置环境变量? 或者也许有更好的方法来区分 Heroku 和 CircleCI 之间的模式?

编辑:

据我所知,NODE_ENV 变量我应该通过 CircleCI 命令设置在 Heroku 的一侧,对吗?不是我在这里设置的方式

【问题讨论】:

【参考方案1】:

如果有人遇到同样的情况,我就是这样解决的

version: 2.1
orbs:
  heroku: circleci/heroku@0.0.10
workflows:
  production:
    jobs:
      - heroku/deploy-via-git:
          filters:
            branches:
              only:
                - main
          app-name: here goes your app name for production
  development:
    jobs:
      - heroku/deploy-via-git:
          filters:
            branches:
              only:
                - staging
          app-name: here goes your app name for development

【讨论】:

以上是关于是否可以在 Heruku 帐户之间的 circleci 中分离环境?的主要内容,如果未能解决你的问题,请参考以下文章

是否仅支持同一 Snowflake 区域中的帐户之间的数据共享?

允许多个python文件之间的通信

我们可以在属于同一个开发者帐户的应用之间共享应用内购买吗?

Azure 中的新存储帐户和经典存储帐户之间的区别

EF6 1:可选 + 1:很多

是否可以在 SIP 和 IAX2 之间进行电话会议?