Skip to content

Commit fe86e64

Browse files
authored
Merge pull request #35423 from ameukam/kops-breakdown-build-script
kOps: small breakdown of the prowjobs build script
2 parents 8854cd0 + a08c981 commit fe86e64

File tree

4 files changed

+7465
-2208
lines changed

4 files changed

+7465
-2208
lines changed

config/jobs/kubernetes/kops/build_jobs.py

Lines changed: 22 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,19 @@
3939
script_dir,
4040
)
4141

42-
# These are job tab names of unsupported grid combinations
43-
skip_jobs = [
44-
]
45-
46-
image = "gcr.io/k8s-staging-test-infra/kubekins-e2e:v20250815-171060767f-master"
42+
from build_vars import ( # pylint: disable=import-error, no-name-in-module
43+
skip_jobs,
44+
image,
45+
networking_options,
46+
distro_options,
47+
k8s_versions,
48+
kops_versions,
49+
distros,
50+
network_plugins_periodics,
51+
network_plugins_presubmits,
52+
upgrade_versions_list,
53+
kops29,
54+
)
4755

4856
loader = jinja2.FileSystemLoader(searchpath=os.path.join(script_dir, "templates"))
4957

@@ -446,41 +454,7 @@ def presubmit_test(branch='master',
446454
output += f" {line}\n"
447455
return output
448456

449-
####################
450-
# Grid Definitions #
451-
####################
452-
453-
networking_options = [
454-
'kubenet',
455-
'calico',
456-
'cilium',
457-
'cilium-etcd',
458-
'cilium-eni',
459-
'kopeio',
460-
]
461-
462-
distro_options = [
463-
'al2023',
464-
'deb12',
465-
'deb13',
466-
'flatcar',
467-
'rhel8',
468-
'u2204',
469-
'u2404',
470-
]
471-
472-
k8s_versions = [
473-
"1.31",
474-
"1.32",
475-
"1.33",
476-
"1.34",
477-
]
478-
479-
kops_versions = [
480-
None, # maps to latest
481-
"1.30",
482-
"1.31",
483-
]
457+
484458

485459

486460
############################
@@ -1407,12 +1381,6 @@ def generate_conformance():
14071381
###############################
14081382
# kops-periodics-distros.yaml #
14091383
###############################
1410-
distros = ['debian11', 'debian12', 'debian13',
1411-
'ubuntu2204', 'ubuntu2204arm64',
1412-
'ubuntu2404', 'ubuntu2404arm64',
1413-
'amazonlinux2', 'al2023',
1414-
'rhel8', 'rhel9', 'rocky9',
1415-
'flatcar']
14161384
def generate_distros():
14171385
results = []
14181386
for distro in distros:
@@ -1479,10 +1447,9 @@ def generate_presubmits_distros():
14791447
# kops-periodics-network-plugins.yaml #
14801448
#######################################
14811449
def generate_network_plugins():
1482-
1483-
plugins = ['amazon-vpc', 'calico', 'cilium', 'cilium-etcd', 'cilium-eni', 'flannel', 'kindnet', 'kopeio', 'kuberouter']
1484-
supports_gce = {'calico', 'cilium', 'kindnet'}
1485-
supports_azure = {'cilium'}
1450+
plugins = network_plugins_periodics['plugins']
1451+
supports_gce = network_plugins_periodics['supports_gce']
1452+
supports_azure = network_plugins_periodics['supports_azure']
14861453
results = []
14871454
for plugin in plugins:
14881455
networking_arg = plugin.replace('amazon-vpc', 'amazonvpc').replace('kuberouter', 'kube-router')
@@ -1546,51 +1513,12 @@ def generate_network_plugins():
15461513
# kops-periodics-upgrades.yaml #
15471514
################################
15481515
def generate_upgrades():
1549-
1550-
kops29 = 'v1.29.2'
1551-
kops30 = 'v1.30.3'
1552-
kops31 = 'v1.31.0'
1553-
1554-
versions_list = [
1555-
# kops k8s kops k8s
1556-
# 1.29 release branch
1557-
((kops29, 'v1.29.8'), ('1.29', 'v1.29.9')),
1558-
# 1.30 release branch
1559-
((kops29, 'v1.29.9'), ('1.30', 'v1.30.5')),
1560-
((kops30, 'v1.30.4'), ('1.30', 'v1.30.5')),
1561-
# kOps 1.29 upgrade to latest
1562-
((kops29, 'v1.26.0'), ('latest', 'v1.27.0')),
1563-
((kops29, 'v1.27.0'), ('latest', 'v1.28.0')),
1564-
((kops29, 'v1.28.0'), ('latest', 'v1.29.0')),
1565-
((kops29, 'v1.29.0'), ('latest', 'v1.30.0')),
1566-
# kOps 1.30 upgrade to latest
1567-
((kops30, 'v1.26.0'), ('latest', 'v1.27.0')),
1568-
((kops30, 'v1.27.0'), ('latest', 'v1.28.0')),
1569-
((kops30, 'v1.28.0'), ('latest', 'v1.29.0')),
1570-
((kops30, 'v1.29.0'), ('latest', 'v1.30.0')),
1571-
# kOps 1.31 upgrade to latest
1572-
((kops31, 'v1.28.0'), ('latest', 'v1.29.0')),
1573-
((kops31, 'v1.29.0'), ('latest', 'v1.30.0')),
1574-
((kops31, 'v1.30.0'), ('latest', 'v1.31.0')),
1575-
((kops31, 'v1.31.0'), ('latest', 'v1.32.0')),
1576-
# we should have an upgrade test for every supported K8s version
1577-
(('latest', 'v1.32.0'), ('latest', 'latest')),
1578-
(('latest', 'v1.31.0'), ('latest', 'v1.32.0')),
1579-
(('latest', 'v1.30.0'), ('latest', 'v1.31.0')),
1580-
(('latest', 'v1.29.0'), ('latest', 'v1.30.0')),
1581-
(('latest', 'v1.28.0'), ('latest', 'v1.29.0')),
1582-
(('latest', 'v1.27.0'), ('latest', 'v1.28.0')),
1583-
(('latest', 'v1.26.0'), ('latest', 'v1.27.0')),
1584-
# kOps latest should always be able to upgrade from stable to latest and stable to ci
1585-
(('latest', 'stable'), ('latest', 'latest')),
1586-
(('latest', 'stable'), ('latest', 'ci')),
1587-
]
15881516
def shorten(version):
15891517
version = re.sub(r'^v', '', version)
15901518
version = re.sub(r'^(\d+\.\d+)\.\d+$', r'\g<1>', version)
15911519
return version.replace('.', '')
15921520
results = []
1593-
for versions in versions_list:
1521+
for versions in upgrade_versions_list:
15941522
kops_a = versions[0][0]
15951523
k8s_a = versions[0][1]
15961524
kops_b = versions[1][0]
@@ -1891,19 +1819,10 @@ def generate_pipeline():
18911819
# kops-presubmits-network-plugins.yaml #
18921820
########################################
18931821
def generate_presubmits_network_plugins():
1894-
plugins = {
1895-
'amazonvpc': r'^(upup\/models\/cloudup\/resources\/addons\/networking\.amazon-vpc-routed-eni\/|pkg\/model\/(firewall|components\/containerd|components\/kubeproxy|iam\/iam_builder)\.go|nodeup\/pkg\/model\/kubelet\.go)',
1896-
'calico': r'^(upup\/models\/cloudup\/resources\/addons\/networking\.projectcalico\.org\/|pkg\/model\/(components\/containerd|firewall|pki|iam\/iam_builder)\.go|nodeup\/pkg\/model\/networking\/calico\.go)',
1897-
'cilium': r'^(upup\/models\/cloudup\/resources\/addons\/networking\.cilium\.io\/|pkg\/model\/(components\/containerd|firewall|components\/cilium|iam\/iam_builder)\.go|nodeup\/pkg\/model\/(context|networking\/cilium)\.go)',
1898-
'cilium-etcd': r'^(upup\/models\/cloudup\/resources\/addons\/networking\.cilium\.io\/|pkg\/model\/(components\/containerd|firewall|components\/cilium|iam\/iam_builder)\.go|nodeup\/pkg\/model\/(context|networking\/cilium)\.go)',
1899-
'cilium-eni': r'^(upup\/models\/cloudup\/resources\/addons\/networking\.cilium\.io\/|pkg\/model\/(components\/containerd|firewall|components\/cilium|iam\/iam_builder)\.go|nodeup\/pkg\/model\/(context|networking\/cilium)\.go)',
1900-
'flannel': r'^(upup\/models\/cloudup\/resources\/addons\/networking\.flannel\/)',
1901-
'kuberouter': r'^(upup\/models\/cloudup\/resources\/addons\/networking\.kuberouter\/|pkg\/model\/components\/containerd\.go)',
1902-
'kindnet': r'^(upup\/models\/cloudup\/resources\/addons\/networking\.kindnet)',
1903-
}
1904-
supports_ipv6 = {'amazonvpc', 'calico', 'cilium', 'kindnet'}
1905-
supports_gce = {'calico', 'cilium', 'kindnet'}
1906-
supports_azure = {'cilium'}
1822+
plugins = network_plugins_presubmits['plugins']
1823+
supports_ipv6 = network_plugins_presubmits['supports_ipv6']
1824+
supports_gce = network_plugins_presubmits['supports_gce']
1825+
supports_azure = network_plugins_presubmits['supports_azure']
19071826
results = []
19081827
for plugin, run_if_changed in plugins.items():
19091828
k8s_version = 'stable'
Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
# Copyright 2025 The Kubernetes Authors.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
# This file contains common variables and lists for generating kops prow jobs.
16+
17+
# pylint: disable=line-too-long
18+
skip_jobs = []
19+
20+
image = "gcr.io/k8s-staging-test-infra/kubekins-e2e:v20250815-171060767f-master"
21+
22+
# Grid Definitions
23+
networking_options = [
24+
"kubenet",
25+
"calico",
26+
"cilium",
27+
"cilium-etcd",
28+
"cilium-eni",
29+
"kopeio",
30+
]
31+
32+
# AWS distributions
33+
distro_options = [
34+
"al2023",
35+
"deb12",
36+
"deb13",
37+
"flatcar",
38+
"rhel8",
39+
"u2204",
40+
"u2404",
41+
]
42+
43+
k8s_versions = [
44+
"1.31",
45+
"1.32",
46+
"1.33",
47+
"1.34",
48+
]
49+
50+
# kOps versions tested
51+
kops_versions = [
52+
None, # maps to latest
53+
"1.30",
54+
"1.31",
55+
"1.32",
56+
]
57+
58+
# Distros for periodic and presubmit distro tests
59+
distros = [
60+
"debian11",
61+
"debian12",
62+
"debian13",
63+
"ubuntu2204",
64+
"ubuntu2204arm64",
65+
"ubuntu2404",
66+
"ubuntu2404arm64",
67+
"amazonlinux2",
68+
"al2023",
69+
"rhel8",
70+
"rhel9",
71+
"rocky9",
72+
"flatcar",
73+
]
74+
75+
# Network plugins for periodic network plugin tests
76+
network_plugins_periodics = {
77+
"plugins": [
78+
"amazon-vpc",
79+
"calico",
80+
"cilium",
81+
"cilium-etcd",
82+
"cilium-eni",
83+
"flannel",
84+
"kindnet",
85+
"kopeio",
86+
"kuberouter",
87+
],
88+
"supports_gce": {"calico", "cilium", "kindnet"},
89+
"supports_azure": {"cilium"},
90+
}
91+
92+
# Network plugins for presubmit network plugin tests
93+
network_plugins_presubmits = {
94+
"plugins": {
95+
"amazonvpc": r"^(upup\/models\/cloudup\/resources\/addons\/networking\.amazon-vpc-routed-eni\/|pkg\/model\/(firewall|components\/containerd|components\/kubeproxy|iam\/iam_builder)\.go|nodeup\/pkg\/model\/kubelet\.go)",
96+
"calico": r"^(upup\/models\/cloudup\/resources\/addons\/networking\.projectcalico\.org\/|pkg\/model\/(components\/containerd|firewall|pki|iam\/iam_builder)\.go|nodeup\/pkg\/model\/networking\/calico\.go)",
97+
"cilium": r"^(upup\/models\/cloudup\/resources\/addons\/networking\.cilium\.io\/|pkg\/model\/(components\/containerd|firewall|components\/cilium|iam\/iam_builder)\.go|nodeup\/pkg\/model\/(context|networking\/cilium)\.go)",
98+
"cilium-etcd": r"^(upup\/models\/cloudup\/resources\/addons\/networking\.cilium\.io\/|pkg\/model\/(components\/containerd|firewall|components\/cilium|iam\/iam_builder)\.go|nodeup\/pkg\/model\/(context|networking\/cilium)\.go)",
99+
"cilium-eni": r"^(upup\/models\/cloudup\/resources\/addons\/networking\.cilium\.io\/|pkg\/model\/(components\/containerd|firewall|components\/cilium|iam\/iam_builder)\.go|nodeup\/pkg\/model\/(context|networking\/cilium)\.go)",
100+
"flannel": r"^(upup\/models\/cloudup\/resources\/addons\/networking\.flannel\/)",
101+
"kuberouter": r"^(upup\/models\/cloudup\/resources\/addons\/networking\.kuberouter\/|pkg\/model\/components\/containerd\.go)",
102+
"kindnet": r"^(upup\/models\/cloudup\/resources\/addons\/networking\.kindnet)",
103+
},
104+
"supports_ipv6": {"amazonvpc", "calico", "cilium", "kindnet"},
105+
"supports_gce": {"calico", "cilium", "kindnet"},
106+
"supports_azure": {"cilium"},
107+
}
108+
109+
110+
# Upgrade test versions
111+
kops29 = "v1.29.2"
112+
kops30 = "v1.30.3"
113+
kops31 = "v1.31.0"
114+
115+
upgrade_versions_list = [
116+
# kops k8s kops k8s
117+
# 1.29 release branch
118+
((kops29, "v1.29.8"), ("1.29", "v1.29.9")),
119+
# 1.30 release branch
120+
((kops29, "v1.29.9"), ("1.30", "v1.30.5")),
121+
((kops30, "v1.30.4"), ("1.30", "v1.30.5")),
122+
# kOps 1.29 upgrade to latest
123+
((kops29, "v1.26.0"), ("latest", "v1.27.0")),
124+
((kops29, "v1.27.0"), ("latest", "v1.28.0")),
125+
((kops29, "v1.28.0"), ("latest", "v1.29.0")),
126+
((kops29, "v1.29.0"), ("latest", "v1.30.0")),
127+
# kOps 1.30 upgrade to latest
128+
((kops30, "v1.26.0"), ("latest", "v1.27.0")),
129+
((kops30, "v1.27.0"), ("latest", "v1.28.0")),
130+
((kops30, "v1.28.0"), ("latest", "v1.29.0")),
131+
((kops30, "v1.29.0"), ("latest", "v1.30.0")),
132+
# kOps 1.31 upgrade to latest
133+
((kops31, "v1.28.0"), ("latest", "v1.29.0")),
134+
((kops31, "v1.29.0"), ("latest", "v1.30.0")),
135+
((kops31, "v1.30.0"), ("latest", "v1.31.0")),
136+
((kops31, "v1.31.0"), ("latest", "v1.32.0")),
137+
# we should have an upgrade test for every supported K8s version
138+
(("latest", "v1.32.0"), ("latest", "latest")),
139+
(("latest", "v1.31.0"), ("latest", "v1.32.0")),
140+
(("latest", "v1.30.0"), ("latest", "v1.31.0")),
141+
(("latest", "v1.29.0"), ("latest", "v1.30.0")),
142+
(("latest", "v1.28.0"), ("latest", "v1.29.0")),
143+
(("latest", "v1.27.0"), ("latest", "v1.28.0")),
144+
(("latest", "v1.26.0"), ("latest", "v1.27.0")),
145+
# kOps latest should always be able to upgrade from stable to latest and stable to ci
146+
(("latest", "stable"), ("latest", "latest")),
147+
(("latest", "stable"), ("latest", "ci")),
148+
]

0 commit comments

Comments
 (0)