In parallel, we started work on oss_sync_and_push, a wrapper for fboss2 that added support for building and testing before pushing, so that we'd stop pushing updates that would break the build for external users. Until this point, changes to Folly would often require coordination between the Folly, HHVM, Thrift, and Proxygen teams to update master to compatible points. Pull requests are more likely to apply cleanly, as GitHub master is up-to-date.Related and interdependent changes are now available nearly simultaneously.Engineers have more time to improve their projects.And so “fboss2” was born, introducing idempotency and repository management, and designed to support multiple projects. Coordinating releases was painful, so we decided for something completely different: continuous, unsupervised pushes. Life before FBShipItįBShipIt started out in 2013 as “fboss” (FB Open Source Sync, unrelated to our current FB Open Switching System project) and solved this manual-commit problem just for HHVM: It copied commits between two local checkouts.Īs HHVM evolved, fboss needed to evolve as well: HHVM has several rapidly developed dependencies ( Folly in particular), and we needed to get changes to GitHub at roughly the same time. Simply put, FBShipIt takes these steps and automates them, handling thousands of pushes a day. Manage incompatibilities between Git and Mercurial because many of Facebook's projects are now in now in Mercurial repositories.Remove anything confidential from commit messages: “Test Plan: did x, y, z with SuperAwesomeProject.”.Remove some files: These can be confidential, not useful externally, or simply part of another project.Move files: At Facebook, some of our projects are in nested subdirectories of shared repositories, but on GitHub they should be top-level.It also makes continuous pushing a possibility, reducing the difficulty of maintaining interdependent projects.įor most projects, the process for releasing code is lengthy and manual: FBShipIt automates pushing commits to GitHub, giving our projects a consistent approach, and reducing the time engineers need to spend on this repetitive task. We're excited to announce that today we're open-sourcing FBShipIt, a tool we developed internally to help manage our projects on GitHub.
0 Comments
Leave a Reply. |