Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CircleCIを使ったAndroidの開発フローの効率化とtips
Search
ymnder
May 28, 2019
Technology
1.5k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CircleCIを使ったAndroidの開発フローの効率化とtips
CircleCI ユーザーコミュニティミートアップ #4 2019/5/28 @ymnd
https://circleci.connpass.com/event/125622/
ymnder
May 28, 2019
More Decks by ymnder
See All by ymnder
What’s new in Google Play's billing system
ymnder
1
440
Deep Linksをはじめよう
ymnder
0
540
Introduction to Wear OS Application Development
ymnder
0
630
Introduction to new features of Google Play Billing
ymnder
2
380
運用から学ぶPlay Billing Library
ymnder
2
810
What’s new in Google Play Billing v1.2
ymnder
0
800
詳解定期購入
ymnder
7
6.9k
社内向けライブラリを設計・運用する話
ymnder
0
1.2k
What’s new in Google Play Billing
ymnder
2
2.3k
Other Decks in Technology
See All in Technology
Flutter Widget Previewerで始めるUIプレビューとVRTの自動化
sakusaku3939
0
180
cdk deployとcdkd deploy、実際にデプロイして5倍速近くの差を実測した
yama3133
1
130
Agent × Maestro で始める モバイル E2E 端末準備からテスト実行・結果確認まで
sansantech
PRO
0
240
Autonomous AI Lakehouse - Live AI Hubから始めるセキュアなAIデータ活用 -
oracle4engineer
PRO
2
180
バイブコーディングの特徴と「コケて直す」ループ
happysamurai294
0
130
Lint の層を組み直した話
bengo4com
2
250
AX時代の自治体支援リソース再配分と役割分担の再構成:戦略とロードマップ(概要)
sishi2026
0
130
re:Inventで、人生は変わったのか? / growth-builders-hub-1-reinvent-2026
mhrtech
2
170
Deep Data Security 機能解説
oracle4engineer
PRO
3
970
基本から分かる!AWSセキュリティ運用の考え方と任せ方
cmusudakeisuke
1
260
OneLakeをデータソースにした AI Search(Foundry IQ)の ライフサイクル管理
ryuseiiida
0
200
自律的なチームを作るためにTechPMがやらないこと
ny7760
0
260
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
96
14k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
Between Models and Reality
mayunak
4
530
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
360
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Thoughts on Productivity
jonyablonski
76
5.4k
How to train your dragon (web standard)
notwaldorf
96
6.9k
Unsuck your backbone
ammeep
672
58k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
590
We Have a Design System, Now What?
morganepeng
55
8.4k
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
Transcript
CircleCI Android tips CircleCI #4 2019/5/28 @ymnd
whoami twitter:@ymnd, GitHub:@ymnder Application Engineer Android Android : https://riconken.bitbucket.io/hifumi/
Circle CI . CI Private repository Danger CI CI
CircleCI . 2018 CircleCI . v . 15 push waiting
v . ~ ↗↗↗
[CI] local -> GitHub -> CircleCI [CD] local -> Fabric
Beta
CircleCI CD gradle Beta CD QA apk 1.0 master apk
CircleCI A: UnitTest gradle-git-repo-plugin B: Danger
CircleCI private repository
CircleCI private repository private CircleCI UnitTest submodule gradle-git-repo-plugin
submodule git submodule update init
gradle-git-repo-plugin private private aar git clone ~/.gitRepos/ ~/.gitRepos/ https://qiita.com/kgmyshin/items/ f
c c fbd https://qiita.com/shimada_takuya/items/ e b ae f ad a
gradle-git-repo-plugin fork grgit GitHub https://blog.github.com/ - - -weak-cryptographic- standards-removed/
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') { }
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
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
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)
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
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
gradle-git-repo-plugin Circle CI repository clone ssh_con g clone
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
gradle-git-repo-plugin Circle CI Test gradle -Po ine git-repo-plugin GitHub private
repository
Danger (Ruby) CI Pull Requests
Danger plugin issue issue Milestone WIP Lint
Danger APK https://github.com/jmatsu/danger-apkstats
Danger Gem le gem install bundle bundle init Gem le
# Gemfile gem 'danger' gem 'danger-android_lint' gem 'danger-apkstats'
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)
Danger android_lint. ltering lint https://github.com/loadsmart/danger-android_lint/blob/ c bf b aa c
b a a bd af /lib/ android_lint/plugin.rb#L
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
Danger GitHub Personal access tokens https://github.com/settings/tokens Private repository [repo] bot
CircleCI Environment Variables DANGER_GITHUB_API_TOKEN
Danger PR
CI Danger library permission CD 策 internal app sharing
: 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/
: 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/ /
: images licenses accepted release circleci/android:api- X alpha images
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/ / / /