Gitlab中基于双Heroku应用与分支的CI/CD配置问题
GitLab CI/CD 分支绑定多Heroku应用配置方案
一、先配置GitLab项目环境变量
进入GitLab项目的「Settings」→「CI/CD」→「Variables」面板,添加以下变量:
HEROKU_APP_NAME_LIVE_PROD:值设为生产环境应用名live-prodHEROKU_APP_NAME_LIVE_DEV:值设为开发环境应用名live-devHEROKU_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
相关产品推荐
相关产品推荐

