LoginSignup
19
15

More than 5 years have passed since last update.

iOSプロジェクトのCircleCI 2.0設定例

Last updated at Posted at 2017-11-20

iOSプロジェクトのCircleCI 2.0対応を行ったので、その内容を共有します。
オフィシャルのドキュメントが結構充実していて、これらを参考にしてymlを作りました。

またサンプルリポジトリも提供されています。

CircleCI 2.0では、 circle.yml の代わりにルートフォルダに .circleci/config.yml を作成します。

circleci/config.yml
version: 2
jobs:
  # ユニットテスト
  build-and-test:
    macos:
      xcode: "9.0"
    working_directory: /Users/distiller/output
    steps:
      - checkout
      - run:
          name: Run tests
          command: fastlane scan
          environment:
            # ユニットテストで使用するシミュレータ端末とshemeを指定
            SCAN_DEVICE: iPhone 8
            SCAN_SCHEME: <スキーム名>

      # ユニットテストの結果を保存
      - store_test_results:
          path: test_output/report.xml
      - store_artifacts:
          path: /tmp/test-results
          destination: scan-test-results
      - store_artifacts:
          path: ~/Library/Logs/scan
          destination: scan-logs

  # Beta配信
  beta-deployment:
    macos:
      xcode: "9.0"
    # Rubyのバージョンを指定するためにログインシェルを設定 
    shell: /bin/bash --login -eo pipefail
    working_directory: /Users/distiller/output
    steps:
      - checkout
      - run:
          # match でSSLのエラーを回避するためにruby2.4を使用
          name: Set Ruby Version
          command:  echo "ruby-2.4" > ~/.ruby-version
      # Gemのキャッシュを読み出す
      - restore_cache:
          key: 1-gems-{{ checksum "Gemfile.lock" }}
      - run: bundle check || bundle install --path vendor/bundle
      # Gemのキャッシュを保存
      - save_cache:
          key: 1-gems-{{ checksum "Gemfile.lock" }}
          paths:
            - vendor/bundle
      # badge に必要
      - run: brew install imagemagick
      - run: brew install graphicsmagick
      # Beta配信
      # 弊社では beta コマンドの中で match, badge, gym をまとめて実行している
      - run: bundle exec fastlane beta
      # artifactsとして保存するファイルを明示
      - store_artifacts:
          path: <スキーム名>.app.dSYM.zip
      - store_artifacts:
          path: <スキーム名>.ipa

  # iTunes Connectへのアップロード
  release:
    macos:
      xcode: "9.0"
    shell: /bin/bash --login -eo pipefail
    working_directory: /Users/distiller/output
    steps:
      - checkout
      - run:
          name: Set Ruby Version
          command:  echo "ruby-2.4" > ~/.ruby-version
      - run: bundle install --path vendor/bundle
      - run: bundle exec fastlane release --verbose

workflows:
  version: 2
  build_test_deployment:
    jobs:
      - build-and-test
      - beta-deployment:
          filters:
            branches:
              # master ブランチのみで、このジョブを実行
              only: master
          requires:
            # このジョブを実行するためには、以下のジョブをパスしている必要がある
                        # 並列でジョブを実行したければ、この設定は削除すること
            - build-and-test
  release:
    jobs:
      - release:
          filters:
            branches:
              # 正規表現でこのジョブを実行できるブランチを指定する
              only: /release.*/

暫定版ですが、どなたかの役に立てば幸いです。

19
15
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
19
15