CircleCI - Docker 登录和私有环境变量

Jon*_*IAR 4 continuous-integration docker circleci docker-compose

我正在配置 CircleCI 以自动构建我贡献的开源库的多个容器并将其上传到 Docker Hub。

一切正常,除了当我尝试使用 CLI 登录 docker 时。我认为我的构建无法访问私有环境变量,但是我尝试了一切来修复它......

我的配置文件如下:

version: 2
jobs:
  build:
    working_directory: ~/build
    docker:
      - image: docker:git
    steps:
      - checkout
      - setup_remote_docker:
          reusable: true
          exclusive: true

      - run:
          name: Connect to Docker Hub
          command: |
            docker login -u ${DOCKER_USER} -p ${DOCKER_PASS}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

#!/bin/sh -eo pipefail
docker login -u $DOCKER_USER -p $DOCKER_PASS
"docker login" requires at most 1 argument.
See 'docker login --help'.

Usage:  docker login [OPTIONS] [SERVER] [flags]

Log in to a Docker registry
Exited with code 1
Run Code Online (Sandbox Code Playgroud)

变量当然是定义的:

在此输入图像描述

我想准确地说,它在主项目的分支上运行,并且我不需要在项目分支上运行它。

我通常很习惯Travis CI,这要容易得多。

Jon*_*IAR 6

我找到了答案,这个容器对环境变量的定义方式非常敏感:

应该使用该命令:

docker login -u "$DOCKER_USER" -u "$DOCKER_PASS"
Run Code Online (Sandbox Code Playgroud)

或者,可以使用以下内容:

echo "$DOCKER_PASS" | docker login -u "$DOCKER_USER" --password-stdin
Run Code Online (Sandbox Code Playgroud)