Slide 1

Slide 1 text

GitHub ActionsͷΧελϜΞΫγϣϯΛެ։͢Δ 2023.12.14 YORIFUJI MITSUNORI

Slide 2

Slide 2 text

ࣗݾ঺հ • YORIFUJI MITSUNORI • @yorifuji on X / GitHub / Zenn • ۚ༥ܥελʔτΞοϓͷiOSΤϯδχΞ

Slide 3

Slide 3 text

ࠓ೔ͷൃද͸ͪ͜ΒͷهࣄΛϕʔεʹͨ͠಺༰ʹͳΓ·͢ https://zenn.dev/yorifuji/articles/feec2c0294c7f9

Slide 4

Slide 4 text

GitHub Actions https://github.co.jp/features/actions

Slide 5

Slide 5 text

GitHub ActionsͰFlutterͷ ੩తղੳΛ࣮ߦ͢ΔϫʔΫ ϑϩʔͷྫʢyamlϑΝΠ ϧʣ name: check on: pull_request permissions: contents: read jobs: analysis: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: subosito/flutter-action@v2 - run: flutter pub get - run: flutter analyze

Slide 6

Slide 6 text

ࠓճ͸ϫʔΫϑϩʔͷ࡞Γ ํͰ͸ͳ͘ɺϫʔΫϑϩʔ Ͱར༻͢ΔΞΫγϣϯΛ࡞ ੒͢Δ࿩ name: check on: pull_request permissions: contents: read jobs: analysis: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: subosito/flutter-action@v2 - run: flutter pub get - run: flutter analyze

Slide 7

Slide 7 text

ࢲ͕࡞੒ɾެ։ͨ͠ΞΫγϣϯ͸ͪ͜Β☝ https://github.com/marketplace/actions/ fl utter-analyze-commenter

Slide 8

Slide 8 text

CIʢ੩తղੳʣ͕ࣦഊͨ࣌͠ʹϩάͷ಺༰Λ֬ೝ͢Δͷ͸໘౗

Slide 9

Slide 9 text

Flutterͷιʔείʔυͷ੩తղੳͷ ݁ՌΛPull RequestʹϨϏϡʔίϝ ϯτͱͯ͠ॻ͖ࠐΉΞΫγϣϯΛ࡞ ੒͠·ͨ͠

Slide 10

Slide 10 text

࢖͍ํ͸ϫʔΫϑϩʔʹ ΞΫγϣϯΛ௥Ճ͢Δͩ ͚ name: flutter-analyze-commenter example on: pull_request permissions: contents: read pull-requests: write jobs: analysis: runs-on: ubuntu-latest steps: ... - run: flutter analyze --write=flutter_analyze.log - uses: yorifuji/flutter-analyze-commenter@v1 if: ${{ !cancelled() }} with: analyze_log: flutter_analyze.log

Slide 11

Slide 11 text

ݩʑ͸ผͷπʔϧΛར༻͍ͯͨ͠ • Problem MatchersͱDangerΛ૊Έ߹Θͤͯಉ༷ͷ࡞ۀΛߦͳ͍ͬͯͨ • ҎԼͷ఺͕ෆຬ • 2ͭπʔϧͰίϝϯτͷϑΥʔϚοτͷڍಈʹҧ͍͕͋Δ • ϫʔΫϑϩʔͷଞʹ΋ϑΝΠϧͷ഑ஔͳͲͷηοτΞοϓ͕ඞཁ • Danger͸ߴػೳͰଟ༻్Ͱ͋Δ൓໘ɺRubyͷґଘϥΠϒϥϦͷΠϯε τʔϧ͕ඞཁɺΦʔόʔεϖοΫʹײ͍ͯͨ͡

Slide 12

Slide 12 text

࡞੒ͨ͠ΞΫγϣϯ΁ͷ৐Γ׵͑Ͱ࡟আͰ͖ͨϑΝΠϧɾϫʔΫϑϩʔͷهड़

Slide 13

Slide 13 text

ΞΫγϣϯΛ࡞ͬͯެ։͢Δํ๏

Slide 14

Slide 14 text

GitHub Marketplace • GitHubެࣜɾOSSͷGitHub Apps΍ΞΫγϣϯ͕ެ։͞Ε͍ͯΔ • ୳ͤ͹ඞཁͳ΋ͷ͸େମ͋Δ • Ϩϐϡςʔγϣϯʢ⭐ʣ͕গͳ͍ϚΠφʔͳActionΛར༻͢Δͱ͖͸ ηΩϡϦςΟϦεΫͳͲʹ஫ҙ

Slide 15

Slide 15 text

MarketplaceʹΞΫγϣϯΛొ࿥͢Δखॱ • ͜Ε͚ͩ • GitHubʹpublic repositoryΛ࡞੒ • ΞΫγϣϯͷఆٛΛॻ͍ͨaction.ymlΛ࡞੒ • ΧελϜΞΫγϣϯͷॲཧΛ࣮૷ • GitHub্ͰReleaseΛ࡞੒ͯ͠ެ։ • ৄ͍͠खॱ͸ͪ͜Β • https://docs.github.com/ja/actions/creating-actions/publishing-actions-in-github- marketplace

Slide 16

Slide 16 text

action.yml ͷهड़ྫʢ࣮ࡍͷΞΫγϣϯ͔Βൈਮʣ name: "Flutter Analyze Commenter" description: "Auto comment on PRs based on Flutter Analyze results" inputs: analyze_log: description: "Path to the Flutter analyze log" required: true runs: using: composite steps: - uses: actions/github-script@v7 env: ANALYZE_LOG: ${{ inputs.analyze_log }} VERBOSE: ${{ inputs.verbose }} with: script: | const analyzeLog = process.env.ANALYZE_LOG; ...

Slide 17

Slide 17 text

ΧελϜΞΫγϣϯͷ࣮૷ํ๏ • Docker ίϯςφʔ ΞΫγϣϯ • ίϯςφΛ࢖࣮ͬͯߦ؀ڥΛύοέʔδԽ͢Δํࣜ • ඞཁͳπʔϧ΍ґଘؔ܎ΛίϯςφͰ؅ཧͰ͖ΔͷͰҰ؏ੑͱ৴པੑΛ୲อ͠΍͍͢ • ݱঢ়͸Linuxʢubuntuʣ ͷϥϯφʔͰͷΈར༻Ͱ͖ΔʢmacOS΍Windows͸ར༻ෆՄʣ • JavaScript ΞΫγϣϯ • Node.jsΛ࢖ͬͯJavaScriptͷίʔυΛ࣮ߦ͢ΔΞΫγϣϯ • TypeScriptͰͷ։ൃ΋Մೳʢ࠷ऴతʹJavaScript͕ੜ੒Ͱ͖ΔͳΒͳΜͰ΋ྑ͍ʣɺෳࡶͳ࣮૷Λ͢ΔͳΒ͓͢͢Ί • ෳ߹ΞΫγϣϯʢComosite Actionʣ • ීஈ࢖͍ͬͯΔϫʔΫϑϩʔ͔ΒॲཧΛ੾Γग़͢Πϝʔδ • γΣϧεΫϦϓτͰͷ࣮૷͕جຊ • uses: ͕ར༻ՄೳͳͷͰ௨ৗͷΞΫγϣϯ΋ར༻Ͱ͖Δ

Slide 18

Slide 18 text

actions/github-script // ྫɿhello world - uses: actions/github-script@v7 with: script: console.log('Hello, JavaScript') // ྫɿGithubͷREST APIΛ࢖ͬͯIssueΛऔಘ - uses: actions/github-script@v7 with: script: | github.rest.issues.get({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, }) • ෳ߹ΞΫγϣϯͰJavaScriptΛ࢖ͬͨॲ ཧΛهड़Ͱ͖ΔΞΫγϣϯ

Slide 19

Slide 19 text

࡞੒ͨ͠ΧελϜΞΫγϣϯͷ࣮૷ৄࡉ • Flutterͷ੩తղੳͷग़ྗ಺༰ʢςΩετʣΛղੳͯ͠ϑΝΠϧ໊ɺߦ൪߸ɺ ϝοηʔδʢܯࠂʣͳͲΛऔಘ͢Δ • ϑΝΠϧ໊ɾߦ൪߸ɾϝοηʔδΛ΋ͱʹGitHubͷREST APIΛ࢖ͬͯPRʹ ରͯ͠ॻ͖ࠐΉ • PRʹରͯ͠मਖ਼ʢ௥Ճʣίϛοτ͕ൃੜͨ͠Βݹ͘ͳͬͨʢOutdatedͳʣ ίϝϯτΛߋ৽ or ࡟আ • PR͔ΒίϝϯτΛશ݅औಘͯ͠࠷৽ͷ੩తղੳͷ݁Ռͱಥ߹

Slide 20

Slide 20 text

ϦϦʔε࡞ۀ • ։ൃ͕ऴΘͬͨΒGitHub্ͰReleaseΛ ࡞੒͢Δ • ϦϙδτϦͷτοϓʹaction.yml͕ଘࡏ ͢ΔͱΞΫγϣϯઐ༻ͷReleaseը໘͕ දࣔ͞ΕΔ • Marketplace΁ͷpublishΛࢦఆͰ͖Δ • ymlهड़಺༰ɺREADMEͷνΣοΫ

Slide 21

Slide 21 text

ެ։🎉

Slide 22

Slide 22 text

͋Γ͕ͱ͏͍͟͝·ͨ͠