CircleCI:找不到名为 ubuntu 的执行程序的定义?

CircleCI: Cannot find a definition for executor named ubuntu?

我正在尝试扩展已在使用的 orb。我们之前使用过 Docker,但现在想使用 machine 执行器,将来可能使用 windows 执行器。我浏览了文档,但不清楚是否可以拥有不同类型的执行程序并在相同的作业中调用它们。

在CircleCI中是否可以在同一个orb中有不同类型的执行者?

我尝试创建执行器 ubuntu.yml:

description: >
  The executor to run testcontainers without extra setup in Circle CI builds.

parameters:
  # https://circleci.com/docs/2.0/configuration-reference/#resource_class
  resource-class:
    type: enum
    default: medium
    enum: [medium, large, xlarge, 2xlarge]

  tag:
    type: string
    default: ubuntu-2004:202010-01

resource_class: <<parameters.resource-class>>

machine:
  image: <<parameters.tag>>

另一个执行者,openjdk.yml

description: >
  The default executor for our OpenJDK + Maven-based builds.

parameters:
  # https://circleci.com/docs/2.0/configuration-reference/#resource_class
  resource-class:
    type: enum
    default: medium
    enum: [small, medium, medium+, large, xlarge]

  tag:
    type: string
    default: 11.0-jdk-stretch

resource_class: <<parameters.resource-class>>

docker:
  - image: circleci/openjdk:<<parameters.tag>>

我工作的开始是:

parameters:
  executor:
    type: executor
    default: openjdk
  resource-class:
    type: enum
    default: medium
    enum: [small, medium, medium+, large, xlarge]

executor: << parameters.executor >>
resource_class: << parameters.resource-class >>

environment:
  # Customize the JVM maximum heap limit
  MAVEN_OPTS: -Xmx3200m

如何引用我的 ubuntu 执行器,以便其他 orb 可以看到它?

Circle 中有 3 种类型的执行器调用 CI:

  • 调用 CircleCI 预定义图像,例如 rubyopenjdk.
  • 从相同配置 file/orb 调用执行程序,例如 my-openjdkmy-executor

例如,

executors:
  my-executor:
    machine: true
  my-openjdk:
    docker:
      - image: openjdk:11
  • 从现有的 orbs 中调用执行器,例如 <orb-name>/<executor-name>

在我的例子中,它是第三个选项,my-orb/ubuntu