開発環境へのデプロイを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の理解を深めることができたので、良い勉強になりました。
Sign up here with your email
ConversionConversion EmoticonEmoticon