実行環境の概要

1+ year ago1 min read
クラウド
Server v4.x
Server v3.x

CircleCI では複数の実行環境 (Docker、 Linux VM (仮想マシン)、macOS、Windows、GPU、Arm) を提供しています。 プロジェクトの設定ファイルで定義されたジョブはそれぞれ、Docker コンテナまたは仮想マシンのいずれかの隔離された実行環境で実行されます。

プロジェクトの設定ファイル内の各ジョブに Executor を割り当て、実行環境を指定します。 Executor により、基盤テクノロジー、つまりジョブの実行環境とプロジェクトに最適なイメージが定義されます。

.circleci/config.yml で Executor タイプと適切なイメージを指定することで、ジョブごとに異なる Executor タイプを指定することも可能です。 イメージは、実行環境を作成するための指示を含むパッケージ化されたシステムです。 コンテナまたは仮想マシンは、イメージの実行インスタンスを指す用語です。 たとえば、下記のようにします。

  • Docker イメージ (docker) を必要とするジョブには、Node.js または Python のイメージを使用します。 CircleCI Docker Hub にある ビルド済みの CircleCI Docker イメージを使用すると、Docker について完全に理解していなくてもすぐに着手できます。 このイメージはフルオペレーティングシステムではないため、多くの場合ソフトウェアのビルドの効率化が図れます。
  • Linux 仮想マシン (VM) の完全なイメージ (machine) を必要とするジョブには、 利用可能なマシンイメージのリストに記載されている Ubuntu バージョンを使用します。
  • macOS VM イメージ (macos) を必要とするジョブには、Xcode バージョン (12.5.1 など) を使用します。## Docker

Docker 実行環境を使用するには、docker Executor を使ってイメージを指定します。 CircleCI がビルドした CircleCI イメージの全リストは、 CircleCI Developer Hub を参照してください。

jobs:
  build: # name of your job
    docker: # executor type
      - image: cimg/base:stable # primary container will run the latest, production-ready base image
        auth:
          username: mydockerhub-user
          password: $DOCKERHUB_PASSWORD  # context / project UI env-var reference

    steps:
        # Commands run in the primary container

Docker 実行環境に関する詳細は、 Docker の使用のページを参照してください。

Linux VM

Linux VM 実行環境を使用するには、machine Executor を使って Linux イメージを指定します。 machine イメージの全リストは、 CircleCI Developer Hub を参照してください。

jobs:
  build: # name of your job
    machine: # executor type
      image: ubuntu-2004:202010-01 # # recommended linux image - includes Ubuntu 20.04, docker 19.03.13, docker-compose 1.27.4

    steps:
        # Commands run in a Linux virtual machine environment

Linux VM 実行環境に関する詳細は、 Linux 仮想マシンの使用のページを参照してください。

macOS

macOS 実行環境を使用するには、macos Executor を使って、xcode キーでイメージを指定します。 macOS イメージの全リストは、 CircleCI Developer Hub をご覧ください。

jobs:
  build: # name of your job
    macos: # executor type
      xcode: 14.2.0

    steps:
      # Commands run in a macOS virtual machine environment
      # with Xcode 14.2.0 installed

macOS 実行環境に関する詳細は、 macOS の使用のページを参照してください。

Windows

Windows 実行環境を使用するには、Windows Orb を使って Orb からデフォルトの Executor を指定するか、machine Executor を使用して Windows イメージを指定します。 machine イメージの全リストは、 CircleCI Developer Hub を参照してください。

version: 2.1

orbs:
  win: circleci/windows@4.1.1 # The Windows orb gives you everything you need to start using the Windows executor

jobs:
  build: # name of your job
    executor: win/server-2022 # use one of the executors defined within the windows orb

    steps:
      # Commands are run in a Windows virtual machine environment
      - checkout
      - run: Write-Host 'Hello, Windows'

Windows 実行環境に関する詳細は、 Windows 実行環境の使用のページを参照してください。 Windows Orb で使用できるオプションの一覧は、 Developer Hub の Windows Orb の詳細ページでご確認ください。

GPU

GPU 実行環境を使用するには、Windows Orb を使って Orb から GPU が有効化されている Executor を指定するか、machine Executor を使用して Linux イメージか GPU が有効化された Windows イメージを指定します。 machine イメージの全リストは、 CircleCI Developer Hub を参照してください。

version: 2.1

jobs:
  build:
    resource_class: gpu.nvidia.small
    machine:
      image: ubuntu-2004-cuda-11.4:202110-01
    resource_class: gpu.nvidia.small
    steps:
      - run: nvidia-smi

GPU 実行環境に関する詳細は、 GPU 実行環境の使用のページを参照してください。

Arm

Arm 実行環境を使用するには、machine Executor を下記に沿って使用し、arm.medium または arm.large のいずれかのリソースクラスを指定します。 machine イメージの全リストは、 CircleCI Developer Hub を参照してください。

# .circleci/config.yml
version: 2.1

jobs:
  build-medium:
    machine:
      image: ubuntu-2004:202101-01
    resource_class: arm.medium
    steps:
      - run: uname -a
      - run: echo "Hello, Arm!"


  build-large:
    machine:
      image: ubuntu-2004:202101-01
    resource_class: arm.large
    steps:
      - run: uname -a
      - run: echo "Hello, Arm!"

workflows:
  build:
    jobs:
      - build-medium
      - build-large

Arm 実行環境に関する詳細は、 GPU 実行環境の使用のページを参照してください。

セルフホストランナー

Kubernetes を使用する コンテナランナー、および Linux、Windows、macOS で マシンランナーを使用する仮想マシンで、セルフホストランナーを使用できます。

ポート範囲

When using a machine executor, if a port range is hardcoded, the range in /proc/sys/net/ipv4/ip_local_reserved_ports should be avoided. Port range 32768 - 60999 is used by the TCP stack to allocate ephemeral ports for connections. Ports in that range may have already been allocated by a previous connection, so collisions are possible.

次のステップ