#はじめに
この記事はLIFULL Advent Calendar 2018 その3、22日目の記事です。
circleciを触る機会がありまして、
この記事の対象としては、circleciのドキュメント読みつつ、
まさに導入を考えている初学者向けです。
#circleciについて
もはや僕から説明する必要がないほど、様々な記事で説明されている内容なので
省略します。
念のため公式サイトを貼ります。
https://circleci.com/
#circleciを使ってやりたいこと
今回、ciを導入してやりたかったことは、
「特定のブランチにpushした時にのみデプロイする処理を行う」というシンプルな内容です。
具体的なデプロイ処理は今回省略します。
(後でcache指定の部分は触れます)
#やったこと
今回の事例としては、あるbranch(deployブランチと仮に置く)にpushした時のみ、
デプロイする処理が動くという内容を書いてました。
以下が再現したconfig.ymlです。
# .circleci/config.yml
version: 2
jobs:
deploy_job:
# デプロイする処理
workflows:
version: 2
deploy:
jobs:
- deploy_job:
filters:
branches:
only: deploy
このような設定で、deployというbranchにpushされた時のみ、
jobが走るようになります。
他のブランチにも走らせたい場合があると思いますので
branch指定子のリストを渡しておくことももちろんできます。
workflows:
version: 2
deploy:
jobs:
- deploy_job:
filters:
branches:
only:
- deploy
- hoge_branch
- foo_branch
複数のjobを特定のbranchで動かす前提だったため、
今回はworkflowsを利用しました。
もちろんjobごとに設定することも可能です。
https://circleci.com/docs/ja/2.0/configuration-reference/#branches
キャッシュ指定について
上の内容で特定のbranchに処理をすることはできました。
しかしデプロイ処理をcircleciでやる時、毎回bundleやらyarnやらをインストールすると
時間がかかってしまいます。
なので対策としてcacheを指定して時間を短縮しましょう。
以下はbundle installのサンプルコードです。
- restore_cache:
name: Restore bundle cache
keys:
- bundle-cache-{{ .Branch }}-{{ checksum "Gemfile.lock" }}
- run:
name: Bundle Install
command: bundle install --path=vendor/bundle
- save_cache:
key: bundle-cache-{{ .Branch }}-{{ checksum "Gemfile.lock" }}
paths:
- vendor/bundle
#まとめ
今回説明したのは
- 特定のbranchにpushされた際に処理を行う
- cache指定による時間短縮
です。
circleci2.1やGithub Actionsの件もありますし、
サービスに合った効率化を目指していきたいですね。