How GitHub engineers tackle platform problems Our best practices for quickly identifying, resolving, and preventing issues at scale.
How GitHub reduced testing time for iOS apps with new runner features Learn how GitHub used macOS and Apple Silicon runners for GitHub Actions to build, test, and deploy our iOS app faster.
Upgrading GitHub.com to MySQL 8.0 GitHub uses MySQL to store vast amounts of relational data. This is the story of how we seamlessly upgraded our production fleet to MySQL 8.0.
How GitHub uses GitHub Actions and Actions larger runners to build and test GitHub.com Recently, we’ve been working to make our CI experience better by leveraging the newly released GitHub feature, Actions larger runners, to run our CI.
Scaling merge-ort across GitHub GitHub switched to performing merges and rebases using merge-ort. Come behind the scenes to see why and how we made this change.
Experiment: The hidden costs of waiting on slow build times How much does it really cost to buy more powerful cloud compute resources for development work? A lot less than you think.
How GitHub converts previously encrypted and unencrypted columns to ActiveRecord encrypted columns This post is the second part in a series about ActiveRecord::Encryption that shows how GitHub upgrades previously encrypted and unencrypted columns to ActiveRecord::Encryption.
Why and how GitHub encrypts sensitive database columns using ActiveRecord::Encryption You may know that GitHub encrypts your source code at rest, but you may not have known that we encrypt sensitive database columns as well. Read about our column encryption strategy and our decision to adopt the Rails column encryption standard.
Improve Git monorepo performance with a file system monitor Monorepo performance can suffer due to the sheer number of files in your working directory. Git’s new builtin file system monitor makes it easy to speed up monorepo performance.
How we think about browsers Discover how GitHub thinks about browser support, look at usage patterns, and learn about the tools we use to make sure our customers are getting the best experience.
4 ways we use GitHub Actions to build GitHub From automating builds and releases to taking care of large-scale regression testing, here are a few ways we use GitHub Actions to build GitHub.
How we ship GitHub Mobile every week Learn how the GitHub Mobile Team automates their release process with GitHub Actions.
Using ChatOps to help Actions on-call engineers You can multiply the impact of your domain experts by building their common workflows into ChatOps.
Partitioning GitHub’s relational databases to handle scale In 2019, to meet GitHub’s growth and availability challenges, we set a plan in motion to improve our tooling and ability to partition relational databases.
GitHub’s Engineering Team has moved to Codespaces Over the past months, we’ve left our macOS model behind and moved to Codespaces for the majority of GitHub.com development.
Why (and how) GitHub is adopting OpenTelemetry Over the years, GitHub engineers have developed many ways to observe how our systems behave. We mostly make use of statsd for metrics, the syslog format for plain text logs…
How we ship code faster and safer with feature flags At GitHub, we’re continually working to improve existing features and shipping new ones all the time. From our launch of GitHub Discussions to the release of manual approvals for GitHub…
How we scaled the GitHub API with a sharded, replicated rate limiter in Redis About a year ago, we migrated an old rate limiter in order to serve more traffic and accommodate a more resilient platform architecture. We adopted a replicated Redis backend with…
Making GitHub CI workflow 3x faster Using deferred compliance in GitHub’s CI process to improve developer productivity.