Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CircleCIを使ったAndroidの開発フローの効率化とtips

ymnder
May 28, 2019

 CircleCIを使ったAndroidの開発フローの効率化とtips

CircleCI ユーザーコミュニティミートアップ #4 2019/5/28 @ymnd
https://circleci.connpass.com/event/125622/

ymnder

May 28, 2019
Tweet

More Decks by ymnder

Other Decks in Technology

Transcript

  1. gradle-git-repo-plugin //build.gradle dependencies { classpath 'com.github.atsushi-ageet:gradle-git-repo-plugin:2.0.4' } //app/build.gradle apply plugin:

    'git-repo' repositories { // Username repository name branch directory github("Nikkei", "KaizenRequest_Android", "master", "repository") } dependencies { implementation ('com.nikkei:kaizenrequest:1.4.1') { }
  2. gradle-git-repo-plugin Circle CI version: 2 jobs: build: working_directory: ~/code docker:

    - image: circleci/android:api-28 environment: _JAVA_OPTIONS: -Xms512m -Xmx1024m steps: - checkout - add_ssh_keys: fingerprints: - “ssh_key” - run: cp ssh_config ~/.ssh/config - run: git clone [email protected]:ymnder/Hoge.git ~/.gitRepos/ymnder/hoge_library - run: name: Run Unit Test command: ./gradlew testReleaseUnitTest -Poffline
  3. gradle-git-repo-plugin Circle CI version: 2 jobs: build: working_directory: ~/code docker:

    - image: circleci/android:api-28 environment: _JAVA_OPTIONS: -Xms512m -Xmx1024m steps: - checkout - add_ssh_keys: fingerprints: - “ssh_key” - run: cp ssh_config ~/.ssh/config - run: git clone [email protected]:ymnder/Hoge.git ~/.gitRepos/ymnder/hoge_library - run: name: Run Unit Test command: ./gradlew testReleaseUnitTest -Poffline
  4. gradle-git-repo-plugin Circle CI CI Deploy Keys current branch ssh key

    != library ssh key add_ssh_keys GitHub(deploy keys) -> CircleCI(SSH Permissions)
  5. gradle-git-repo-plugin Circle CI version: 2 jobs: build: working_directory: ~/code docker:

    - image: circleci/android:api-28 environment: _JAVA_OPTIONS: -Xms512m -Xmx1024m steps: - checkout - add_ssh_keys: fingerprints: - “ssh_key” - run: cp ssh_config ~/.ssh/config - run: git clone [email protected]:ymnder/Hoge.git ~/.gitRepos/ymnder/hoge_library - run: name: Run Unit Test command: ./gradlew testReleaseUnitTest -Poffline
  6. gradle-git-repo-plugin Circle CI //ssh_config Host Hoge-Android HostName github.com User git

    IdentityFile /home/circleci/.ssh/id_hoge Host Fuga-Android HostName github.com User git IdentityFile /home/circleci/.ssh/id_hoge - run: git clone git@Hoge-Android:ymnder/Hoge.git ~/.gitRepos/hoge_library - run: git clone git@Fuga-Android:ymnder/Fuga.git ~/.gitRepos/fuga_library
  7. gradle-git-repo-plugin Circle CI version: 2 jobs: build: working_directory: ~/code docker:

    - image: circleci/android:api-28 environment: _JAVA_OPTIONS: -Xms512m -Xmx1024m steps: - checkout - add_ssh_keys: fingerprints: - “ssh_key” - run: cp ssh_config ~/.ssh/config - run: git clone [email protected]:ymnder/Hoge.git ~/.gitRepos/ymnder/hoge_library - run: name: Run Unit Test command: ./gradlew testReleaseUnitTest -Poffline
  8. Danger Gem le gem install bundle bundle init Gem le

    # Gemfile gem 'danger' gem 'danger-android_lint' gem 'danger-apkstats'
  9. Danger Gem le lock bundle install Danger le ### lint

    android_lint.gradle_task = "lintDebug -Poffline" android_lint.report_file = "path/app/build/reports/lint-results-Debug.xml" android_lint.filtering = true android_lint.lint(inline_mode: true) ### stats apkstats.command_type=:apk_analyzer apkstats.apk_filepath='~/app-debug.apk' apkstats.compare_with('~/old-app-debug.apk', do_report: true)
  10. Danger .circleci/con g.yml images Ruby - save_cache: paths: - ~/.gradle

    key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }} - restore_cache: key: gems-{{ checksum "Gemfile.lock" }} - run: bundle install --path vendor/bundle - save_cache: paths: - vendor/bundle key: gems-{{ checksum "Gemfile.lock" }} # make app - run: name: Run danger command: bundle exec danger
  11. : images licenses accepted 策 1 circleci/android:api- X-alpha image SDK

    docker gradle > Android Platform SDK license not accepted https://discuss.circleci.com/t/android-platform- -sdk- license-not-accepted/
  12. : images licenses accepted .circle/con g.yml run: yes | sdkmanager

    --licenses || exit run: yes | sdkmanager --update || exit https://discuss.circleci.com/t/android-platform- -sdk- license-not-accepted/ /
  13. https://speakerdeck.com/jmatsu/cd-based-on- droidkaigi- -app-e ae-fe - -b -e e fbaf d

    https://qiita.com/noboru_i/items/f b b d https://qiita.com/noboru_i/items/ ad c d b c eb b https://qiita.com/hkusu/items/e bd efa f http://tech.connehito.com/entry/danger https://techblog.lclco.com/entry/ / / /