LoginSignup
2
2

More than 5 years have passed since last update.

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

Posted at

問題

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

リファレンス

2
2
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
2
2