LoginSignup
16
9

More than 5 years have passed since last update.

circleciを使って特定のbranchにデプロイ処理をさせる

Posted at

はじめに

この記事は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の件もありますし、
サービスに合った効率化を目指していきたいですね。

16
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
9