惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
A
About on SuperTechFans
IT之家
IT之家
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Blog — PlanetScale
Blog — PlanetScale
aimingoo的专栏
aimingoo的专栏
云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
Vercel News
Vercel News
G
Google Developers Blog
J
Java Code Geeks
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
Cloudbric
Cloudbric
L
LINUX DO - 最新话题
MyScale Blog
MyScale Blog
H
Heimdal Security Blog
PCI Perspectives
PCI Perspectives
Attack and Defense Labs
Attack and Defense Labs
S
Security @ Cisco Blogs
Latest news
Latest news
I
Intezer
L
Lohrmann on Cybersecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
月光博客
月光博客
T
Threatpost
博客园 - 【当耐特】
S
Schneier on Security
P
Privacy International News Feed
G
GRAHAM CLULEY
T
Tenable Blog
AWS News Blog
AWS News Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
博客园 - Franky
Engineering at Meta
Engineering at Meta
美团技术团队
S
Secure Thoughts
T
Troy Hunt's Blog
Microsoft Security Blog
Microsoft Security Blog
SecWiki News
SecWiki News
V
Visual Studio Blog
人人都是产品经理
人人都是产品经理
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cisco Talos Blog
Cisco Talos Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Martin Fowler
Martin Fowler
Webroot Blog
Webroot Blog
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More

Graphite blog

Introducing Code Tours: a new way to review Introducing Cursor Cloud Agents in Graphite Building the future of software development with Cursor Reimagining the PR Page: Designing for speed and focus Graphite changelog [11-20-2025] Graphite changelog [11-04-2025] Graphite changelog [10-16-2025] The future of engineering is collaborative (and already here) Meet Graphite Agent: the next evolution of AI code review Introducing frozen branches: A safer way to build on your teammates’ work Graphite changelog [09-17-2025] How we sped up code search for Graphite Chat Introducing Graphite Chat AI is writing code—here's why it also needs to review that code How I got Claude to write code I could actually ship How we built the first stack-aware merge queue (and why it matters) How we organize our monorepo to ship fast Graphite brings stacking to Tower Code review tooling: Should you build or buy? Making AI code review available to everyone Introducing: The new Graphite + Linear integration Graphite raises $52M and launches Diamond to reimagine code review for the age of AI Why AI will never replace human code review How stacked PRs unblock distributed development teams Graphite is going to Developer Week 2025 Beating the end of year code freeze How Graphite’s eng team ships code remarkably fast Why we chose Anthropic's Claude to power Graphite Reviewer AI code generation will remain fragmented How we redesigned Graphite's landing page in-house Introducing Graphite Reviewer: your AI code review companion How AI code review reduces review cycles to improve developer productivity What if you could get instant feedback on your code? The new developer toolchain Not Rocket Science - How Bors and Google’s TAP inspired modern merge queues Graphite's State of code review 2024 How Google migrated billions of lines of code from Perforce to Piper Going from 0 to 1: How to write better unit tests when there are none Speed up your merges: Parallel CI is now generally available for teams using Graphite’s merge queue Down for less than four minutes a month: how AWS deploys code BitKeeper, Linux, and licensing disputes: How Linus wrote Git in 14 days Graphite is now free for startups and open source projects Launch week wrap-up (May 2024) Cheaper CI & faster merging with batching How Google does code review The technical learning curve at a startup is gentler than you might think Graphite will now automatically rebase your partially-merged stacks Multiple engineers can now seamlessly collaborate on the same stack of PRs Do you ever outgrow GitHub? From the 80's to 2024 - how CI tests were invented and optimized Graphite changelog [4/10/2024] 🎺 Graphite changelog [4/25/2024] 🐸 How Stack Overflow replaced Experts Exchange How GitHub monopolized code hosting Graphite changelog [3/27/2024] 🤝 The core principles of building a good AI feature Onboarding roulette: deleting our employee accounts daily Graphite changelog [3/13/2024] 🚁 Why Facebook doesn’t use Git How to recreate the Phabricator code review workflow Types of code reviews: Improve performance, velocity, and quality What's the best GitHub pull request merge strategy? Phabricator vs GitHub vs Graphite: How do they stack up? Improving team velocity through better pull request practices Moving fast breaks things: the importance of a staging environment Building trust as a software engineer Keeping code simple: moving fast by avoiding over-engineering What's better than GitHub pull request filters? The Graphite pull request inbox 7 Best Phabricator alternatives for PR stacking + code review [2024] Accurate eng estimations: predicting and negotiating the future Tracking and understanding GitHub PR stats: A step-by-step guide 8 pull request best practices for optimal engineering What’s next for Graphite Graphite Q1 Launch week: Stacking with the tools you love Graphite Q1 Launch week: Making stacking seamless Accelerating code review The Mom Test How to use stacked PRs to unblock your entire team Graphite Q1 launch week 2024 The practical and philosophical problems with AI code review Empirically sup code review best practices Call site attribution: how to pinpoint rogue SQL queries throttling your performance Every engineer should understand git reflog Post mortem: we took 124 seconds from you, here's 378 back Your GitHub pull request workflow is slowing everyone down Optimizing CI/CD workflows for trunk-based development Why we use AWS instead of Vercel to host our Next.js app How large pull requests slow down development 3 key lessons in application server optimization Trunk-based development: why you should stop using feature branches Git was built in 5 days Why large companies and fast-moving startups are banning merge commits How long should your CI take? Experimenting with AI code review CRA to AppRouter in 5 Steps: A case study with Graphite Graphite Changelog [10/18/2023] The comprehensive guide to writing the best PR title of all time How 10,000 Developers All Contribute to the same Repo
Reduce CI costs for Buildkite and GitHub Actions
Stephen Pink · 2024-05-10 · via Graphite blog

Cursor Cloud Agents are now in Graphite. Create, review, and ship without leaving your PR.

author

Stephen Pinkerton

May 9, 2024

To close out our second-ever launch week, we’re excited to start solving one of the most painful problems every rapidly-scaling company faces: growing CI costs.

As we’ve seen Graphite usage swell in the largest, fastest-growing companies, we’ve heard from them how much faster their engineers are able to ship now that they’re stacking pull requests (see Ramp, Asana)— and also how it means they’re running more CI.

When developers learn to stack their pull requests, they start writing smaller PRs and shipping more code. This means that they’re going to be running more CI — so teams adopting stacking need to have a strategy in place to avoid ballooning costs and wait times.

One side effect of stacking PRs is the constant rebasing required to keep your PRs up to date — which Graphite now handles for you. However, updating one PR in a stack changes the SHAs of everything upstack — which can trigger CI systems to do full rebuilds when logically no code changed.

Introducing Graphite CI optimizer

Our customers of all sizes have asked us for a better approach to running CI on stacked PRs, and we’ve felt this pain ourselves as we’ve scaled Graphite.

Today we’re excited to announce first-class integrations with Buildkite and GitHub Actions that let you optimize your CI pipelines for stacking, so your releases stay reliable while your costs stay in control. Here’s how it works:

Run CI on selective PRs in a stack

CI admins, devops teams, and dev tools teams can now configure Graphite to only run CI on part of a stack of PRs, i.e. just on the bottom PRs of the stack (or top + bottom).

You merge stacked PRs from the bottom of the stack into your main trunk branch—so you should always know your CI status at the base of the stack. If you want to see the CI status of your whole feature at once, configure the optimizer to run CI on the top of the stack automatically (or trigger a build manually). Both options ensure you can ensure you don’t automatically run unnecessary CI as you work on the stack.

Selectively running fast and slow CI on your stacked PRs

Taking it a step further, you may have a fast suite of tests you always want to run on any update to the stack, and another set of slower tests you want to run less often. You can now configure the Graphite CI optimizer to do exactly this, i.e. “run linters on all PRs all the time, and only run end-to-end tests before merging a PR.”

Reducing CI runs when merging with the Graphite merge queue

As a part of this launch week, we also announced batch merges for the Graphite merge queue. Today’s announcement adds to batch merging to give you the biggest possible reduction in unnecessary CI runs.

Both are useful in tandem because you commonly run CI when you push a PR for the first time, then again for any updates to it, and at least once more when you go to merge it into your trunk branch via the merge queue.

We’re also going to add the ability to run different suites of tests against PRs when you create them versus when you queue them for merging — so you’re in control when you need to run slower tests.

How CI optimizer works

Our CI optimization works similarly for both Buildkite and GitHub Actions. First, add a new CI optimizer to the desired repo in the Graphite CI optimization settings. Then, add the Buildkite plugin or GitHub Action step to your pipelines.

For Buildkite specifically, you can create a new Graphite optimizer pipeline that then triggers your own pipeline(s) if it determines they should run. Or, you can add a job to the beginning of your pipeline that your other jobs wait on before kicking off.

For GitHub Actions, add an optimize_ci job to the start of your pipeline and have your other jobs wait on the results of this one before running automatically.

Start optimizing your CI

We’re actively rolling out CI optimizer to Graphite customers using both Buildkite and GitHub Actions. It’s currently in private beta with a few enterprise customers, and we plan to open it for public beta in the coming weeks.

Request early access and check out the docs for more information.

Related articles