memo.log

技術情報の雑なメモ

【CircleCI】1つずつ試しながら config.yml を作成していく(job, workflow, executors)

.circleci/config.yml を編集しながら試していく。

これじゃ駄目

さすがにversionだけだと駄目。 これだとジョブかワークフローを作れということでエラー。

version: 2.1

以下のエラー

# Error calling workflow: 'workflow'
# Cannot find a definition for job named build

最小構成

ジョブを1つ作る。ジョブ名は build とする必要がある。

CircleCI を設定する - CircleCI https://circleci.com/docs/ja/2.0/configuration-reference/

 Workflows を 使わない 場合は、jobs マップ内に build という名前のジョブを用意します。build ジョブは GitHub など VCS によるプッシュをトリガーとして実行する際のデフォルトのエントリーポイントとなります。あるいは、CircleCI API を利用して別のジョブを実行することも可能です。

  • 実行環境として、docker / machine / macos / windowsのどれかを選ぶ。今回は docker を選択する。
  • docker の場合は image が必須
    • steps は必須
    • その下は色々(今回は run )
  • 1つのジョブに実行環境は1つ(Executorにその縛りがある)
version: 2.1
jobs:
  build:
    docker:
      - image: circleci/ruby:2.7.2 
    steps: #
      - run: echo "hello world"

ワークフローを使う(ジョブを複数)

ワークフローを構成して、それぞれで実行環境を切り替えてみる。

version: 2.1
workflows:
  version: 2
  build:
    jobs:
      - job1
      - job2
jobs:
  job1:
    docker:
      - image: circleci/ruby:2.6.5
    steps:
      - run: echo "2.6.5"

  job2:
    docker:
      - image: circleci/ruby:2.7.2
    steps:
      - run: echo "2.7.2"

Executor

Executorを使って実行環境を切り替えてみる。

version: 2.1
executors:
  my-ruby1:
   docker:
    - image: circleci/ruby:2.6.5
  my-ruby2:
   docker:
    - image: circleci/ruby:2.7.2
workflows:
  version: 2
  build:
    jobs:
      - job1
      - job2
jobs:
  job1:
    executor: my-ruby1
    steps:
      - run: ruby -v

  job2:
    executor: my-ruby2
    steps:
      - run: ruby -v

参考

CircleCI を設定する - CircleCI