【问题标题】:I need to pass an env variable to docker through ssh from gitlab-ci我需要通过 gitlab-ci 中的 ssh 将 env 变量传递给 docker
【发布时间】:2021-11-11 20:40:23
【问题描述】:

从我的 gitlab-ci 中,我需要将带有 spring 配置文件的环境变量传递给 docker compose。这样的变量是为我们部署的每个服务器环境定义的。

所以,在我的 gitlab-ci 中,我有这个:

.deploy_template: &deploy_template
  script:
    - echo $ENV_SPRING_PROFILES
    # start containers
    - $SSH_COMMAND user@$CI_ENVIRONMENT_URL "cd $REMOTE_DEPLOY_DIR/docker && SPRING_ACTIVE_PROFILES=$ENV_SPRING_PROFILES && DOCKER_HOST=tcp://localhost:2375 && docker-compose up -d"


deploy_811AC:
  <<: *deploy_template
  stage: deploy
  when: manual
  only:
    - /^feature.*$/
    - /^fix.*$/
  environment:
    name: ccvli-ecp626
    url: 10.135.XXX.XXX
  variables:
    ENV_SPRING_PROFILES: "mock"

当我运行跑步者时,我可以看到 - echo $ENV_SPRING_PROFILES 变量的值。但是,它似乎没有在 SSH 命令中被替换,因为 docker-compose 说变量 SPRING_ACTIVE_PROFILES 是空的。

这正在成为一种噩梦,所以欢迎提供任何线索。

提前致谢

【问题讨论】:

    标签: bash docker ssh gitlab gitlab-ci


    【解决方案1】:

    我对gitlab ci没有太多经验,但我认为“声明”变量的方式不是“=”而是这样:

    variables:
        SPRING_ACTIVE_PROFILES: $SPRING_ACTIVE_PROFILES 
    
    script:
        ...
        - $SSH_COMMAND user@$CI_ENVIRONMENT_URL "cd $REMOTE_DEPLOY_DIR/docker && $ENV_SPRING_PROFILES && DOCKER_HOST=tcp://localhost:2375 && docker-compose up -d"
    

    一旦在第一个块上声明了它,你就可以开始在代码中使用它了:)

    【讨论】:

    • 您好,感谢您的回答,但不,它们是不同的东西。我声明的第一个变量是一个 gitlab 变量,它将包含一个值。第二个声明将成为我正在部署的服务器中的 unix 环境变量键,因此我需要传递给这样的变量,即我在 gitlab 变量中首先声明的值(是取决于我所在环境的动态值部署。
    猜你喜欢
    • 1970-01-01
    • 2019-08-05
    • 2020-03-15
    • 2022-12-22
    • 2019-11-04
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 2016-04-15
    相关资源
    最近更新 更多