An inaugural member of the newly-formed Build and Release Tools team, our team’s purview at the intersection of build and release engineering, platform engineering, and DevOps was maintaining and improving tooling and processes to assist developers in smoothly releasing software.
- Responsible for stewardship of our CI/CD (Buildkite) service and assisting developers in its utilization.
- Worked closely with CloudOps (i.e. the infrastructure team), often serving as a liaison between them and developer teams.
- Actively participated in discussions and advocacy to improve the developer experience and adherence to better practices.
Highlights
- Designed and implemented (Ruby) tooling for developers to document and analyze code ownership around a Ruby monolith monorepo, helping to gain insight into locating proper stakeholders and resolving potential conflicts. The tooling parsed multiple sources of truth to construct file and code object ownership trees, reconciled them into a single tree, then generated a canonical CODEOWNERS file for GitHub.
- Designed and implemented a (Node.js) service for generating PR review reports containing various recommendations such as which reviewers to request based upon ownership within the changeset. The service integrated with any configured GitHub repositories and published recommendation reports as comments on open pull requests.
- Made improvements to an internal (Python) deployment queue service — integrated across GitHub, Slack, and our CI/CD platform — that helped developers navigate the build/deployment process, both independently and collaboratively. The service handled deployment locking as well as feedback on pipeline progress, allowing developers to manage deployments mostly via a Slackbot with a minimum of additional panel-watching.
- Implemented unit and integration tests for the aforementioned projects in Chai / Mocha / Sinon.js, pytest, and RSpec.