YUMEMI.grow Mobile #1 ( https://yumemi.connpass.com/event/272491/ ) の資料
Android ͷ CIʢGitHub ActionsʣͷվળͰɺ࠷ۙͬͨ͜ͱ2023.3.7 YUMEMI.grow Mobile #1Hiroyuki Kusu ( @hkusu_ )
View Slide
About me
1. ϓϧϦΫΤετʹΞϓϦΠϯετʔϧ༻ͷ QR ίʔυΛίϝϯτ
https://github.com/marketplace/actions/s3-upload-action
- uses: actions/checkout@v3- uses: actions/setup-java@v2with:java-version: 11distribution: 'zulu'- run: ./gradlew assembleDebug- uses: hkusu/s3-upload-action@v2id: uploadwith:aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}aws-region: 'ap-northeast-1'aws-bucket: ${{ secrets.AWS_BUCKET }}file-path: './app/build/outputs/apk/debug/app-debug.apk'output-file-url: 'true'content-type: 'application/vnd.android.package-archive'output-qr-url: ‘true'public: 'true'- ...͋ͱϚʔΫμϯܗࣜͷը૾ϦϯΫ  Λίϝϯτ͢ΕOK※ ͋Β͔͡Ί Amazon S3 ͷ bucket Λͻͱͭ༻ҙ͓ͯ͘͠ඞཁ͕͋Γ·͢apkϑΝΠϧμϯϩʔυ༻ͷHTTPϨεϙϯεϔομ
• ϨϏϡΞʔ͕खݩͷ࣮ػͰଈ࠲ʹಈ࡞ΛݟΔ͜ͱ͕Ͱ͖Δ• खݩͰίʔυΛνΣοΫΞτͯ͠Ϗϧυ͢Δख͕ؒͳ͍• Slack ϝʔϧͰͷ URL ͷ௨ͱҧ͍ɺͲͷϓϧϦΫΤετͷͲͷίϛοτʹରͯ͠Ϗϧυ͞ΕͨΞϓϦͳͷ͔͔Γ͍͢• ͨͩ public ͳ URL Ͱ͋ΔͷͰར༻γʔϯʹ͍ͭͯҙ• ར༻͢Δ߹Ͱ URL ʹ༗ޮظݶઃ͚͓͍ͯͨํ͕Α͍• S3 ͷϥΠϑαΠΫϧͷઃఆͰɺҰఆظؒͰ apk ϑΝΠϧΛࣗಈআ• ·ͨ S3 ͷ Presigned URL Λར༻ʢ͜ͷ Action ͷΦϓγϣϯͰར༻Մʣ• ༗ޮظݶ͕ΕͯϫʔΫϑϩʔΛ࠶࣮ߦ͢Ε QR ίʔυ࠶ੜ͞ΕΔ
2. larger runners ͷར༻
• runner Λز͔ͭ࡞ͬͯ group ʹͿΒԼ͛Δ• ୯ମͷ runner εέʔϧ͢Δ͕ɺ͍·ݱࡏεέʔϧʹ͕͔͔࣌ؒΔҝɺrunner Λͨ͘͞Μ࡞Δ͜ͱͰෳϫʔΫϑϩʔɾδϣϒ͔Βͷಉ࣌ར༻ʹඋ͑Δ
jobs:hoge:env:GRADLE_OPTS: ‘-Dorg.gradle.parallel=true -Dorg.gradle.jvmargs=-Xmx5120m'runs-on:group: android-ci-ubuntu-22.04steps:...࡞ͨ͠άϧʔϓΛࢦఆ• ڥม GRADLE_OPTS Ͱ Gradle ͷΦϓγϣϯΛࢦఆ• ΦϓγϣϯϓϩδΣΫτͷ Gradle ϑΝΠϧͰఆٛͯ͠Α͍͕ɺϩʔΧϧ։ൃͱ CIͰ͚ͨํ͕Αͦ͞͏ͳͷͰɺ͜ͷΑ͏ʹڥมͰࢦఆ͢Δͷ͕ศར• parallel ʹ͢Δ͜ͱͰɺlarger runners ͷ CPU ίΞΛ࠷େݶɺ׆༻ͤ͞Δ• larger runners ϝϞϦଟ͘ੵΜͰ͍ΔͷͰɺ5G Λࢦఆʢͬͱଟͯ͘Α͍͔ʣ
• ࠓճͷྫͰ 8 core ͷ runner Λར༻͍ͯ͠Δ͕ 4 core Ͱे͔͠Εͳ͍ʢ࠷େ 64 coreʣ• larger runers core ʹൺྫͨ͠՝ֹۚͱͳΔ͕ɺେͷ Gradle λεΫ core Λ 2 ഒʹ͔ͨ͠Βͱ͍͕ͬͯ 1/2 ʹͳΔ༁Ͱͳ͍• ίεύͱ͍͏ҙຯͰΑ͘ͳ͍• ྫ͑ϓϧϦΫ࣌ͷϫʔΫϑϩʔͳͲɺΛ༏ઌ͍ͨ͠߹ͷΈར༻͢Δͷ͕Αͦ͞͏• larger runners ແྉͷର֎ͳͷͰҙ
3. GradleϏϧυΩϟογϡͷར༻
jobs:hoge:env:GRADLE_OPTS: ‘-Dorg.gradle.daemon=false -Dorg.gradle.caching=true'runs-on: ubuntu-22.04steps:- uses: actions/checkout@v3- uses: actions/setup-java@v2with:java-version: 11distribution: 'zulu'- uses: actions/cache@v3with:path:|~/.gradle/caches~/.gradle/wrapper~/.android/build-cachekey: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', '**/buildSrc/**/*.kt', '**/libs.versions.toml') }}restore-keys: ${{ runner.os }}-gradle-- ...Gradle ͷϏϧυΩϟογϡΛ༗ޮԽactions/caches Λར༻͢ΔࡍσʔϞϯΛແޮԽ͓ͯ͘͜͠ͱ͍ͭͰʹ Android ͷϏϧυΩϟογϡར༻Gradle ͷϏϧυΩϟογϡґଘϥΠϒϥϦͷΩϟογϡͱڞʹ͜ͷσΟϨΫτϦԼʹؚ·ΕΔ
• CI ͰޮՌΛಘΔͷ͍͠ʁฐࣾͰେ͖ͳޮՌײ͡ΒΕͳ͔ͬͨ• ಉ͡ίʔυ͔ͭಉ͡ Gradle λεΫΛ୯७ʹ࠶࣮ߦ͢Δ໘Ͱ͔ͨ͠ʹ͍• ͨͩ CI ͰΩϟογϡͨ࣌͠ͱར༻͢Δ࣌Ͱίʔυ͕มԽ͍ͯ͠Δ͜ͱ͕ຆͲ• ࣮ߦ͍ͨ͠ Gradle λεΫຖ·ͨશ෦ೖΓͷΩϟογϡΛ༻ҙ͓ͯ͘͠ͷ͕͍͠• GitHub ͰΩϟογϡτʔλϧ 10 G ·Ͱͱ͍͏੍ݶ͋Δ• ϩʔΧϧ։ൃ࣌ͱҧ͍ɺ։ൃͰੵΈ্͕ͬͨΩϟογϡ͕ར༻Ͱ͖Δ༁Ͱͳ͍• ͱ͍͑େ͖ͳσϝϦοτແ͍ͷͰɺؾ࣋ͪఔʹಋೖ͓͍ͯͯ͠Αͦ͞͏• σϝϦοτΩϟογϡαΠζ͕গ͠େ͖͘ͳΔ͙Β͍ʁ• Ұճͷ Gradle λεΫͰ͋ͬͯɺλεΫ࣮ߦதͷՌͷ࠶ར༻͕ߦΘΕΔ
4. ࣦഊͨ͠ςετίʔυʹίϝϯτ͢Δ
https://speakerdeck.com/hkusu/github-actions-deyunitutotesutofalsejie-guo-worepotosuru
5. ϫʔΫϑϩʔͷڞ௨Խ
https://speakerdeck.com/hkusu/custom-github-actions-wozuo-tute-organization-nei-degong-you-suru
Thank you !@hkusu_ฐࣾ Android ΤϯδχΞΛ ઈࢍืूத Ͱ͢ʂ