Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitHub Actionsはどのような未来を描くのか

Takafumi Ikeda
February 14, 2019

GitHub Actionsはどのような未来を描くのか

GitHub Actionsはどのような未来を描くのか : コンテナ技術が開くワークフローのOSS化
昨年10月に、コンテナ技術をベースとした新しい機能、GitHub Actionsを発表しました。ソフトウェア開発がモダンに便利になっていく中で、実は多くの開発者が開発ワークフローの構築や設定に多くの時間を費やしているという現状があります。
GitHub Actionsは、コンテナ技術をうまく利用し、世界中の皆がワークフローに関わる問題を解決できることを目指して作られています。
本セッションでは、GitHub Actionsのデモを交えながら、GitHub Actionsをどのように利用できるのか、また新しいActionをどうやって作れるのか、またワークフローの開発そのものもプルリクエストベースで行えるということが何を意味するのか、明らかにしていきます。
その上で、GitHub Actionsによって我々開発者の世界がどう変わっていくのか、未来をお見せします。

Takafumi Ikeda

February 14, 2019
Tweet

More Decks by Takafumi Ikeda

Other Decks in Technology

Transcript

  1. View Slide

  2. GitHub Actions
    2019/02/14
    ikeike443
    Solutions Engineer, GitHub
    14-A-2
    #devsumiA

    View Slide

  3. a ikeike443
    Takafumi Ikeda
    Solutions Engineer

    View Slide

  4. 2008
    GitHub introduced…

    View Slide

  5. Pull Request

    View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. ϫʔΫϑϩʔ͸ϞδϡϥʔԽ͞ΕΔ΂͖

    View Slide

  12. Actions

    View Slide

  13. Actions

    View Slide

  14. View Slide

  15. workflow "My Workflow" {
    on = "event"
    resolves = ["Action 2", "Action 3"]
    }
    action "Action 1" {
    uses = "user/repo@master"
    runs = "command"
    }
    action "Action 2" {
    uses = "docker://node:10-alpine"
    runs = "command"
    }
    action "Action 3" {
    needs = ["Action 1"]
    uses = ".github/actions/private.js"
    runs = "command"
    }

    View Slide

  16. View Slide

  17. check_run
    check_suite
    commit_comment
    create
    delete
    deployment
    deployment_status
    26
    available events

    View Slide

  18. project_column
    public
    pull_request
    pull_request_review_comment
    pull_request_review
    push
    repository_dispatch
    release

    status
    watch
    26
    available events

    View Slide

  19. GitHub Actionsͱ͸
    • ίϯςφٕज़ϕʔε
    • ϫʔΫϑϩʔ as Code
    • ϫʔΫϑϩʔͷϞδϡϥʔԽɺ࠶ར༻
    • Pull Requestʹଓ͘ਐԽͷ৮ഔ

    View Slide

  20. View Slide

  21. σϞ
    ࣮ࡍʹActionͱWorkflowΛ࡞ͬͯΈΑ͏ʂ

    View Slide

  22. Hello world

    View Slide

  23. खॱ
    • ActionΛ֨ೲ͢ΔϦϙδτϦΛ࡞੒
    • ActionΛDockerfileͱͯ͠ఆٛ
    • ΤϯτϦʔϙΠϯτͱͳΔγΣϧεΫϦϓτΛఆٛ
    • ఆٛͨ͠ActionΛݺͼग़͢ϫʔΫϑϩʔΛఆٛ
    • ࣮ߦ

    View Slide

  24. ϦϙδτϦͷ༻ҙ

    View Slide

  25. Hello World Actionͷఆٛ

    View Slide

  26. ΤϯτϦʔϙΠϯτγΣϧεΫϦϓτ

    View Slide

  27. View Slide

  28. View Slide

  29. Closer look
    ࠓݟͨ΋ͷͷղઆΛ͔Ͷͯ

    View Slide

  30. ݱঢ়ͷ࢓༷ɺ੍ݶͳͲ
    • ϫʔΫϑϩʔͷ࣮ߦ࣌ؒ͸Max58෼
    • ϫʔΫϑϩʔ1ͭʹ͖ͭΞΫγϣϯ͸100ݸ·Ͱݺͼग़͠Մೳ
    • 1ϑΝΠϧ಺ʹෳ਺ϫʔΫϑϩʔΛఆٛՄೳ͕ͩɺฒྻ࣮ߦ͞ΕΔͷ͸1Ϧ
    ϙ͋ͨΓ2ͭ·Ͱ
    • ΞΫγϣϯ͸ଞͷϫʔΫϑϩʔΛτϦΨʔͰ͖ͳ͍
    • APIίʔϧ͸1ϦϙδτϦ͋ͨΓτʔλϧͰ1࣌ؒ1000ճ·Ͱ

    View Slide

  31. ݱঢ়ͷ࢓༷ɺ੍ݶͳͲ
    • ϓϩμΫγϣϯͷSecretΛ֨ೲ͠ͳ͍͜ͱʢϕʔλத
    ͸ϩάʹͦͷ··ग़·͢ʣ
    • Action͸DockerfileͳͷͰDockerͰͰ͖Δ͜ͱ͸͍ͨͯ
    ͍Ͱ͖Δ͕ɺ੍ݶ͋Γ

    View Slide

  32. ݱঢ়ͷ࢓༷ɺ੍ݶͳͲ
    • Action࣮ߦ؀ڥʹ͍ͭͯ
    • 1 vcpu, 3.75 GB RAM
    • ωοτϫʔΫΞΫηεՄೳ
    • ϑΝΠϧγεςϜ΁ͷΞΫηεՄೳ
    • σΟεΫεϖʔε 100GB
    • ϫʔΫϑϩʔ಺Ͱڞ༗ͯ͠ΞΫηεͰ͖Δ
    • ؀ڥม਺ͷҾ͖౉͠Մೳ
    • ؀ڥม਺͸ϫʔΫϑϩʔ͝ͱͷίϯςΩετͰղऍ͞ΕΔ
    • GitHubʹΑͬͯ༧໿͞Ε͍ͯΔ؀ڥม਺͋Γ

    View Slide

  33. ݱঢ়ͷ࢓༷ɺ੍ݶͳͲ
    • Action࣮ߦ؀ڥʹ͍ͭͯ
    • Exit status:
    • 0: Success: ޙଓͷAction࣮ߦ
    • 78: Neutral: ޙଓ͸࣮ߦ͞Εͳ͍͕ɺCheck Suite͸Success͠ಘΔ
    • ্هҎ֎: Failure: ॲཧετοϓɺCheck Suite΋Fail

    View Slide

  34. υΩϡϝϯτΛਵ࣌ࢀরͷ͜ͱ
    • ϕʔλதͷͨΊɺͲΜͲΜ௥ه͞Ε͍ͯ·͢

    View Slide

  35. EKS΁ͷσϓϩΠ
    ίϯςφϕʔεσϓϩΠΛ࣮ࡍʹ૊ΜͰΈΑ͏

    View Slide

  36. actions/exmaple-aws
    https://github.com/actions/example-aws

    View Slide

  37. ϫʔΫϑϩʔͷΠϝʔδ
    • ϑΟʔνϟʔϒϥϯνͷ৔߹
    • Docker buildͯ͠ର৅αΠτͷDockerΠϝʔδΛ࡞੒
    • ࡞ͬͨΠϝʔδΛTag͚ͮ
    • ΠϝʔδΛDockerϨδετϦʢECRʣʹϓογϡɺొ࿥
    • ϓογϡͷલʹECR΁ϩάΠϯ͓ͯ͘͠

    View Slide

  38. ϫʔΫϑϩʔͷΠϝʔδ
    • Masterϒϥϯνͷ৔߹
    • લड़ʹՃ͑ͯɺ
    • k8sͷConfigΛΞοϓσʔτ (aws eks update-kubeconfig ͢Δ)
    • k8sͷΫϨσϯγϟϧΛઃఆ
    • ECRʹ֨ೲ͞Ε͍ͯΔΠϝʔδΛɺEKS΁σϓϩΠ
    • σϓϩΠ͞Εͨ͜ͱͷ֬ೝ
    • Expose͞ΕͨIPΞυϨεΛϦετ

    View Slide

  39. ࢖͏Action
    • DockerϏϧυɺϓογϡ
    • Docker Tag
    • ECR, EKSͷૢ࡞
    • ϒϥϯνϑΟϧλ
    • EKS΁ͷσϓϩΠ: kubectlϦύοέʔδ൛

    View Slide

  40. ϦϙδτϦߏ੒
    kubectlͷϦύοέʔδ൛
    aws-iam-authenticatorΛ௥Ճ͍ͯ͠Δ
    WorkflowϑΝΠϧ
    σϓϩΠର৅ΛϏϧυ͢ΔͨΊͷDockerfile
    k8sͷconfig.yml
    σϓϩΠର৅ͷWebαΠτ

    View Slide

  41. View Slide

  42. View Slide

  43. View Slide

  44. View Slide

  45. View Slide

  46. View Slide

  47. View Slide

  48. View Slide

  49. View Slide

  50. Callback?

    View Slide

  51. Repository Dispatch
    • ֎͔Β೚ҙʹτϦΨʔͰ͖ΔΠϕϯτ
    • ௕͍δϣϒͳͲΛ֎෦Ͱ࣮ߦɺOKͳΒ͜ͷΠϕϯτΛ
    ൃՐɺͳͲͷ࢖͍ํ͕Մೳ

    View Slide

  52. View Slide

  53. ͦͷ΄͔ͷΠϕϯτ
    • gollumʢWikiʣ
    • Vulnerability
    • Projectؔ࿈
    • Issue/Label/Milestoneؔ࿈
    • 26छྨ͋ΔΑ

    View Slide

  54. ActionΛ࡞Δͷ͸؆୯
    • جຊతʹ͸طଘͷπʔϧΛίϯςφԽ͢Δ͚ͩ
    • ͖Ε͍ʹ෦඼Խ͢Ε͹࠶ར༻͸͔ͳΓޮ͖΍͍͢

    View Slide

  55. ศརͳAction
    ͙͢ʹ໾ཱͪͦ͏ͳActionΛ঺հ

    View Slide

  56. ֤छΫϥ΢υActions
    • GCP, AWS, Azure, Heroku, Zeit, npm
    • https://github.com/actions ҎԼʹ͋Γ·͢

    View Slide

  57. actions/bin
    • جຊతͳ΋ͷΛఏڙ
    • bats
    • curl
    • debug
    • filter
    • sh
    • shellcheck

    View Slide

  58. HTTP client
    • HTTPie ϥούʔ
    • MarketplaceͰೖखՄ

    View Slide

  59. Add an issue reference
    • ϒϥϯν໊͔ΒIssueΛ
    ୳͠ग़ͯ͠ΫϩεϦϯΫ

    View Slide

  60. All in one project
    • Issue/PRΛৗʹProject΁
    ௥Ճ

    View Slide

  61. Delete merged branch
    • ϚʔδࡁΈϒϥϯν࡟আ
    • Probot app/ActionsͲͪΒ
    Ͱ΋ར༻Մೳ

    View Slide

  62. Ϧιʔε
    ͜ͷ΁ΜݟͯΈͯͶ

    View Slide

  63. https://github.com/actions

    View Slide

  64. GitHub Marketplace

    View Slide

  65. https://github.com/sdras/awesome-actions

    View Slide

  66. Community Forum
    https://github.community/t5/tag/actions/tg-p/board-id/api

    View Slide

  67. ·ͱΊ
    GitHub Actions͕ݟΔະདྷ

    View Slide

  68. ϫʔΫϑϩʔ͸ࣗ༝ʹͳΔ
    • ϫʔΫϑϩʔ͸ϞδϡϥʔԽ͞Ε
    • OSSͱͯ͠օͰ࡞Γ্͍͛ͯ͘΋ͷʹͳΔͰ͠ΐ͏
    • ιϑτ΢ΣΞ։ൃͷੈքʹ৽͍͠1ϖʔδΛ
    • Έͳ͞ΜͷࢀՃΛ଴͍ͬͯ·͢ʂ

    View Slide

  69. View Slide

  70. View Slide

  71. 8
    https://github.co.jp 1

    View Slide