Slide 1

Slide 1 text

Custom GitHub Actions Λ࡞ͬͯ Organization ಺Ͱڞ༗͢Δ 2022.4.28 YUMEMI.apk #6 Android DevOps WG ( ϫʔΩϯάɾάϧʔϓ ) Hiroyuki Kusu ( @hkusu_ )

Slide 2

Slide 2 text

About me

Slide 3

Slide 3 text

5000ສਓͷΈΜͳ͕஌ͬͯΔ͋ͷαʔϏεɺ ΏΊΈ͕Ұॹʹ࡞ͬͯ·͢ɻ େखاۀ΍ٸ੒௕ελʔτΞοϓͱڞ૑ܕͰWeb/εϚϗͷαʔϏε࡞Γ΍಺੡ԽࢧԉΛߦ͍ͬͯ·͢ɻ ʲΤϯδχΞ͕࠷΋੒௕Ͱ͖ΔձࣾNO.1ʳΛ໨ඪʹͨ͠ɺΞδϟΠϧ૊৫ͱͯ͠ઌ୺Λ૸ΔΤϯδχΞूஂͰ͢ɻ

Slide 4

Slide 4 text

- name: Check ou t uses: actions/checkout@v 3 - name: Set up JD K uses: actions/setup-java@v 2 with : distribution: 'zulu ' java-version: 1 1 cache: 'gradle ' - name: Buil d run: ./gradlew assembleDebug Gradleͷґଘؔ܎ΛΩϟογϡ͢Δػೳ͸ҰԠ͋Δ͕.. actions/setup-java Android ΞϓϦΛϏϧυ͢ΔϫʔΫϑϩʔͷྫ

Slide 5

Slide 5 text

buildSrc ΍ Android ͷόʔδϣϯΧλϩά͸ߟྀ͍ͯ͠ͳͦ͏..

Slide 6

Slide 6 text

- name: Set up JD K uses: actions/setup-java@v 2 with : distribution: 'zulu ' java-version: 1 1 - name: Restore gradle cach e uses: actions/cache@v 3 with : path: | ~/.gradle/cache s ~/.gradle/wrappe r key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', 'buildSrc/src/*', '**/libs.versions.toml') } } restore-keys: | ${{ runner.os }}-gradle- ௕͍͠ར༻Օॴ΋ଟ͍.. Ͱ͖Ε͹ଞͷϫʔΫϑϩʔ΍ ଞͷϦϙδτϦͱڞ༗͍ͨ͠ʂ actions/cache ͰରԠ

Slide 7

Slide 7 text

https://docs.github.com/ja/actions/creating-actions/about-custom-actions Custom GitHub Actions

Slide 8

Slide 8 text

• Custom Actions ͸ public ϦϙδτϦͰ͋Δඞཁ͕͋Δ • Actions ͷίʔυΛखݩʹ clone ͯ͠ར༻͢Δख΋͋Δ͕ɺͦͷҝ ͷτʔΫϯ͕ผ్ ඞཁͩ͠ɺԿΑΓ΍΍͍͜͠..

Slide 9

Slide 9 text

https://github.blog/changelog/2022-01-21-share-github-actions-within-your-enterprise/ ※ GitHub ͷܖ໿ϓϥϯ΍ Organization ͷϙϦγʔʹΑͬͯར༻Ͱ͖ͳ͍͔΋ͳͷͰ஫ҙ͍ͩ͘͞ Organization ͷ internal ϦϙδτϦ͕ར༻Ͱ͖ΔΑ͏ʹʂ

Slide 10

Slide 10 text

internal ϦϙδτϦͰ࡞੒

Slide 11

Slide 11 text

name: 'Setup Java for Android ' description: 'Set up Java for Android and also cache Gradle dependencies. ’ inputs : distribution : description: 'Java distribution. Default is `zulu`. ' required: fals e default: 'zulu ' java-version : description: 'Java version. Default is `11`. ' required: fals e default: '11 ' skip-cache : description: 'Whether to skip cache restores and pushes. Default is `false`. ' required: fals e default: 'false ' outputs : cache-hit : description: 'A boolean value to indicate an exact match was found for the primary key. ' value: ${{ steps.cache.outputs.cache-hit } } runs : using: 'composite ' steps : - name: Set up JDK uses: actions/setup-java@v 2 with : distribution: ${{ inputs.distribution } } java-version: ${{ inputs.java-version } } - name: Restore gradle cach e if: inputs.skip-cache != 'true ' id: cach e uses: actions/cache@v3 with : path: | ~/.gradle/cache s ~/.gradle/wrappe r key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', 'buildSrc/src/*', '**/libs.versions.toml') } } restore-keys: | ${{ runner.os }}-gradle - ΦϓγϣϯͰڍಈΛมߋͰ͖ΔΑ͏ʹ

Slide 12

Slide 12 text

- name: Set up JD K uses: actions/setup-java@v 2 with : distribution: 'zulu ' java-version: 1 1 - name: Restore gradle cach e uses: actions/cache@v 3 with : path: | ~/.gradle/cache s ~/.gradle/wrappe r key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', 'buildSrc/src/*', '**/libs.versions.toml') } } restore-keys: | ${{ runner.os }}-gradle- - name: Set up Jav a uses: yumemi/setup-java-for-android@v1 ద༻ޙ ద༻લ

Slide 13

Slide 13 text

ͦͷଞ ΍͓͍ͬͯͨํ͕Α͍͜ͱ

Slide 14

Slide 14 text

name: Cache Generatio n on : push : branches: # σϑΥϧτϒϥϯν΍ओͨΔϚʔδઌϒϥϯν܊Λࢦఆ - mai n - develop * jobs : generate : name: Generat e runs-on: ubuntu-20.0 4 steps : - name: Check ou t uses: actions/checkout@v 3 - name: Set up Jav a id: cach e uses: yumemi/setup-java-for-android@v 1 - name: Download dependencie s if: steps.cache.outputs.cache-hit != 'true ' run: ./gradlew androidDependencies Ϛʔδઌͷϒϥϯν΍σϑΥϧτϒϥϯνͰΩϟογϡΛ࡞͓ͬͯ͘ ϓϦϦΫΤετͰ Gradle ͷΩϟογϡΛར༻͍ͨ͠৔߹ ϓϧϦΫͷHEADϒϥϯνʹΩϟογϡ͕ແ͍৔߹ɺ ϓϧϦΫͷBASEϒϥϯν -> σϑΥϧτϒϥϯνͷॱ ͰΩϟογϡ͕ݕࡧ͞ΕΔɻ ௨ৗ͸ίʔυͷ௥Ճϓογϡ࣌ͷΈར༻Ͱ͖ΔΩϟγϡ͕ɺ ϓϧϦΫͷ৽نΦʔϓϯ࣌ʹ΋ར༻Ͱ͖ΔΑ͏ʹͳΔɻ

Slide 15

Slide 15 text

֤ϦϙδτϦͰར༻͢ΔτʔΫϯΛڞ༗ Organization secrets

Slide 16

Slide 16 text

https://speakerdeck.com/hkusu/cd ͬͪ͜ͷεϥΠυ΋ΈͯͶ

Slide 17

Slide 17 text

Thank you ! @hkusu_ ฐࣾ͸ Android ΤϯδχΞΛ ઈࢍืूத Ͱ͢ʂ