You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gitlab中基于双Heroku应用与分支的CI/CD配置问题

GitLab CI/CD 分支绑定多Heroku应用配置方案

一、先配置GitLab项目环境变量

进入GitLab项目的「Settings」→「CI/CD」→「Variables」面板,添加以下变量:

  • HEROKU_APP_NAME_LIVE_PROD:值设为生产环境应用名live-prod
  • HEROKU_APP_NAME_LIVE_DEV:值设为开发环境应用名live-dev
  • HEROKU_API_KEY:值为你的Heroku账户API密钥(勾选「Mask variable」隐藏敏感内容)

二、修改.gitlab-ci.yml实现动态部署

推荐两种实现方式,按需选择:

方式1:分Job绑定分支(清晰直观)

为不同分支单独定义部署Job,仅在对应分支推送时触发:

stages:
  - deploy

# 生产环境部署(仅main分支触发)
deploy-prod:
  stage: deploy
  only:
    - main
  script:
    - echo "开始部署到生产应用: $HEROKU_APP_NAME_LIVE_PROD"
    - heroku login -i -e $HEROKU_API_KEY
    - heroku git:remote -a $HEROKU_APP_NAME_LIVE_PROD
    - git push heroku main:main

# 开发环境部署(仅dev分支触发)
deploy-dev:
  stage: deploy
  only:
    - dev
  script:
    - echo "开始部署到开发应用: $HEROKU_APP_NAME_LIVE_DEV"
    - heroku login -i -e $HEROKU_API_KEY
    - heroku git:remote -a $HEROKU_APP_NAME_LIVE_DEV
    - git push heroku dev:main

方式2:单Job分支判断(适合复杂分支逻辑)

在单个Job中通过分支判断动态赋值目标应用:

stages:
  - deploy

deploy:
  stage: deploy
  only:
    - main
    - dev
  before_script:
    - |
      # 根据当前分支设置目标应用变量
      if [ "$CI_COMMIT_BRANCH" = "main" ]; then
        HEROKU_TARGET_APP=$HEROKU_APP_NAME_LIVE_PROD
      elif [ "$CI_COMMIT_BRANCH" = "dev" ]; then
        HEROKU_TARGET_APP=$HEROKU_APP_NAME_LIVE_DEV
      else
        echo "不支持的分支,终止部署"
        exit 1
      fi
  script:
    - echo "开始部署到目标应用: $HEROKU_TARGET_APP"
    - heroku login -i -e $HEROKU_API_KEY
    - heroku git:remote -a $HEROKU_TARGET_APP
    - git push heroku $CI_COMMIT_BRANCH:main

注意事项

  • 若GitLab Runner未预装Heroku CLI,需在script开头添加安装命令:curl https://cli-assets.heroku.com/install.sh | sh
  • git push的目标分支(示例中为main)需与Heroku应用设置的部署分支一致,可根据实际调整
  • 确保HEROKU_API_KEY拥有对应Heroku应用的部署权限

内容的提问来源于stack exchange,提问作者Beefy.py

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:27:28