3. Intro
» What is Git?
» What is Github?
» GitHub Integrations
» GitHub Webhooks
» Webhook usage at Loma Linda University
» Summary
» Resources
» Questions
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. 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. 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. 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. 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
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
12. Your Integration / Vendor Service Not
on List?
» Options:
~ Integrations Early Access Program
~ Webhooks
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
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
18. 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
19. 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
20. 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
21. 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
22. 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
24. 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
26. 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
27. 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
28. 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/
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