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
Android開発においての自動化あれこれ
Search
Rui
November 20, 2024
510
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
330
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.4k
The SEO identity crisis: Don't let AI make you average
varn
0
550
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
690
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
880
Google's AI Overviews - The New Search
badams
0
1.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.7k
BBQ
matthewcrist
89
10k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
270
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Agile that works and the tools we love
rasmusluckow
331
22k
Visualization
eitanlees
152
17k
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