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