diff --git a/.github/filters.yml b/.github/filters.yml
index 0b2bdcf0b0685ba3e5e9704575dea9fba1c1e6a8..cc6dd77f3899b70d3d1f2e871813953beb6418c2 100644
--- a/.github/filters.yml
+++ b/.github/filters.yml
@@ -1,6 +1,7 @@
 {
   "ath79-generic": [
     "targets/ath79-generic",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -10,6 +11,7 @@
   ],
   "ath79-nand": [
     "targets/ath79-nand",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -19,6 +21,7 @@
   ],
   "ath79-mikrotik": [
     "targets/ath79-mikrotik",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -29,6 +32,7 @@
   ],
   "bcm27xx-bcm2708": [
     "targets/bcm27xx-bcm2708",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -39,6 +43,7 @@
   ],
   "bcm27xx-bcm2709": [
     "targets/bcm27xx-bcm2709",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -49,6 +54,7 @@
   ],
   "ipq40xx-generic": [
     "targets/ipq40xx-generic",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -58,6 +64,7 @@
   ],
   "ipq40xx-mikrotik": [
     "targets/ipq40xx-mikrotik",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -68,6 +75,7 @@
   ],
   "ipq806x-generic": [
     "targets/ipq806x-generic",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -77,6 +85,7 @@
   ],
   "lantiq-xway": [
     "targets/lantiq-xway",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -86,6 +95,7 @@
   ],
   "mediatek-filogic": [
     "targets/mediatek-filogic",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -95,6 +105,7 @@
   ],
   "mediatek-mt7622": [
     "targets/mediatek-mt7622",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -104,6 +115,7 @@
   ],
   "mpc85xx-p1010": [
     "targets/mpc85xx-p1010",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -113,6 +125,7 @@
   ],
   "mpc85xx-p1020": [
     "targets/mpc85xx-p1020",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -122,6 +135,7 @@
   ],
   "ramips-mt7620": [
     "targets/ramips-mt7620",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -131,6 +145,7 @@
   ],
   "ramips-mt7621": [
     "targets/ramips-mt7621",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -140,6 +155,7 @@
   ],
   "ramips-mt76x8": [
     "targets/ramips-mt76x8",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -149,6 +165,7 @@
   ],
   "realtek-rtl838x": [
     "targets/realtek-rtl838x",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -158,6 +175,7 @@
   ],
   "rockchip-armv8": [
     "targets/rockchip-armv8",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -167,6 +185,7 @@
   ],
   "sunxi-cortexa7": [
     "targets/sunxi-cortexa7",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -176,6 +195,7 @@
   ],
   "x86-generic": [
     "targets/x86-generic",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -186,6 +206,7 @@
   ],
   "x86-geode": [
     "targets/x86-geode",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -195,6 +216,7 @@
   ],
   "x86-legacy": [
     "targets/x86-legacy",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -205,6 +227,7 @@
   ],
   "x86-64": [
     "targets/x86-64",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -217,6 +240,7 @@
   ],
   "bcm27xx-bcm2710": [
     "targets/bcm27xx-bcm2710",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -227,6 +251,7 @@
   ],
   "lantiq-xrx200": [
     "targets/lantiq-xrx200",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
@@ -236,6 +261,7 @@
   ],
   "mvebu-cortexa9": [
     "targets/mvebu-cortexa9",
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",
diff --git a/.github/workflows/build-gluon.yml b/.github/workflows/build-gluon.yml
index f03aa1c8b8261f4f173f160e4028f53babff5d0d..c5d327f7ab29b284b1d2035b3c619c5312a60aa1 100644
--- a/.github/workflows/build-gluon.yml
+++ b/.github/workflows/build-gluon.yml
@@ -3,10 +3,11 @@ on:
   push:
     branches:
       - master
-      - next*
-      - v20*
+      - next
+      - 'v20[2-9][0-9].[0-9].x'
   pull_request:
     types: [opened, synchronize, reopened]
+  workflow_dispatch:
 
 permissions:
   contents: read
diff --git a/contrib/actions/generate-target-filters.py b/contrib/actions/generate-target-filters.py
index d3a0adf105b93fbe9af38817090c54910c087c3e..34af4e7a4ae57cebf7a5021a7df40159eee6a3f4 100755
--- a/contrib/actions/generate-target-filters.py
+++ b/contrib/actions/generate-target-filters.py
@@ -10,6 +10,7 @@ import json
 
 # these changes trigger rebuilds on all targets
 common = [
+    ".github/workflows/build-gluon.yml",
     "modules",
     "Makefile",
     "patches/**",