Gitlab CI/CD环境变量仅在主分支上可用。

3

如果我将代码推送到主分支(master),一切都运行得很完美,所有的环境变量都可以使用,并且我能够成功地将代码部署到Heroku。

问题:如果我将代码推送到开发分支(dev branch),它就无法看到用于部署的环境变量。

$ dpl --provider=heroku --app=$HEROKU_DEV_APP --api-key=$HEROKU_API_KEY
invalid option "--api-key="
ERROR: Job failed: exit code 1 

环境配置:

gitlab env config

.gitlab-ci.yml:

stages:
  - build
  - test
  - deploy

build:
  stage: build
  image: maven:3.6.3-jdk-14
  script:
    - mvn clean package
  tags:
    - docker

test:
  stage: test
  image: maven:3.6.3-jdk-14
  script:
    - mvn test
  tags:
    - docker

deploy_dev:
  stage: deploy
  image: ruby:2.3
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=$HEROKU_DEV_APP --api-key=$HEROKU_API_KEY
  environment:
    name: prod
    url: https://.....herokuapp.com/
  only:
    - dev
  tags:
    - docker

deploy_prod:
  stage: deploy
  image: ruby:2.3
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=$HEROKU_PROD_APP --api-key=$HEROKU_API_KEY
  environment:
    name: prod
    url: https://.....herokuapp.com/
  when: manual
  only:
    - master
  tags:
    - docker
1个回答

7
这是因为您的Heroku API密钥变量被设置为受保护
受保护的变量仅对受保护分支和受保护标签可见。这就是为什么它在主分支上适用但在dev分支上不适用的原因。
更多信息:https://gitlab.com/help/ci/variables/README#protect-a-custom-variablehttps://gitlab.com/help/user/project/protected_branches.md 您有两个选择:要么删除受保护标志,要么引入另一个未受保护的变量,其中包含另一个API密钥,用于您的非受保护分支,该密钥会更少敏感。

这正是我正在寻找的!谢谢! - Krizsán Balazs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接