<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/apache-airflow-ci-now-runs-trusted-builds-on-self-hosted-runners-8zv8husi0" -->

---
title: Apache Airflow CI Now Runs Trusted Builds on Self-Hosted...
description: Apache Airflow's CI now runs trusted builds on self-hosted runners instead of sharing GitHub-hosted capacity with other Apache Software Foundation projects....
canonical: https://daily.dev/posts/apache-airflow-ci-now-runs-trusted-builds-on-self-hosted-runners-8zv8husi0
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Apache Airflow CI Now Runs Trusted Builds on Self-Hosted Runners | daily.dev
og:description: Apache Airflow's CI now runs trusted builds on self-hosted runners instead of sharing GitHub-hosted capacity with other Apache Software Foundation projects....
og:url: https://daily.dev/posts/apache-airflow-ci-now-runs-trusted-builds-on-self-hosted-runners-8zv8husi0
og:image: https://api.daily.dev/og/posts/8zV8hUSi0.png
og:image:alt: Apache Airflow CI Now Runs Trusted Builds on Self-Hosted Runners
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Apache Airflow CI Now Runs Trusted Builds on Self-Hosted Runners

**[Apache Airflow](https://daily.dev/sources/airflow)** · 2 min read · 0 upvotes · 0 comments

## Summary

Apache Airflow's CI now runs trusted builds on self-hosted runners instead of sharing GitHub-hosted capacity with other Apache Software Foundation projects. The change, from AIP-118, moves canary builds and committer pull requests to ephemeral Linux runners in the project's AWS account, paid for with AWS credits. GitHub Actions still orchestrates every run. Pull requests from forks stay on GitHub-hosted runners unless a committer adds a label, approves the latest commit, and closes and reopens the pull request. The project picked RunsOn over AWS CodeBuild or a self-managed EKS cluster because it needed minimal setup and no Kubernetes cluster to maintain, while keeping EKS as a fallback. The change merged via apache/airflow#74889 on October 25, 2026.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://airflow.apache.org/blog/self-hosted-ci-runners>

## Questions this post answers

### Why did Apache Airflow switch some CI builds to self-hosted runners instead of GitHub-hosted ones?

Apache Airflow's CI shared GitHub-hosted runner capacity with other Apache Software Foundation projects, and its large scheduled test runs competed for that capacity. AIP-118 moved canary builds and committer-opened pull requests to ephemeral Linux self-hosted runners in the project's own AWS account, funded by AWS credits granted to the project, while GitHub Actions still orchestrates every run.

_Teams weighing shared versus self-hosted CI capacity can follow similar infrastructure tradeoffs on daily.dev._

### What tool did Apache Airflow choose to manage its self-hosted GitHub Actions runners and why?

Apache Airflow chose RunsOn over AWS CodeBuild and a self-managed EKS cluster. RunsOn ran the same CI with minimal setup, required no Kubernetes cluster for the project to maintain, and was already used by other Apache projects. The project kept the EKS approach as a fallback rather than locking into RunsOn permanently. RunsOn provides its software free to open-source projects in exchange for a public link back.

_Developers comparing self-hosted runner options can track tool choices like this one on daily.dev._

### Do pull requests from external contributors on forks use self-hosted CI runners in Apache Airflow?

No, pull requests from forks stay on GitHub-hosted runners by default. A committer can move one to self-hosted runners by adding the 'use self-hosted runners' label, approving its latest commit, then closing and reopening the pull request. Any new push after that sends the pull request back to GitHub-hosted runners until a committer approves it again.

_Maintainers securing CI against untrusted fork contributions can follow these policies on daily.dev._

## Similar posts on daily.dev

- [GitHub Actions alternative: Run Actions on CircleCI \(open preview\)](https://daily.dev/posts/github-actions-alternative-run-actions-on-circleci-open-preview--dcba6vjnb) · CircleCI · 1 upvotes · 0 comments
- [How Kaltura Accelerates CI/CD Using AWS CodeBuild-hosted Runners](https://daily.dev/posts/how-kaltura-accelerates-ci-cd-using-aws-codebuild-hosted-runners-igikn3rzz) · AWS · 3 upvotes · 0 comments
- [GitHub Actions Custom Runner Images Reach General Availability](https://daily.dev/posts/github-actions-custom-runner-images-reach-general-availability-bkfifh4ww) · InfoQ · 0 upvotes · 0 comments

---

Tags: [#aws](https://daily.dev/tags/aws), [#cicd](https://daily.dev/tags/cicd), [#github-actions](https://daily.dev/tags/github-actions), [#apache-airflow](https://daily.dev/tags/apache-airflow)

[View this post on daily.dev](https://daily.dev/posts/apache-airflow-ci-now-runs-trusted-builds-on-self-hosted-runners-8zv8husi0)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Apache Airflow CI Now Runs Trusted Builds on Self-Hosted Runners","url":"https://daily.dev/posts/apache-airflow-ci-now-runs-trusted-builds-on-self-hosted-runners-8zv8husi0","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/apache-airflow-ci-now-runs-trusted-builds-on-self-hosted-runners-8zv8husi0"},"datePublished":"2026-10-26T20:38:07.179Z","dateModified":"2026-10-26T20:43:30.518Z","description":"Apache Airflow's CI now runs trusted builds on self-hosted runners instead of sharing GitHub-hosted capacity with other Apache Software Foundation projects....","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/662b806a1a288569dfc885eab76cda93?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/662b806a1a288569dfc885eab76cda93?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Apache Airflow","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Apache Airflow","logo":"https://media.daily.dev/image/upload/s--Dqa6irgE--/f_auto/v1752573492/logos/airflow","url":"https://daily.dev/sources/airflow"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/apache-airflow-ci-now-runs-trusted-builds-on-self-hosted-runners-8zv8husi0","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"aws,cicd,github-actions,apache-airflow","timeRequired":"PT2M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Apache Airflow","item":"https://daily.dev/sources/airflow"},{"@type":"ListItem","position":3,"name":"Apache Airflow CI Now Runs Trusted Builds on Self-Hosted Runners"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/apache-airflow-ci-now-runs-trusted-builds-on-self-hosted-runners-8zv8husi0#faq","mainEntity":[{"@type":"Question","name":"Why did Apache Airflow switch some CI builds to self-hosted runners instead of GitHub-hosted ones?","acceptedAnswer":{"@type":"Answer","text":"Apache Airflow's CI shared GitHub-hosted runner capacity with other Apache Software Foundation projects, and its large scheduled test runs competed for that capacity. AIP-118 moved canary builds and committer-opened pull requests to ephemeral Linux self-hosted runners in the project's own AWS account, funded by AWS credits granted to the project, while GitHub Actions still orchestrates every run. Teams weighing shared versus self-hosted CI capacity can follow similar infrastructure tradeoffs on daily.dev."}},{"@type":"Question","name":"What tool did Apache Airflow choose to manage its self-hosted GitHub Actions runners and why?","acceptedAnswer":{"@type":"Answer","text":"Apache Airflow chose RunsOn over AWS CodeBuild and a self-managed EKS cluster. RunsOn ran the same CI with minimal setup, required no Kubernetes cluster for the project to maintain, and was already used by other Apache projects. The project kept the EKS approach as a fallback rather than locking into RunsOn permanently. RunsOn provides its software free to open-source projects in exchange for a public link back. Developers comparing self-hosted runner options can track tool choices like this one on daily.dev."}},{"@type":"Question","name":"Do pull requests from external contributors on forks use self-hosted CI runners in Apache Airflow?","acceptedAnswer":{"@type":"Answer","text":"No, pull requests from forks stay on GitHub-hosted runners by default. A committer can move one to self-hosted runners by adding the 'use self-hosted runners' label, approving its latest commit, then closing and reopening the pull request. Any new push after that sends the pull request back to GitHub-hosted runners until a committer approves it again. Maintainers securing CI against untrusted fork contributions can follow these policies on daily.dev."}}]}
```

