LoginSignup
24
37

More than 3 years have passed since last update.

CircleCI を使いこなす! JOBの設定方法を徹底解説!!

Last updated at Posted at 2020-11-12

はじめに

以前、CircleCIの始め方を解説しました。
初心者必見! CircleCIでHello Worldしてみよう!

今回はCircleCIの基本設定のうち、JOBについて詳しく解説していきます。

YouTube解説

Qiitaの記事だけでなく、YouTubeでも解説しています!
動画で確認したい方はこちらもどうぞ!
【YouTube動画】 CircleCI を使いこなす! JOBの設定方法を徹底解説!!
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

選べるスペックは以下の表のようになっています。
ただ、スペックを上げるとその分値段も上がります!
スクリーンショット 2020-11-11 13.40.02.png

環境変数の追加 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タブからダウンロードできます。
スクリーンショット 2020-11-12 11.04.32.png

テスト結果の保存 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記事を作っていきます!

24
37
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
37