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
Android開発においての自動化あれこれ
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Rui
November 20, 2024
490
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Android開発においての自動化あれこれ
Rui
November 20, 2024
More Decks by Rui
See All by Rui
Protoファイルを使用しないProto DataStore実装
ruit
0
310
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
330
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
It's Worth the Effort
3n
188
29k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
610
Product Roadmaps are Hard
iamctodd
55
12k
Context Engineering - Making Every Token Count
addyosmani
9
1k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
350
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
550
Transcript
"OESPJE։ൃʹ͓͍ͯͷࣗಈԽ ͋Ε͜Ε 3VJ
3VJ OPUF "OESPJEΤϯδχΞ ,:050ϫούʔ͕ؾʹͳΔ
w ߦͳͬͨࣗಈԽ w ΠϯύΫτ͕͋ͬͨͷΛհͦͷ w ΠϯύΫτ͕͋ͬͨͷΛհͦͷ
ߦͳͬͨࣗಈԽ w ϦϦʔεϒϥϯν13࡞ɺ(PPHMF1MBZͷࣗಈΞοϓϩʔυ w ϦϦʔεϊʔτ13࡞ɺ4MBDL௨ w ,UMJOUνΣοΫ w 1VMM3FRVFTUʹMBCFMɺNJMFTUPOFɺBTTJHOFFΛࣗಈઃఆ w
1VMM3FRVFTUΛ"*ʹཁ
,UMJOUͱ w ,UMJOUɺ,PUMJOͷίʔυελΠϧΛνΣοΫ͠ɺࣗಈͰमਖ਼ͯ͘͠ΕΔπʔ ϧͰ͢ɻ w ,PUMJOͷίʔσΟϯάنͱ"OESPJE,PUMJOελΠϧΨΠυʹԊͬͯίʔυ Λܗ͠·͢ɻ ࢀরIUUQTQJOUFSFTUHJUIVCJPLUMJOUMBUFTU
,UMJOUͷࣗಈԽͰߦͳͬͨ͜ͱ w త13ʹ,UMJOUͰࢦఠ͞Εͨमਖ਼Օॴͷఏࣔ w ༻ͨ͠πʔϧ4QPUMFTTɺ3FWJFXEPH ࢀߟIUUQTRJJUBDPNUBLBIJSPNJUFNTBEF
,UMJOUͷࣗಈԽͰߦͳͬͨ͜ͱ name: ktLint-checker on: [ pull_request ] jobs: kotlin: name:
runner / suggester / spotless runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - run: ./gradlew ktlintFormat - run: ./gradlew spotlessKotlinApply - uses: reviewdog/action-suggester@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} tool_name: spotless w HJUIVCXPSL fl PXTLUMJOU DIFDLFSZNMͰ࡞͢Δ w TQPUMFTT,PUMJO"QQMZͰ,UMJOUʹԊ͏ Α͏ʹमਖ਼ͯ͠ɺSFWJFXEPXͰ TVHHFTUJPO͢Δ
,UMJOUͷࣗಈԽͰߦͳͬͨ͜ͱ tasks.register("ktlintFormat", JavaExec::class.java) { description = "Fix Kotlin code style
deviations." mainClass.set("com.pinterest.ktlint.Main") classpath = ktlint group = "formatting" args = listOf("-F", "src/**/*.kt") jvmArgs = listOf("--add-opens", "java.base/ java.lang=ALL-UNNAMED") } w TQPUMFTT,PUMJO"QQMZͷΈͩͱม ͯ͘͠Εͳ͍ͱ͜Ζ͕͋ͬͨͷͰɺ CVJMEHSBEMFLUTʹࣗ࡞Ͱ,UMJOUͰ ϑΥʔϚοτνΣοΫΛߦ͏ɻ
,UMJOUͷࣗಈԽͰߦͳͬͨ͜ͱ w 13Λ࡞ͨ͠ࡍʹɺ,UMJOUͷϑΥʔ ϚοτʹԊͬͨ4VHHFTUJPOΛͯ͘͠ ΕΔΑ͏ʹͳΓ·͢ɻ
,UMJOUͷࣗಈԽΛͯ͠Α͔ͬͨ͜ͱ w νʔϜͰͷίʔυελΠϧͷ౷Ұ w ίʔυ࣭ͷ্
(PPHMF1MBZͷࣗಈΞοϓϩʔυ w తϦϦʔεϒϥϯνʹίϛοτ͞ΕΔͨͼʹɺ(PPHMF1MBZͷࣗಈΞο ϓϩʔυ w ༻ͨ͠πʔϧ$JSDMF$*ɺ'BTUMBOF w ϦϦʔεϒϥϯνͷӡ༻εϓϦϯτຖͷ࣮͕ऴ͍ྃͯ͠Δஈ֊Ͱ࡞͠ ͯɺෆ۩߹मਖ਼͕͋ͬͨΒमਖ਼ΛؚΉɻ
$JSDMF$*ϑϩʔ
όʔδϣϯߋ৽ ৽ͨͳ $PNNJU WFSTJPO$PEF ߋ৽ $PNNJU WFSTJPO$PEF 6QMPBEUP (PPHMFQMBZ
όʔδϣϯίʔυΛߋ৽ - &update_version_code name: "commit & push update versionCode" command:
| git config user.email “
[email protected]
” git config user.name "note Android auto committer" git pull origin $(git branch --show-current) ./gradlew updateVersionCode git add note/app_version.properties git commit -m "[ci skip][auto commit] update to versionCode" git push origin HEAD w DJSDMFDJDPO fi HZNM w HJUDPO fi HͰϢʔβʔใΛઃఆ w $JSDMF$*ͷϏϧυ͕࠶ͼߦΘΕͳ͍ Α͏ʹ<DJTLJQ>Λ͚ͭΔ
όʔδϣϯίʔυΛߋ৽ // app_version.properties versionName=8.21.0 versionCode=366 // build.gradle.kts tasks.register("updateVersionCode") { doLast
{ val appVersionPropertyFile = "app_version.properties" val propertyKeyVersionCode = "versionCode" val propertyFile = file(appVersionPropertyFile) val props = loadProperties(propertyFile) val nextVersionCode = props.getProperty(propertyKeyVersionCode).toInt() + 1 props.setProperty(propertyKeyVersionCode, nextVersionCode.toString()) props.store(propertyFile.writer(), null) } } fun loadProperties(file: File): Properties { val props = Properties() file.inputStream().use { props.load(it) } return props } w BQQ@WFSTJPOQSPQFSUJFTʹόʔδϣ ϯίʔυΛఆٛ w #VJMEHSBEMFLUTͰ্هͷόʔδϣ ϯίʔυΛΠϯΫϦϝϯτ͢Δ
(PPHMF1MBZͷࣗಈΞοϓϩʔυ - &deploy_google_play_console name: "Deploy Google Play Console" command: |
bundle exec fastlane deploy w ࠷ޙʹGBTUMBOF༻ͯ͠ɺEFQMPZ͢ Δ
ࣗಈԽΛͯ͠Α͔ͬͨ͜ͱ w ϦϦʔεϒϥϯνΛ࡞͔ͯ͠Βɺίϛοτ͞ΕΔͨͼʹΞοϓϩʔυͯ͠ ͍ΔͷͰɺجຊతʹ৮Βͳ͍ͰΦοέʔ w ϦϦʔεपΓΛखಈͰΒͳ͍͍ͯ͘ͷͰɺਓతϛε͕গͳ͘ͳΔ w ݱࡏɺ4MBDLͷϫʔΫϑϩʔ͔Β;BQJFSΛ༻ͯ͠ɺϒϥϯνɺ13Λ࡞͠ ͯɺ(PPHMFQMBZͷΞοϓϩʔυɺ4MBDL௨·Ͱߦͳ͍ͬͯ·͢ɻ
5IBOLZPV