Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

Organization

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

はじめに

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
9
Help us understand the problem. What are the problem?