CircleCI2.0の書き方



開発環境へのデプロイをCircleCIを使って自動実行させるため、CircleCI2.0の設定ファイルをいじったので、学んだことをまとめておきます。


*1.0と2.0の違い

まず、設定ファイルの構成や名前が変わりました。
1.0ではcircle.ymlというファイルを作成して設定等を書きましたが、2.0では.circleci/config.ymlとする必要があります。
設定ファイルの書き方も大きく変わり、2.0ではworkflowsでジョブの順番を指定したりすることができるようになりました。

2.0の基本的な書き方は下記になります。
version: 2
jobs:
  {ジョブ名}:
    environment:
      {環境変数}: "XXXX"
    docker:
      - image: {イメージ名}
    steps:
      - checkout

      - attach_workspace:
          at: .

      - restore_cache:
         keys:
          - {前回のビルドで使ったキャッシュ名}
      
      - run:
         name :
         command: |
          
      - run:
         name:
         command: |

      - save_cache:
         key: {保存するキャッシュ名}
         paths:
          - "{キャッシュとして保存したいディレクトリパス}"

      - persists_to_workspace:
          root: .
          paths:
            - {次のジョブと共有したいディレクトリパス}

workflows:
  version: 2
  build-and-deploy:
    jobs:
      - {ジョブ名}
      - {ジョブ名}
      - deploy:
          filters:
           branches:
            only:
             - {ブランチ名}
          requires:
            - {ジョブ名}
            - {ジョブ名}


*jobs


・steps

ビルドステップのことで、CIで実行したいジョブを定義することができます。

・checkout

対象のリポジトリをVM上にチェックアウトする命令です。

・restore_cache

keyとpathを指定して、以前のビルドでキャッシュとして保存されたデータを取得することができます。

・run

テストデータの作成やテストの実行といった、コマンドを実行することができます。

・save_cache

keyとpathを指定して、ビルド後にできたデータをキャッシュとして保存することができます。(同ファイル内のジョブでは使うことはできません)

・persists_to_workspace

同ファイル内のジョブとデータを共有させることができます。


*workflows

実行するジョブの順番を指定することができます。

・filters

実行するブランチを指定したり、除外することができます。

・requires

指定したjobが成功するまで次のジョブが実行しないように設定することができます。


*所感

同ファイルに定義している次のジョブにデータを渡したかったとき、誤ってsave_cacheで指定していましたが共有できず、persists_to_workspaceだと気づくのに時間がかかったので、ドキュメント等をよく読んで理解して使う必要があると思いました。
今回、初めてCircleCIの設定ファイルをいじったのですが、インデントが異なるとビルドに失敗したりするので注意が必要です。
また、CircleCI2.0はローカルで実行することもできるので、簡単な確認はローカルで試してみたほうが早そうでした。

この機会にCircleCI2.0の理解を深めることができたので、良い勉強になりました。

Previous
Next Post »

人気の投稿