はじめに
以前、CircleCIの始め方を解説しました。
初心者必見! CircleCIでHello Worldしてみよう!
今回はCircleCIの基本設定のうち、JOBについて詳しく解説していきます。
YouTube解説
Qiitaの記事だけでなく、YouTubeでも解説しています!
動画で確認したい方はこちらもどうぞ!
【YouTube動画】 CircleCI を使いこなす! JOBの設定方法を徹底解説!!
設定ファイルの復習
まず、設定ファイルを確認しましょう。
version: 2.1
jobs:
<job_name>:
docker: ...
steps: ...
workflows:
<workflow_name>:
jobs: ...
次のようにjobs以下に名前付きで実行したいjobを設定します。
jobには実行したいコマンド群を記述していきます。
そのjobの実行タイミングはworkflowで指定します。
特定のタグを切った時に実行させたり、mainブランチにマージしたら実行させたりといった使い方ができます。
今回はjobsの部分について詳しく見ていきます。
jobs:
<job_name1>:
<job_name2>:
<job_name3>:
workflows:
<workflow_name>
jobs: ...
Executorタイプ
jobの一行下でどの環境でコマンドを実行させたいか (executorタイプ) を決めることができます。
指定できるのは、docker, machine, macos, windowsです。
<job_name>:
<executorタイプ>
dockerでは、docker imageを指定して使います。
<job_name>:
docker:
- image: buildpack-deps:trusty
machineを指定すると、LinuxのVMで実行できます。
OSのリソースにフルアクセスしたい場合などに便利そうです。
<job_name>:
machine:
image: ubuntu-1604:201903-01
macosを指定すると、macOSのVMで実行できます。
xcodeのバージョン指定もできます。
iOSアプリのビルドで役立ちそうです。
<job_name>:
macos:
xcode: 11.3.0
windowsを指定すると、windowsのVMで実行できます。
windows用アプリの開発で役立ちそうです。
ただ、windowsは特殊で、上記のものとは異なる設定が必要です。
Windows Executorの使用
JOBの設定項目
CircleCIでDockerを使うことの方が多いと思うので、docker中心で解説していきます。
スペック設定 resource_class
マシンスペックを指定することで、vCPUやRAMの性能を上げることができます。
docker:
- image: <docker_image>
resource_class: large
選べるスペックは以下の表のようになっています。
ただ、スペックを上げるとその分値段も上がります!
環境変数の追加 environment
仮想環境内で使用したい変数はenvironmentで設定できます。
docker:
- image: circleci/ruby:2.6.5
environment:
BUNDLE_PATH: vendor/bundle
並列処理の数 parallelism
これで並列で実行するコマンド数を指定できます。
詳しい話は別動画・別記事で紹介します。
docker:
parallelism: 3
steps
ここ以下にどういうコマンドを実行したいかを書きます。
ここも詳しく見ていきます。
docker:
steps:
stepsの設定
stepsの設定を詳しく見ていきます。
標準的なコマンド実行 run
標準的なコマンドを実行するときに使います。
steps:
run:
command: echo Hello World
複数行の場合は次のようにも書けます。
steps:
run:
command: |
echo hello
echo world!!
チェックアウト checkout
仮想環境のworking_directoryにGitHubのソースコードをチェックアウトするときに使用します。
steps:
- checkout
キャッシュ保存 save_cache
ソースコードやディレクトリのキャッシュに使えます。
node_moduleをキャッシュしておいて、テスト時に毎回入らないようにすることもできます。
pathsでキャッシュしたいディレクトリを指定できます。
steps:
save_cache:
key: yarn-{{ checksum "yarn.lock" }}
paths:
- node_modules
キャッシュ取り出し restore_cache
保存したキャッシュを利用するときに使用します。
keyは前方一致です。
steps:
restore_cache:
key: yarn-{{ checksum "yarn.lock" }}
paths:
- node_modules
deploy
基本的にはrunと同じ挙動です。
SSHを使用して実行されるjobでは無視されます。
steps:
deploy: ...
実行ファイルの保存 store_artifacts
CircleCI上にテスト終了後も残しておきたいファイルを指定できます。
steps:
store_artifacts:
path:
- build
保存した結果はARTIFACTSタブからダウンロードできます。
テスト結果の保存 store_test_results
テスト結果の保存もできます。
テスト結果はARTIFACTSの左にあるTESTSタブから確認できます。
steps:
store_test_results:
path: tmp/test-results
persist_to_workspaceとattach_workspace
jobが実行された状態を保存し、他のjobでも使えるように設定できます。
steps:
persist_to_workspace:
root: /tmp # rootフォルダの指定
paths:
- foo # rootフォルダないのパスを指定
steps:
attach_workspace:
at: /tmp # persist_to_workspaceで指定したディレクトリを指定する
add_ssh_key
デプロイ用のSSHキーの追加もできます。
steps:
add_ssh_key:
fingerprints:
- "b7:35:a6:4e:9b:0d:6d:d4:78:1e:9a:97:2a:66:6b:be"
おわり
今回はCircleCIのjobやstepsについて詳しく見ていきました。
他の項目についても動画とQiiita記事を作っていきます!