GitHub Constellation Tokyo https://githubuniverse.com/constellation/
Where software is builtޮՌతʹGitHubΛ͏ͨΊʹ@ikeike443
View Slide
!Where software is builtWho am I?2a ikeike443
#Where software is built#$3TAKAFUMI IKEDASOLUTIONS ENGINEERWho am I?
Where software is built%Agenda4•͓٬༷ʹڞ௨͢Δ՝•։ൃϑϩʔߏஙͷͨΊͷιϦϡʔγϣϯ•ҙ֎ͱΒΕ͍ͯͳ͍Tips•·ͱΊ%
How people build software%ڞ௨͢Δ՝5• OrgΛ͚͗͢ɺϓϩδΣΫτຖɺ෦ॺຖʹαΠϩԽ͍ͯ͠Δ• CI·Ͱख͕ճΒͳ͍ɺϏϧυखॱ͕ҰఆͰͳ͍• Pull RequestΛ͏·͑͘ͳ͍ɺϚʔδʹۤ࿑͢Δ• νʔϜͷशख़ʹΒ͖͕ͭ͋Δ• Φʔϓϯʹ͍͕ͨ͠ɺಉ࣌ʹ҆શੑ୲อ͍ͨ͠
How people build software%ຊ6• Org/Teamͷਖ਼͍͍͜͠ͳ͠ํ• GitHub FlowͷԠ༻ɺपลػೳͷ͍ํ• ͦͷଞɺϑϩʔߏஙʹཱͭҙ֎ͱΒΕ͍ͯͳ͍ػೳͷհ
How people build softwareOrganizationͱTeam࠷ॳʹऔΓΉ͖͜͜7%
How people build software%8
How people build software%9
How people build software%OrganizationΛ͚͗͢Δ10• Α͋͘Δࣄྫ:• ෦ॺ͝ͱʹOrgΛ͚Δʢ৫ߏͱҰகͤ͞Α͏ͱ͢Δʣ• ϓϩδΣΫτ͕࢝·ΔͨͼʹOrgΛ͚Δ• 200Ҏ্ͷOrg͕͋Δྫ
How people build software%Org͕ଟ͍ͱى͖Δ11• @mentionOrgΛԣஅͯ͠ಧ͔ͳ͍ͨΊɺαΠϩԽ• ϝϯόʔ͕૿͑ΔͨͼʹOrgͷՃ࡞ۀ͕ൃੜ
How people build software%OrgΛগͳ͘ɺTeamΛଟ͘12• OrgΛͰ͖ΔݶΓগͳ͘͠ɺݟ௨͠ΛΑ͘• TeamΛͬͯݖݶཧΛࡉ͘ઃఆ͢Δ͜ͱ• LDAP Team SyncΛ͏·͍͘ɺϝϯςΛݮ
How people build software%OrgΛগͳ͘͢Δͱෆ҆13• ಁ໌ԽʹΑΔϝϦοτͱɺෆҙͷใ࿙͍͑ͷؒͰΉ
How people build software%ಁ໌Խͷ༷ʑͳྫ14• ͯ͢Φʔϓϯ• GitHub.comΛͬͨOSSӡӦ• ࣾͯ͢Φʔϓϯɺࣾ֎ʹΫϩʔζ• GitHub.com Business Plan Hosted• GHEʹͯPublic Modeӡ༻• ࣾһʹΦʔϓϯʹɺύʔτφʔʹ੍ݶΛೖΕ͍ͨ• ز͔ͭͷύλʔϯ
How people build software%GitHubͰͰ͖Δݖݶཧ15• GHEͷPublic/Private Mode• GHEͷΈɺΠϯελϯεશମͷՄࢹੑΛઃఆՄೳ
How people build software%GitHubͰͰ͖Δݖݶཧ16• OrgͷDefault Permission• ϝϯόʔͷσϑΥϧτݖݶʹ͍ͭͯ4ͭͷҟͳΔઃఆ͕Մೳ
How people build software%ࣾһʹΦʔϓϯɺύʔτφʔʹ੍ݶ17• Α͋͘Δχʔζ• ࣾһͱύʔτφʔͰݖݶΛ͚͍ͨ• ύʔτφʔʹಛఆͷϦϙδτϦҎ֎ҰӾཡ͢Βڐͨ͘͠ͳ͍
How people build software%ࣾһʹΦʔϓϯɺύʔτφʔʹ੍ݶʢ̍ʣ18• OrgΛ͚Δ• OrgΛ͚ɺશϦϙδτϦΛPrivateʹ͢Δ• ࣾһͱύʔτφʔͰ࡞ΔͷɺݟΔͷ͕શʹผͷ߹ʹ༗ޮ• ྆ऀͷίϥϘϨʔγϣϯΛॏࢹ͠ͳ͍έʔε
How people build software%ࣾһʹΦʔϓϯɺύʔτφʔʹ੍ݶʢ̎ʣ19• ίϥϘϨʔλΛ͏·͘׆༻͢Δ• ࣾһ͚ͩͷOrgΛ࡞ΓɺύʔτφʔΛೖΕͳ͍• ύʔτφʔͷڠྗ͕ඞཁͳϦϙδτϦʹରͯ͠ɺݸผʹίϥϘϨʔλͱͯ͠Ճ
How people build software%ࣾһʹΦʔϓϯɺύʔτφʔʹ੍ݶʢ̏ʣ20• OrgͷσϑΥϧτઃఆΛNoneʹ͢Δ• ࣾһύʔτφʔಉ͡Orgʹॴଐ͠ɺTeamͰ͚ΔΠϝʔδ• σϑΥϧτͰҰPrivateϦϙδτϦΛݟΔ͜ͱ͕Ͱ͖ͳ͘ͳΔ• ύʔτφʔTeamΛݸผʹϦϙδτϦʹՃ͢Δ͜ͱͰݖݶཧ• ͨͩ͠ɺࣾһTeamݸผʹՃ͢Δඞཁ͋Γɺগ͠ࡶ
How people build software%Org/Team ·ͱΊ21• OrgΛগͳ͘ɺTeamΛଟ͘• @mentionOrgΛ·ͨ͛ͳ͍• OrgͷDefault Permission, Private ModeΛ͍͜ͳ͢• Outside Collaborator֎෦ύʔτʔφʔʹ࠷ద
How people build software%Org/Team Tips22• TeamΛ৫ߏͱҰகͤ͞Δඞཁͳ͍• Java Specialists, Security, SQL, Managers, Designers, …• ઐੑؔ৺ࣄͰάϧʔϐϯά͢Δ͜ͱେม༗ޮ• See also: https://github.com/blog/2316-organize-your-experts-with-ad-hoc-teams
How people build software%Org/Team Tips23• OrgΛू͢Δͱ• ϦϙδτϦͷ͕େʹͳΓ୳͢ͷ͕େมʁ
How people build software%Org/Team Tips24• Topics• ϦϙδτϦͷλά͚͕Մೳɺݕࡧʹ͑Δ• GHE2.10ΑΓ
How people build software%Org/Team Tips25• Pinned Repositories• දతͳϦϙδτϦઌ಄ʹషΓ͚͓͚ͯΔ
How people build software%ੜͷ Org/Team ྫ26
How people build softwareGitHub Flowͯ͢ͷجຊͰ͢27%
How people build software%GitHub Flow28
Create a Feature Branch
Add commits
Open a Pull Request
Discuss and Review Code
How people build software%ίʔυϨϏϡʔ33
%%hubot
How people build software%Hubot35
How people build software%CI status Λ PR ʹ͢36
Ship
How people build software%Deployment API38
Merge with master
How people build software%40
How people build software%Α͋͘Δޡղ41• ϚʔδલʹσϓϩΠͳΜͯͰ͖ͳ͍͔Βҧ͏ϑϩʔʹ• GitHub FlowWeb։ൃҎ֎ʹ͑ͳ͍• Git-Flow͕େن։ൃʹ͍͍ͯΔ
How people build software%ϙΠϯτ42• ੜଘظؒͷ͍ϒϥϯνΛݮΒ͢͜ͱ• ཧతʹMasterҰຊͷΈ• Pull RequestϒϥϯνͰ͖Δ͚ͩૣ͘Ϛʔδ͢Δ• ҰͭҰͭͷมߋΛখ͘͞• ϑΟʔνϟʔϑϥάͳͲ༗ޮʹ͏• Ϛʔδͨ͠Β͙͢ʹফ͢
How people build software%ෳͷϒϥϯν͕ඞཁ43• ͦΕͧΕͷϒϥϯνʹରͯ͠GitHub Flow͕ՄೳOpen a Pull RequestOpen a Pull Request
How people build software%ෳͷϒϥϯν͕ඞཁ44• ϒϥϯν͕ଟ͍΄ͲBack Portͷ͕૿͑ɺෳࡶԽ• ϒϥϯνΛݮΒ͢Α͏ʹ͢Δ͜ͱ͕ॏཁ
How people build software%λάͰସͰ͖ͳ͍͔ߟ͑ͯΈΔ45• ग़ՙόʔδϣϯɺίʔυϑϦʔζɺQAظ͕ؒඞཁͰ͋ΕɺλάͰସͰ͖ͳ͍͔• ඞཁ͕ੜͨ͡ͱ͖ͷΈϒϥϯνΛ࡞ΓɺऴΘͬͨΒফ͢• ͜͜Ͱෳόʔδϣϯ͕ಉ࣌ʹଘࡏ͢ΔͱෳࡶʹͳΔ͜ͱʹҙv0.1.prev0.1.pre.2v0.1v0.2.pre
How people build software%GitHub Flow·ͱΊ46• GitHub FlowԠ༻Մೳ• ظؒϒϥϯνͷΛͰ͖Δ͚ͩݮΒ͢• λάΛ༗ޮ׆༻͢Δ
How people build softwarePull Requestपลͷศརͳػೳ͞·͟·ͳϫʔΫϑϩʔΛՄೳʹ47%
How people build software%ศརͳػೳ48• Revert• Blame• Update Branch• Conflictͷղফ• ֤छϚʔδΦϓγϣϯ• ForkઌͷฤूڐՄ• etc
How people build software%Revert49
how software is built%Revert50ຊޠԽͨ͠ ςετमਖ਼ؔͷͳ͍मਖ਼ REVERTPull RequestPull Request͕ؔ࿈͢ΔίϛοτΛ͍ͬͯΔ
how software is built%Blame51
the best way to build and ship software%52Web UI͔ΒͷConflictղফ
How people build softwareProtected Branchesॊೈ͔ͭηΩϡΞͳϫʔΫϑϩʔߏஙΛՄೳʹ53%
How people build software%Protected Branches54• ༷ʑͳܗͰϒϥϯνΛอޢ• Delete, Push -f ͷېࢭ• ϨϏϡʔͷඞਢԽ• CIͳͲεςʔλενΣοΫ• ϚʔδՄೳͳਓ/TeamΛ੍ݶ
How people build softwareͦͷଞͷศརػೳࡉ͔͗ͯ͢ΘΒͳ͍ػೳ55%
How people build software%ҙ֎ͱΒΕ͍ͯͳ͍ػೳ܈56• Release• Pre-Receive Hooks (GHE Only)• ͞·͟·ͳRenderingΦϓγϣϯ• SVN Bridge• git-import
How people build software%Release57• Tagʹؔ࿈͚ͯΞηοτςΩετΛཧͰ͖Δ
How people build software%Pre Receive Hooks58• GHE only͕ͩɺαʔόαΠυͷPre Receive Hook͕ॻ͚Δ• ใ࿙͍͑νΣοΫɺPGP伴ͷνΣοΫͳͲͳͲʹ• ηΩϡϦςΟ্ͷݒ೦Λ༧తʹνΣοΫͰ͖Δ• ࣗͷ͖ͳϥΠϒϥϦɺݴޠΛΠϯετʔϧՄೳ• Chroot, DockerରԠ• جຊతʹͳΜͰͰ͖ΔͷͰӡ༻ʹҙ͕ඞཁ
How people build software%༷ʑͳϨϯμϦϯά59• ը૾• PDF• GeoJson• Jupyternootbook• STL• CSV/TSV• Markdown• etc
How people build software%༷ʑͳϨϯμϦϯά: STL60
How people build software%༷ʑͳϨϯμϦϯά: CSV/TSV61
How people build software%SVN Bridge62• GitHubͷΫϥΠΞϯτͱͯ͠SVNΛར༻Մೳ
How people build software%git-import63• ༷ʑͳVCS͔ΒͷҠߦΛαϙʔτ
How people build software%·ͱΊ64• Org/TeamΛΓɺ্खʹ͍͜ͳͦ͏• GitHub Flow༷ʑͳܗͰԠ༻Մೳ• Protected BranchesΛ࢝ΊɺػೳΛΓɺ։ൃϑϩʔΛߏங͠Α͏• ࢼߦࡨޡ͠ɺࣗ͝ʹͱͬͯͷ࠷దղΛݟग़ͦ͏
How people build softwareThank you!
How people build softwareQuestions?