Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Get Hooked on Integrations with GitHub

587 views

Published on

This presentation is on Github integrations and webhooks

Published in: Technology
  • Be the first to comment

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

×