実行環境の概要
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.
次のステップ
- Docker 実行環境用の ビルド済み CircleCI イメージに関する詳細をお読みください。
- CircleCI Academy の ビルド環境コースを受講すると、Executor の選択と使用についてさらに詳しく学ぶことができます。