Help us understand the problem. What is going on with this article?

CircleCI 2.0 + Carthage で carthage bootstrap に時間がかかる場合の解決方法

More than 1 year has passed since last update.

問題

iOSアプリ開発で Carthage ディレクトリ配下をGitの管理下に入れないようにしたところ、CIのビルドマシン上で毎回 $ carthage bootstrap することになり、非常に時間がかかってしまっていた。

解決方法

Carthage ディレクトリ配下をキャッシュして、前回から変更がない限りそれを読み出すようにすれば良い。

.circleci/config.yml の該当箇所は以下のようになる

(抜粋).circleci/config.yml
      - restore_cache:
          key: ca-{{ checksum "Cartfile.resolved" }}
      - run:
          name: Carthage
          command: carthage bootstrap --platform iOS --cache-builds
      - save_cache:
          key: ca-{{ checksum "Cartfile.resolved" }}
          paths:
              - Carthage

各行の説明

(抜粋2).circleci/config.yml
- restore_cache:
    key: ca-{{ checksum "Cartfile.resolved" }}

CircleCI上でキャッシュを読み出す。 Cartfile.resolved のチェックサムをキーにキャッシュを読み出すという意味。
こうしておけば、 Cartfile.resolved に変更があった場合はキャッシュを読み出さずに済む。

(抜粋3).circleci/config.yml
- run:
    name: Carthage
    command: carthage bootstrap --platform iOS --cache-builds

--cache-builds$ carthage bootstrap でチェックアウトしたファイルとCarthage ディレクトリ配下のファイルに差分がない場合にビルドをスキップするオプション。

(抜粋4).circleci/config.yml
- save_cache:
    key: ca-{{ checksum "Cartfile.resolved" }}
    paths:
        - Carthage

CircleCI上でCarthage ディレクトリ配下のファイルをキャッシュする。 Cartfile.resolved のチェックサムをキーにする。

環境

  • CircleCI 2.0
  • Xcode 9.4

リファレンス

enomotok
iOS Developer
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