Slide 1

Slide 1 text

Yarn + CI + GitHub Ͱ௅Ή npm ύοέʔδͷఆظߋ৽ 2018-03-09 / Gotanda.js #10 @wadackel

Slide 2

Slide 2 text

ࣗݾ঺հ @wadackel / ΘͩͭΑ͠ tsuyoshiwada https://blog.wadackel.me • ΠϯλʔωοτͰ྘ͷŘŕŭ΍͍ͬͯ·͢ • ࠓ೥1݄ʹ CyberAgent, Inc ʹೖࣾ͠·ͨ͠ • Web ϑϩϯτΤϯδχΞʹͳΓ·ͨ͠ • ࠷ۙ Go ָ͕͍͠

Slide 3

Slide 3 text

ࠓ೔͓࿩͢Δ͜ͱ • Greenkeeper ͸ศརʂ͔͠͠… • npm ύοέʔδͱ๻ୡͷઓ͍ • ࣮ࡍʹӡ༻ͯ͠Έͯ • ·ͱΊ

Slide 4

Slide 4 text

೔ʑߋ৽͞Εଓ͚Δ npm ύοέʔδͱ օ͞Μ͸Ͳ͏ઓ͍ͬͯ·͔͢ʁ

Slide 5

Slide 5 text

Greenkeeper https://greenkeeper.io

Slide 6

Slide 6 text

Greenkeeper ͸ศར • ࣗಈͰ npm ύοέʔδͷߋ৽Λͯ͘͠ΕΔ • ߋ৽࣌ʹςετΛ࣮ߦ͠ɺύοέʔδߋ৽ʹΑͬͯίʔυ͕յΕ͍ͯͳ ͍͔ݕূͯ͘͠ΕΔ • ߋ৽ޙʹ PR ·Ͱग़ͯ͘͠ΕΔݡ͍΍ͭ • ࢖͍ͬͯΔϓϩδΣΫτ΋ଟ͍

Slide 7

Slide 7 text

“͔͠͠ɺສೳͳ෺ͳͲଘࡏ͠ͳ͔ͬͨ…”

Slide 8

Slide 8 text

༷ʑͳཧ༝͸͋Δͱࢥ͍·͕͢… • όʔδϣϯΞοϓʹΑͬͯܰඍͳमਖ਼͕ඞཁʹͳΔ͜ͱ͕ଟ͍
 (Linter ܥͩͱݦஶ) • ςετͷ଍Γ͍ͯͳ͍෦෼͸ݕग़ෆՄɻ࣮ࡍʹίʔυ͕յΕ͍ͯͯ΋ ؾ෇͚ͳ͍৔߹͕͋Δ… • 2018-03-09࣌఺Ͱ͸ Yarn Workspaces ʹະରԠ
 https://github.com/greenkeeperio/greenkeeper/issues/139

Slide 9

Slide 9 text

ͦ͜Ͱ…

Slide 10

Slide 10 text

ͪ͜Βͷهࣄ http://developer.hatenastaff.com/entry/2017/06/06/163000

Slide 11

Slide 11 text

yarn-outdated-formatter • $ yarn outdated ͷ݁Ռʹ CHANGELOG ΁ͷϦϯΫΛ෇͚ͯ͘ΕΔ • ݁Ռ͸ Markdown ΍ JSON Ͱड͚औΕΔ • CHANGELOG ͷࢀরͰɺมߋՕॴ͕೺ѲͰ͖Δͱ… • Assignee ͱ Reviewer ͷෛ୲͕ܰݮͰ͖ͯօϋοϐʔ • هࣄதͰ͸1ϲ݄͓͖ʹʮΞοϓσʔτσʔʯΛઃ͚͍ͯΔͱͷ͜ͱ

Slide 12

Slide 12 text

΋ͬͱศརʹ࢖͍͍ͨ

Slide 13

Slide 13 text

yarn-outdated-formatter ͷ ݁ՌΛ GitHub Issue ΁ ఆظతʹ௨஌͢Δͱ΋ͬͱϋοϐʔ

Slide 14

Slide 14 text

ͱ͍͏Θ͚Ͱ… yarn-outdated-formatter ͷ݁ՌΛ GitHub Issue ΁ʮ͍͍ײ͡ʯʹ௨஌͠ ͯ͘ΕΔ؆୯ͳπʔϧΛ࡞ͬͨ yarn-outdated-notifier https://github.com/tsuyoshiwada/yarn-outdated-notifier

Slide 15

Slide 15 text

yarn-outdated-notifier yarn-outdated-formatter ͷ݁ՌΛ GitHub ͷ Personal access tokens Λ ࢖ͬͯ Issue ΁௨஌ͯ͘͠ΕΔ $ yarn outdated-notifier \ --api-token \ --labels \ --assignees \ --changelogs ./changelogs.yml

Slide 16

Slide 16 text

࣮ࡍʹ௨஌͞ΕΔ Issue ͸͜Μͳײ͡ ※௨஌͞ΕΔ಺༰͸ Handlebars ͷςϯϓϨʔτͰมߋͰ͖Δ

Slide 17

Slide 17 text

yarn-outdated-notifier ͸ ௨஌ػೳ͚ͩΛ࣋ͭ ఆظతͳ௨஌͸ CI ͷ cron Λ࢖͏ͱָ

Slide 18

Slide 18 text

CircleCI with yarn-outdated-notifier

Slide 19

Slide 19 text

# GITHUB_API_TOKEN ͸ Environment Variables ʹ௥Ճ͓ͯ͘͠ job: notify_outdated: docker: - image: circleci/node:9.3 working_directory: ~/repo steps: - checkout - yarn - run: yarn outdated-notifier --api-token $GITHUB_API_TOKEN ௨஌༻ͷ job Λ࡞Δ

Slide 20

Slide 20 text

# workflows Ͱઌఔ࡞ͬͨ `job` Λݺͼग़͢ # ҎԼ͸ɺ೔ຊ࣌ؒͷຖि༵ۚ೔ޕલ10:00ʹ௨஌ॲཧΛ։࢝͢Δྫ workflows: version: 2 notifications: jobs: - notify_outdated triggers: cron: “0 1 * * 5” filters: branches: only: - master cron Ͱ job Λݺͼग़͢

Slide 21

Slide 21 text

ఆظతʹ npm ύοέʔδΛ ߋ৽͢Δ౔৕͸੔ͬͨ

Slide 22

Slide 22 text

࣮ࡍʹӡ༻ͯ͠Έͯ

Slide 23

Slide 23 text

िҰͷߋ৽࡞ۀ͕ྑͦ͞͏ • ݄Ұͩͱɺґଘ͢Δύοέʔδ͕ଟ͍৔߹ʹߋ৽͕ඃΔ • ࡞ۀස౓͕ଟ͚Ε͹ɺҰ౓ʹൃੜ͢Δߋ৽࡞ۀͷෛ୲͕ܰݮ͞ΕΔ • ͨͩ͠ɺଟ͗͢Δͷ͸ਏ͍ɻिҰ͘Β͍͕ஸ౓͍͍ • िҰ͕͠ΜͲ͍ or ύοέʔδ͕গͳ͘ඞཁੑ͕ബ͍ͳΒִिͰ΋OK

Slide 24

Slide 24 text

ߋ৽࡞ۀͷ࣌ؒ͸͋Δఔ౓Ͱ۠੾Δ • ຖि࡞ۀ͸ߦ͏ͷͰɺޕલத΍2࣌ؒ౳ɺ۠੾Γͷྑ͍࣌ؒͰ۠੾Δ • ͦͷ࣌ؒʹऩ·Βͳͦ͏ͳύοέʔδ͸ผ్ Issue Λ੾ͬͯ࡞ۀʹऔΓ ֻ͔Δ • ϓϩμΫτͷՁ஋ʹ௚݁͢Δ΋ͷʹ͸ɺ૬Ԡͷ࿑ྗΛֻ͚Α͏ • ྫ) ʮwebpack v4.x ग़ͨ͠ɺ࢖͍౗ͯ͠ΈΔ͔ʔʂʂʯ౳

Slide 25

Slide 25 text

CI ͱ Yarn ͚ͩͰಋೖͰ͖Δͷ͸खܰ • Greenkeeper ͳͲͷ֎෦αʔϏεΛಋೖ͢Δͱ؅ཧର৅͕૿͑ͯखؒ • CI ͸ΈΜͳ࢖ͬͯΔ͠ (࢖ͬͯΔΑͶ??) ɺಋೖোน͕௿͍ • CircleCI Λྫʹग़͚ͨ͠Ͳɺେ൒ͷ CI ͸ cron ࣋ͬͯΔ

Slide 26

Slide 26 text

Assignee ͷઃఆ͸ݕ౼͕ඞཁ • ʮnpm ύοέʔδߋ৽େ޷͖ʯͱ͍͏حಛͳํ͕͍Ε͹Ұ೚ • ͦ͏Ͱͳ͚Ε͹ɺ୲౰ϝϯόʔͰϩʔςʔγϣϯ • ຢ͸ϥϯμϜʹ Assignee ΛׂΓৼΓ (๻ͷνʔϜ͸͜ΕΛ࠾༻)

Slide 27

Slide 27 text

·ͱΊ

Slide 28

Slide 28 text

• ໪࿦ʮ͜Εܾͧఆ൛ʂʯͱ͍͏ํ๏Ͱ͸ͳ͍ • ֤νʔϜʹ͋ͬͨ޲͖߹͍ํΛ໛ࡧ͠ • npm ύοέʔδͷߋ৽ͱటष͘ઓ͏ඞཁ͕͋Δ • ͥͻօ͞Μͷઓ͍ํΛڭ͍͑ͯͩ͘͞ʂ

Slide 29

Slide 29 text

ྑ͍ CHANGELOG ͸ॏཁ (એ఻) • Go ੡ͷ CHANGELOG δΣωϨʔλΛ࡞ͬͨ
 https://github.com/git-chglog/git-chglog • CHANGELOG ͸ੵۃతʹ࡞͍ͬͯ͜͏

Slide 30

Slide 30 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠