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

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

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

5df67047ff8dd67c1f3b7e0f9b48c2ee?s=128

Takafumi Ikeda

February 14, 2019
Tweet

Transcript

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

  3. a ikeike443 Takafumi Ikeda Solutions Engineer

  4. 2008 GitHub introduced…

  5. Pull Request

  6. None
  7. None
  8. None
  9. None
  10. None
  11. ϫʔΫϑϩʔ͸ϞδϡϥʔԽ͞ΕΔ΂͖

  12. Actions

  13. Actions

  14. None
  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" }
  16. None
  17. check_run check_suite commit_comment create delete deployment deployment_status 26 available events

  18. project_column public pull_request pull_request_review_comment pull_request_review push repository_dispatch release
 status watch

    26 available events
  19. GitHub Actionsͱ͸ • ίϯςφٕज़ϕʔε • ϫʔΫϑϩʔ as Code • ϫʔΫϑϩʔͷϞδϡϥʔԽɺ࠶ར༻

    • Pull Requestʹଓ͘ਐԽͷ৮ഔ
  20. None
  21. σϞ ࣮ࡍʹActionͱWorkflowΛ࡞ͬͯΈΑ͏ʂ

  22. Hello world

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

    ࣮ߦ
  24. ϦϙδτϦͷ༻ҙ

  25. Hello World Actionͷఆٛ

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

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

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

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

  32. ݱঢ়ͷ࢓༷ɺ੍ݶͳͲ • Action࣮ߦ؀ڥʹ͍ͭͯ • 1 vcpu, 3.75 GB RAM •

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

    • 78: Neutral: ޙଓ͸࣮ߦ͞Εͳ͍͕ɺCheck Suite͸Success͠ಘΔ • ্هҎ֎: Failure: ॲཧετοϓɺCheck Suite΋Fail
  34. υΩϡϝϯτΛਵ࣌ࢀরͷ͜ͱ • ϕʔλதͷͨΊɺͲΜͲΜ௥ه͞Ε͍ͯ·͢

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

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

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

    • ϓογϡͷલʹECR΁ϩάΠϯ͓ͯ͘͠
  38. ϫʔΫϑϩʔͷΠϝʔδ • Masterϒϥϯνͷ৔߹ • લड़ʹՃ͑ͯɺ • k8sͷConfigΛΞοϓσʔτ (aws eks update-kubeconfig

    ͢Δ) • k8sͷΫϨσϯγϟϧΛઃఆ • ECRʹ֨ೲ͞Ε͍ͯΔΠϝʔδΛɺEKS΁σϓϩΠ • σϓϩΠ͞Εͨ͜ͱͷ֬ೝ • Expose͞ΕͨIPΞυϨεΛϦετ
  39. ࢖͏Action • DockerϏϧυɺϓογϡ • Docker Tag • ECR, EKSͷૢ࡞ •

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

  41. None
  42. None
  43. None
  44. None
  45. None
  46. None
  47. None
  48. None
  49. None
  50. Callback?

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

  52. None
  53. ͦͷ΄͔ͷΠϕϯτ • gollumʢWikiʣ • Vulnerability • Projectؔ࿈ • Issue/Label/Milestoneؔ࿈ •

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

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

  56. ֤छΫϥ΢υActions • GCP, AWS, Azure, Heroku, Zeit, npm • https://github.com/actions

    ҎԼʹ͋Γ·͢
  57. actions/bin • جຊతͳ΋ͷΛఏڙ • bats • curl • debug •

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

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

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

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

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

  63. https://github.com/actions

  64. GitHub Marketplace

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

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

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

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

  69. None
  70. None
  71. 8 https://github.co.jp 1