Job

一連の処理の流れを記載します。これはトップレベルのjobs:以下にジョブの名前となる<job-name>:とネストさせ、その中にジョブの環境や具体的な処理といった内容を置きます。

jobs:
  build:
    executor: alpine
    steps:
      - run: ':'
     

例えばこの書き方ではbuildという名前のジョブを定義してます。そしてこれは、alpine環境(executor)で処理(steps)を順番に実行するということを中に書いてます。このexecutorstepsは必須なので必ず置かなければなりません。

stepsは配列です。上記では1つの処理しか行ってませんが、以下のように複数書くと順番にそれを実行します。

jobs:
  build:
    executor: alpine
    steps:
      - run: echo foo
      - run: echo bar
      - run: echo baz
      

また、buildという名前のジョブがある時、workflowsは無くても構いません。buildというのは特別なジョブ名で、もしもworkflowsがない場合以下のように解釈されます。

workflows:
  workflow:
    jobs:
      - build
      

オプショナルな設定

parameters

stepsと同じ階層にparametersを置くことができます。もし極一部だけ値の違うジョブを使いたいい場合、コピペして極一部だけ値を変えるのではなく、パラメーター値として渡してあげることで行っている事は同じ様なジョブ定義を1つだけにできます。

jobs:
  build:
    parameters
      text:
        type: string
    executor: alpine
    steps:
      - run: echo << parameters.text >>
      

ワークフローでジョブを使う時にtextパラメーターを渡して使うことができます。以下は最終的にecho fooが実行されます。

workflows:
  foo:
    jobs:
      - build:
          text: foo
          

working_directory

ジョブを実行する際にいるディレクトリを設定できます。デフォルトでは~/projectという場所にいいます。また、この値はCIRCLE_WORKING_DIRECTORY環境変数に入ります。

shell

ジョブを実行するシェルを設定できます。ジョブを実行するマシンにbashがある場合はそれが、ない場合はshになります。

environment

ジョブ内で使える環境変数を定義できます。

jobs:
  build:
    environment:
      FOO: foo
    executor: alpine
    steps:
      - run: echo $FOO