Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CircleCIを使ったAndroidの開発フローの効率化とtips
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ymnder
May 28, 2019
Technology
1.4k
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
420
Deep Linksをはじめよう
ymnder
0
510
Introduction to Wear OS Application Development
ymnder
0
610
Introduction to new features of Google Play Billing
ymnder
2
360
運用から学ぶPlay Billing Library
ymnder
2
800
What’s new in Google Play Billing v1.2
ymnder
0
780
詳解定期購入
ymnder
7
6.8k
社内向けライブラリを設計・運用する話
ymnder
0
1.2k
What’s new in Google Play Billing
ymnder
2
2.3k
Other Decks in Technology
See All in Technology
壊して学ぶAWS CDK: そのcdk deployで消えるもの、残るもの
k_adachi_01
1
420
AI Driven AI Governance
pict3
0
490
公式ドキュメントの歩き方etc
coco_se
1
120
AICoEでAIネイティブ組織への進化
yukiogawa
0
200
2年前に削除したPHPクラスが、 ある日突然決済をエラーにした
ykagano
1
420
ヘルスケア領域における AI 活用と その安全性担保のための取り組み (Leveraging AI in Healthcare and Our Efforts to Ensure Its Safety) - Google I/O Extended Tokyo 2026, July 11, 2026
zettaittenani
0
430
OpenTelemetryにおけるGoのゼロコード・コンパイル時計装について #fukuokago
quiver
0
120
カードゲーム作りが教えてくれた プロダクトオーナーシップ
moritamasami
0
110
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
SRE本の知られざる名シーン / The Hidden Gems of Google SRE Book
nari_ex
1
420
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
2
570
凡エンジニアがこの先生きのこるためには。〜TypeScript完全に理解したい〜
alchemy1115
2
310
Featured
See All Featured
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
180
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
310
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
320
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.6k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
RailsConf 2023
tenderlove
30
1.5k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
180
New Earth Scene 8
popppiees
3
2.4k
Visualization
eitanlees
152
17k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
WENDY [Excerpt]
tessaabrams
11
38k
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/ / / /