ジョブとは、ステップを集めたもの。
ジョブをいくつか集めてワークフローになる。
ジョブは主に「(1)実行環境」と「(2)ステップ」でできている!
ジョブの構成要素は以下の通りです。
1. 「実行環境」とは、「パソコンの種類」のこと!
「実行環境」とは、「パソコンの種類」のことだと思ってください。
「実行環境」の具体的には、以下のようなものがります。
-
Docker (
docker
) -
Mac (
macos
) -
Linux (
machine
)
Docker
Dockerをジョブの実行環境として使用する場合、以下の情報を登録できます。
必須
キー | データ型 | 選択肢 | 記述 |
---|---|---|---|
image |
文字列 | 実行環境として使用したいDockerイメージ |
オプション
キー | データ型 | 選択肢 | 記述 |
---|---|---|---|
name |
文字列 | 他のコンテナからアクセスする際のDockerの名前(ホスト名)。 | |
user |
文字列 | コンテナ内でコマンドを実行するユーザを指定 | |
entrypoint |
文字列, リスト | コンテナの起動時に実行されるコマンド | |
command |
文字列, リスト | エントリーポイントの引数を指定する。エントリーポイントが定義されていなければコンテナ起動時にPID1となるコマンドになる | |
environment |
マップ | 環境変数 | |
auth |
マップ | ||
aws_auth |
マップ | ECRにホストされているイメージを使用するための認証情報に指定する |
jobs:
my-job:
docker:
image: # 必須
name:
entrypoint:
command:
user:
environment:
auth:
aws_auth:
Dockerの例
jobs:
my-example-job:
docker:
image: node:14
name: my-docker-container # 初期値はlocalhost経由でアクセス可能
entrypoint: ["/bin/sh", "-c"] # 文字列/リスト。Dockerコンテナの起動時に実行されるコマンドで指定。Dockerfileのエントリーポイントを上書き。
command: ["echo", "Hello World"] # 文字列/リスト。エントリーポイントの引数を指定。エントリーポイントがない場合はコンテナ起動時にPID1となるコマンドになる。
user: "1001:1001" # 文字列。コンテナ内でコマンドを実行するユーザを指定。
environment: # マップ。環境変数。
NODE_ENV: production
API_KEY: abcdef12345
auth: # マップ。`docker login`で使用する認証情報を指定する。
username: my-username
password: my-password
aws_auth: # ECRにホストされているイメージを使用するための認証情報を指定する。
access_key_id: YOUR_AWS_ACESS_KEY
secret_access_key: YOUR_AWS_SECRET_KEY
region: us-west-1
Mac
jobs:
my-job:
macos:
xcode: # 文字列、必須。VMにインストールするバージョンを指定する。
MacOSの例
Machine
Machine Key Settings
必須
キー | データ型 | 記述 |
---|---|---|
image |
文字列 | Specifies the image to use. For available images, refer to "Available machine images". |
オプション
キー | データ型 | 記述 |
---|---|---|
docker_layer_caching |
ブーリアン | 使うイメージを指定するSpecify true to enable Docker layer caching. A paid account is required to use this feature. |
jobs:
my-job:
image: # 文字列 使用するイメージをAvailable machine imagesから指定する。
docker_layer_caching: # ブーリアン Dockerレイヤキャッシングを有効にする。有償アカウントが必要。
Machineの例
jobs:
my-job:
あああ
2. 「ステップ」とは
ジョブより小さい単位の処理。
ワークフローは、ファイルを処理することができる
persist_to_workspace
3. その他のキー
(1)「実行環境」
(2)「ステップj」を定義したら、ジョブは完成も同然です。
shell
environment
parallelism
working_directory
resource_class
jobs:
my-job:
# ↓↓↓必須
docker:
- image: circleci/node:14.17-browsers
# ↑↑↑必須
# ↓↓↓ここから任意
shell: /bin/bash --login
environment:
NODE_ENV: production
APP_VERSION: 1.0.0
parallelism: 3
working_directory: ~/my-app
resource_class: medium
# ↑↑↑ここまで任意
# ↓↓↓必須
steps:
- checkout
- run:
name: Print Environment and Working Directory
command: |
echo "Running in environment $NODE_ENV"
echo "Working directory is $(pwd)"
echo "Parallel instance: $CIRCLE_NODE_INDEX"
# ↑↑↑必須