如何运行 docker in Circle CI orbs?

How to run docker in Ciricle CI orbs?

CircleCI 在 2.1 中引入了 orb,我正在尝试添加 Circle Ci 配置我的 sample project.

但是在我的测试代码中,我使用了测试容器来简化我的集成测试的依赖配置。

提交我的代码时,Circle CI 运行 失败。

org.testcontainers.containers.ContainerLaunchException: Container startup failed
Caused by: org.testcontainers.containers.ContainerFetchException: Can't get Docker image: RemoteDockerImage(imageName=mongo:4.0.10, imagePullPolicy=DefaultPullPolicy())
Caused by: java.lang.IllegalStateException: Could not find a valid Docker environment. Please see logs and check configuration

我的 Circle CI 配置。

version: 2.1

orbs:
  maven: circleci/maven@1.0.1
  codecov: codecov/codecov@1.1.0

jobs:
  codecov:
    machine:
      image: ubuntu-1604:201903-01
    steps:
       - codecov/upload

workflows:
  build:
    jobs:
      - maven/test:
          command: "-q verify -Pcoverage"
      - codecov:
          requires:
            - maven/test

知道了 运行 我自己。

maven orb提供了可重复使用的jobscommands,但默认情况下,它使用了JDK executor,不提供Docker 运行时间.

我的解决方案是放弃可重用的作业,并在您自己的作业中重用 maven orb 中的一些命令。

version: 2.1

orbs:
  maven: circleci/maven@1.0.1
  codecov: codecov/codecov@1.1.0
executors:
  docker-mongo:
    docker:
      - image: circleci/openjdk:14-jdk-buster
      - image: circleci/mongo:latest
jobs:
  build:
    executor: docker-mongo
    steps:
      - checkout
      - maven/with_cache:
          steps:
            - run: mvn -q test verify -Pcoverage
      - maven/process_test_results
      - codecov/upload:
          when: on_success
workflows:
  build:
    jobs:
      - build