GitHub Enterprise Integration with AWS

GitHub Enterprise Integration with AWS

How COOKPAD uses GitHub Enterprise to build COOKPAD.

Cf7b553387b247d737c60cfceabb2cea?s=128

Naoto Takai

January 23, 2013
Tweet

Transcript

  1. GitHub Enterprise How COOKPAD uses GitHub Enterprise to build COOKPAD

     Integration with AWS
  2. Naoto Takai Cowboy Coder

  3. ghe-cleanup-repos

  4. We’re Hiring to make everyday cooking fun.

  5. 20M UU/month 1.3M recipes

  6. 10 deploys/day 4.4K pull reqs

  7. ✓Intel Core i7 2600K ✓16 GB Memory ✓80 licenses ✓300+

    repositories Github Enterprise VMWare ESXi Helper NAS +
  8. Before GitHub Enterprise era...

  9. We used Git with SSH Developer Git Server CI Server

    App Server 1. push 2. pull 3. tag 4. pull 5. deploy LAN AWS
  10. We does not use github.com for main project ‣Our security

    policy ‣Concerns about service availability
  11. ✗ Our code base is growing ✗ Hard to track

    changes in the code base ✗ Review was very hard (w/ Review Board)
  12. None
  13. We are using GitHub Enterprise since April 2012 but it

    was a bit difficult for our environments...
  14. Our servers are on AWS, but GitHub Enterprise does not

    work on it. ‣Need to communicate with the servers on AWS such as LDAP, SMTP, etc... ‣Need to access from external network. ‣Without changing deploy process
  15. Our servers are on AWS, but GitHub Enterprise does not

    work on it. ‣Need to communicate with the servers on AWS such as LDAP, SMTP, etc... ‣Need to access from external network. ‣Without changing deploy process
  16. GitHub Accessing AWS: LAN AWS LDAP SMTP

  17. GitHub Accessing AWS: LAN AWS DIRECT ACCESS LDAP SMTP

  18. GitHub LDAP SMTP Accessing AWS: LAN AWS Helper Gateway SSH

    Tunnel (autossh) GitHub Enterprise does not support SSH tunneling
  19. Our servers are on AWS, but GitHub Enterprise does not

    work on it. ‣Need to communicate with the servers on AWS such as LDAP, SMTP, etc... ‣Need to access from external network. ‣Without changing deploy process
  20. Access from External: LAN AWS GitHub Internet Developer Developer

  21. Access from External: LAN AWS GitHub Internet Developer Developer DIRECT

    ACCESS
  22. Developer Access from External: LAN AWS GitHub Gateway SSH Tunnel

    (autossh) Reverse Proxy Internet Developer Tips ‣ DNS lookup Helper
  23. Developer Access from External (SSH): LAN AWS GitHub Gateway SSH

    Tunnel (autossh) Internet Developer Tips: SSH con g hack Host github-enterprise Hostname gateway CheckHostIP no StrictHostKeyChecking no port 2222 Helper
  24. Our servers are on AWS, but GitHub Enterprise does not

    work on it. ‣Need to communicate with the servers on AWS such as LDAP, SMTP, etc... ‣Need to access from external network. ‣Without changing deploy process
  25. Developer Git Server CI Server App Server 1. push 2.

    pull 3. tag 4. pull 5. deploy LAN AWS Deploy Process (old):
  26. Deploy Process (new): Developer GitHub Gateway SSH Tunnel (autossh) CI

    Server Helper LAN AWS App Server Git Server 3. pull 4. tag 1. push 2. push 5. pull 6. deploy ✓We can deploy app even if GitHub Enterprise is down. ✓All commits are mirrored in the git server.
  27. Commit Mirroring: GitHub Git Server AWS LAN push

  28. Commit Mirroring: GitHub Git Server AWS LAN push DIRECT ACCESS

  29. Commit Mirroring: GitHub Git Server AWS LAN clone pusher service

    hook pull push
  30. require 'sinatra' require 'json' post '/update' do payload = JSON.parse(params[:payload])

    project = payload['repository']['name'] cmd = "cd #{project} " "&& git remote prune origin " + "&& git fetch -q " + "&& git push -q --mirror git-server" `#{cmd}` end
  31. Bonus: Chrome Extension

  32. Favicon Hack http://os0x.github.com/2012/04/16/favicon-on-canvas/

  33. Logo Hack

  34. cross-browser is still problem... We want to use “user JavaScript”

  35. We’re Hiring to make everyday cooking fun.