Successfully reported this slideshow.

Get Hooked on Integrations with GitHub

1

Share

Upcoming SlideShare
You Broke It, You Bought It
You Broke It, You Bought It
Loading in …3
×
1 of 30
1 of 30

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

Get Hooked on Integrations with GitHub

  1. 1. Get Hooked on Integrations With GitHub Christopher Thomas HighEdWeb 2016 10/17/2016
  2. 2. #DPA2
  3. 3. Intro » What is Git? » What is Github? » GitHub Integrations » GitHub Webhooks » Webhook usage at Loma Linda University » Summary » Resources » Questions
  4. 4. About Me: Christopher Thomas » Responsible for tools and technologies used to develop web apps at Loma Linda University » For many years, active in the web community through contributions » SoCal born and raised! » Marathon runner
  5. 5. About Loma Linda University (LLU) » Location: 1 hour from Los Angeles » Students: 4,500+ » Programs: 100+ » Schools: 8 » Ownership: Privately owned by the Seventh-Day-Adventist Church » Mission: “To continue the teaching and healing ministry of Jesus Christ” » Other facts: ~ Institution mainly focused on health sciences at the graduate level ~ City of Loma Linda is the only Blue Zone in the country ~ No mascot, but “Good Samaritan” statue is an unofficial proxy ~ Institution is a part of a 6 hospital 1,000+ bed health system
  6. 6. What is Git? » Source code version control » Developed by Linus Torvalds, the creator of Linux » Distributed » Full history of commits are in each copy of the repository » Users can make commits without being connected to the network » Can work without a main/central repository
  7. 7. What is GitHub? » A git server / git repository hosting site » Has arguably the best web based UI of all git server solutions » Easily allows users to share code and to collaborate » Largest git repository hosting site » Comes in two versions ~ Cloud based (github.com) ~ On premise, VM appliance (GitHub Enterprise)
  8. 8. What are Integrations and Webhooks? » Events in GitHub are broadcasted » Integrations are predefined event broadcasts to a specific vendor solution » Webhooks are user setup HTTP requests
  9. 9. Types of Events » Fork » Branch » Issues (opened, closed, comments, assigned) » Push » Team (add, edit memberships, delete, etc..) » Merge
  10. 10. Integrations » GitHub has over 70 predefined integrations » Lots of popular apps and services are on the list » Very little configuration needed to set up » Not all events are broadcasted for each integration » GitHub.com calls them integrations, GitHub Enterprise calls them services
  11. 11. Integrations » Project Management ~ JIRA » Continuous Integration ~ TravisCI ~ Jenkins / Hudson (plugin needed) » Communication ~ #Slack ~ HipChat » Other
  12. 12. Your Integration / Vendor Service Not on List? » Options: ~ Integrations Early Access Program ~ Webhooks
  13. 13. Integrations Early Access Program » Used to be able to submit a Pull Request to submit an integration » Process recently changed to the integrations early access program » More formal process » Inclusion requirements more clearly stated than in the past
  14. 14. Webhooks
  15. 15. Webhooks » Best when the integration you need can’t be handled by something in the integrations directory or eligible for the integrations early access program; when you need a custom integration » GitHub sends a HTTP POST request to a specified URL » POST body contains data about the event in either JSON or form data format » Can set up via settings webpage or via GitHub’s API » Can trigger webhook for all events or certain type of events
  16. 16. Case study Webhooks usage at Loma Linda University
  17. 17. Administrative Systems Department » Consists of roughly two dozen people with a mixture of programmer / business / application analysts and managers. » “We write the programs that run the University” » Develop mostly for the web using PHP for an in-house developed platform » Everyone in department has ability to push code to production
  18. 18. MyLLU Portal » Web portal that serves the entire enterprise » Dozens of apps » 100,000s of lines of PHP code » Two instances of portal (internal vs external apps) » Types of apps: ~ Admissions committee tools ~ Collaboration tools ~ Finance tools ~ Identity management tools ~ Job board ~ Student forms workflow processing ~ Training requirements tracker
  19. 19. Developer Workflow » Initial steps: ~ Developer forks main repository ~ Clones repo in their account ~ Adds main repository as a remote (upstream) » Development steps: ~ Create feature branch and push to origin, if working with others ~ Make code changes ~ Test on local VM ~ Commit Changes ~ Merge Changes back to master ~ Push master to upstream
  20. 20. MyLLU Deployment Process » Before Git / GitHub ~ Developers would FTP files to production servers ~ Sometimes process would take minuets if code was in separate directories ~ Potential app downtime while code is copied to servers » After Git / GitHub ~ Webhook used to initiate code deployment ~ Code copied to servers in seconds ~ Minimized potential app downtime while code is copied
  21. 21. MyLLU Deployment Process » Developer pushes code (upstream) to repository in our GitHub Enterprise instance » GitHub triggers the webhook, which contacts the intermediate server » Intermediate server pulls changes from GitHub to a local repo » Intermediate pushes code from local repo to production web servers » Intermediate server sends notice to all developers with commits in the push that their changes have been published
  22. 22. MyLLU Deployment Process
  23. 23. Intermediate Server » Had to do for network policy reasons (not necessary in most enviroments) » Dedicated account used to process GitHub webhook » Must create SSH key pair so server can pull code from GitHub Enterprise and push code to production servers » Add newly created public key to GitHub as a deploy key
  24. 24. Deploy Key
  25. 25. Production Servers » Process based on Evanto Tuts+ article “Setting Up A Staging Environment” » Have a separate account just for the webhook process » SSH keys so intermediate server can connect » Two git repos ~ Bare repo in git process home repo ~ Regular repo in the webroot
  26. 26. Summary » GitHub was built to integrate with other systems » Many predefined integrations for lots of vendor systems » Can ask for new intergration to be added through a formal process » Custom integrations can be done through webhooks » Loma Linda has leveraged webhooks to deploy code to its portal platform
  27. 27. Resources » GitHub Integrations Directory ~ https://github.com/integrations » GitHub Early Access Integrations ~ https://developer.github.com/early-access/integrations/ » Setting Up a Staging Environment ~ https://code.tutsplus.com/articles/setting-up-a-staging-environment--net-29738 » Webhooks API Docs ~ https://developer.github.com/v3/repos/hooks/
  28. 28. Questions
  29. 29. #DPA2

Editor's Notes

  • Thank you ladies and gentleman for joining us for the second presentation of the day.
  • Check out Brian’s presentation latter on today
  • Over the years, it has grown into the largest git repository hosting site. The ease of use probably helped it get there. Comes in two flavors; Cloud and on-prem.
    The cloud based solution, github.com, free to use, as long as your repositories are publically available. If you want private repos, then you must pay a fee.
    The on-prem solution cost money. Universities can procure it for substantial discount, for administrative purposes, and possibly free for academic purposes.
  • Only the events that make sense for that integration are broadcasted
  • Some dev teams are using Slack as their chat tool. Gone are the days of IRC. With GitHub integrations, people in a Slack channel can monitor what’s going on in a repo. See what new issues there are, see who is committing code, or pushing code, etc. Lacy gave a red stapler award winning presentation last year about Slack
  • Integrations Early Access Program should not be used with your custom system. As the requirements states there must be at least 500 GitHub users using the system.
  • MyLLU Portal is Sensitive apps (like the finance tools, identity management tools, etc.) go on the internal version of the server.
  • Because of the culture of the department, everyone has the ability to put code into production. We do not use pull requests
  • At the time we added a deploy key, they were read write. If you are just using your deploy key to deploy code, GitHub now offers read-only access for deploy keys.
  • .git directory in the webroot is not accessible via the web
  • ×