Gitlab CI / CD env var availabel仅在主服务器上

时间:2020-07-03 16:17:56

标签: heroku continuous-integration gitlab gitlab-ci

如果我精通掌握,那么它可以完美运行,所有环境变量都可用,并且我可以成功部署到Heroku。

问题:如果我推送到dev分支,它将看不到部署的环境变量。

$ 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 个答案:

答案 0 :(得分:2)

这是因为您的Heroku api密钥变量被设置为受保护的

受保护的变量仅受保护的分支和受保护的标签可见。这就是为什么它对您有效但对开发人员无效的原因。

更多信息:https://gitlab.com/help/ci/variables/README#protect-a-custom-variablehttps://gitlab.com/help/user/project/protected_branches.md

您的选择是:删除受保护的标志,或者为您的未受保护的分支引入另一个不受保护的变量和另一个api密钥,从而降低敏感度。