This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch v3-4-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-4-test by this push:
new 8aa136de10d [v3-4-test] Skip scheduled workflows in forks that enable
Actions (#76243) (#76253)
8aa136de10d is described below
commit 8aa136de10d06441ed28c74fcb558411913e109c
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Sun Nov 1 21:26:21 2026 +0100
[v3-4-test] Skip scheduled workflows in forks that enable Actions (#76243)
(#76253)
Contributors enable Actions on their forks for fork CI (AIP-120), and every
cron in the repository then fires there as well. Unguarded scheduled workflows
ran CodeQL and the maintenance jobs daily in each fork, using the contributor's
minutes; GitHub has started disabling Actions on such forks as wasted compute.
(cherry picked from commit a5ab822160c2f04b04fc8563fd991ce9f668c246)
Generated-by: Claude Opus 5
Co-authored-by: Jarek Potiuk <[email protected]>
---
.github/workflows/ci-duration-monitor.yml | 1 +
.github/workflows/ci-notification.yml | 1 +
.github/workflows/codeql-analysis.yml | 1 +
.github/workflows/e2e-flaky-tests-report.yml | 1 +
.github/workflows/java-sdk-dependency-security.yml | 1 +
.github/workflows/recheck-old-bug-report.yml | 1 +
.github/workflows/scheduled-upgrade-check-main.yml | 1 +
.github/workflows/scheduled-upgrade-check-v3-4-test.yml | 1 +
.github/workflows/scheduled-verify-release-calendar.yml | 1 +
.github/workflows/stale.yml | 1 +
dev/breeze/doc/ci/08_fork_ci_for_external_contributors.md | 7 +++++++
11 files changed, 17 insertions(+)
diff --git a/.github/workflows/ci-duration-monitor.yml
b/.github/workflows/ci-duration-monitor.yml
index 5c19ba20e4f..8339bf68385 100644
--- a/.github/workflows/ci-duration-monitor.yml
+++ b/.github/workflows/ci-duration-monitor.yml
@@ -34,6 +34,7 @@ jobs:
monitor-ci-durations:
name: "Monitor CI durations on main"
+ if: github.event_name != 'schedule' || github.repository ==
'apache/airflow'
runs-on: ubuntu-slim
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
diff --git a/.github/workflows/ci-notification.yml
b/.github/workflows/ci-notification.yml
index f5743d0d6eb..7d7d6a9a50e 100644
--- a/.github/workflows/ci-notification.yml
+++ b/.github/workflows/ci-notification.yml
@@ -34,6 +34,7 @@ env:
jobs:
workflow-status:
+ if: github.event_name != 'schedule' || github.repository ==
'apache/airflow'
strategy:
matrix:
branch: ["v3-4-test"]
diff --git a/.github/workflows/codeql-analysis.yml
b/.github/workflows/codeql-analysis.yml
index b2e3dc23ab5..a97ac44379f 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -49,6 +49,7 @@ concurrency:
jobs:
detect-languages:
name: Detect languages to scan
+ if: github.event_name != 'schedule' || github.repository ==
'apache/airflow'
runs-on: ["ubuntu-slim"]
permissions:
contents: read
diff --git a/.github/workflows/e2e-flaky-tests-report.yml
b/.github/workflows/e2e-flaky-tests-report.yml
index f0fb712a0ea..ad0e3b6f064 100644
--- a/.github/workflows/e2e-flaky-tests-report.yml
+++ b/.github/workflows/e2e-flaky-tests-report.yml
@@ -33,6 +33,7 @@ jobs:
analyze-flaky-tests:
name: "Analyze E2E flaky tests"
+ if: github.event_name != 'schedule' || github.repository ==
'apache/airflow'
runs-on: ubuntu-slim
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
diff --git a/.github/workflows/java-sdk-dependency-security.yml
b/.github/workflows/java-sdk-dependency-security.yml
index 0f61ec9c97f..9fc0b7c1061 100644
--- a/.github/workflows/java-sdk-dependency-security.yml
+++ b/.github/workflows/java-sdk-dependency-security.yml
@@ -37,6 +37,7 @@ concurrency:
jobs:
dependency-submission:
name: Submit resolved Gradle dependencies
+ if: github.event_name != 'schedule' || github.repository ==
'apache/airflow'
runs-on: ubuntu-latest
permissions:
contents: write
diff --git a/.github/workflows/recheck-old-bug-report.yml
b/.github/workflows/recheck-old-bug-report.yml
index 049071dfad0..c860e1cdf7f 100644
--- a/.github/workflows/recheck-old-bug-report.yml
+++ b/.github/workflows/recheck-old-bug-report.yml
@@ -26,6 +26,7 @@ permissions:
issues: write
jobs:
recheck-old-bug-report:
+ if: github.repository == 'apache/airflow'
runs-on: ["ubuntu-slim"]
steps:
- uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11.0.0
diff --git a/.github/workflows/scheduled-upgrade-check-main.yml
b/.github/workflows/scheduled-upgrade-check-main.yml
index ee0ab72a15a..0464ca4dbb1 100644
--- a/.github/workflows/scheduled-upgrade-check-main.yml
+++ b/.github/workflows/scheduled-upgrade-check-main.yml
@@ -30,6 +30,7 @@ permissions:
jobs:
upgrade-main:
name: "[main] Upgrade"
+ if: github.event_name != 'schedule' || github.repository ==
'apache/airflow'
uses: ./.github/workflows/upgrade-check.yml
with:
target-branch: main
diff --git a/.github/workflows/scheduled-upgrade-check-v3-4-test.yml
b/.github/workflows/scheduled-upgrade-check-v3-4-test.yml
index 9d51e87cec4..26943d97157 100644
--- a/.github/workflows/scheduled-upgrade-check-v3-4-test.yml
+++ b/.github/workflows/scheduled-upgrade-check-v3-4-test.yml
@@ -30,6 +30,7 @@ permissions:
jobs:
upgrade-v3-4-test:
name: "[v3-4-test] Upgrade"
+ if: github.event_name != 'schedule' || github.repository ==
'apache/airflow'
uses: ./.github/workflows/upgrade-check.yml
with:
target-branch: v3-4-test
diff --git a/.github/workflows/scheduled-verify-release-calendar.yml
b/.github/workflows/scheduled-verify-release-calendar.yml
index 537d573b2b9..98ecb97431b 100644
--- a/.github/workflows/scheduled-verify-release-calendar.yml
+++ b/.github/workflows/scheduled-verify-release-calendar.yml
@@ -27,6 +27,7 @@ permissions:
jobs:
verify-release-calendar:
name: "Verify release calendar"
+ if: github.event_name != 'schedule' || github.repository ==
'apache/airflow'
runs-on: ["ubuntu-slim"]
timeout-minutes: 10
steps:
diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
index aaf17be8b58..0f7a88ef02a 100644
--- a/.github/workflows/stale.yml
+++ b/.github/workflows/stale.yml
@@ -27,6 +27,7 @@ permissions:
issues: write
jobs:
stale:
+ if: github.repository == 'apache/airflow'
runs-on: ["ubuntu-slim"]
steps:
# Handle all PRs (45-day stale) and pending-response issues (14-day
stale)
diff --git a/dev/breeze/doc/ci/08_fork_ci_for_external_contributors.md
b/dev/breeze/doc/ci/08_fork_ci_for_external_contributors.md
index aad1a304e74..e4efe527cd3 100644
--- a/dev/breeze/doc/ci/08_fork_ci_for_external_contributors.md
+++ b/dev/breeze/doc/ci/08_fork_ci_for_external_contributors.md
@@ -164,6 +164,13 @@ cron trigger, and selective checks force the full matrix
for `schedule` events.
every enabled fork would run the full canary matrix twice a day on the
contributor's
concurrency cap. A manual `workflow_dispatch` in a fork still runs.
+The same applies to every other workflow with a `schedule` trigger: a fork
that enables
+Actions gets all of their crons too. Their jobs carry a job-level
+`if: github.repository == 'apache/airflow'` guard, combined with
+`github.event_name != 'schedule'` when the workflow has other triggers that
should still run
+in a fork. A new scheduled workflow needs the same guard. The guard skips the
jobs but not
+the run itself, so the frequent crons still leave an empty run in every
enabled fork.
+
| Rule | Decision | Reason |
|---|---|---|
| Event is `schedule` and repository is not `apache/airflow` | skip |
`fork_schedule` |