Skip to content

Commit 435b5a7

Browse files
committed
Cache helm output (#310)
* Cache helm output for CI runs * load objects in ci and fail if none * Use more specific keys and restore_key * Fix restore-keys and don't use reloader in ci * Remove main from restore-keys * Mose base_ref after develop Fix restore keys formatting in checks.yml Fix restore-keys value
1 parent 4100bae commit 435b5a7

2 files changed

Lines changed: 29 additions & 11 deletions

File tree

.github/workflows/checks.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@ jobs:
2121
- name: Create k8s Kind Cluster
2222
run: ctlptl create cluster kind --registry=ctlptl-registry
2323

24+
- name: Cache Helm Output
25+
id: cache-helm-ooutput
26+
uses: actions/cache@v5
27+
with:
28+
path: .helm-cache
29+
key: ${{ github.ref_name }}
30+
restore-keys: |
31+
develop
32+
${{ github.base_ref }}
33+
2434
- name: Test Using Local Config
2535
run: tilt ci --timeout "5m"
2636

Tiltfile

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ config.define_string("faf-data-dir", args=False, usage="Directory where the FAF
88
config.define_string("base-domain", args=False, usage="Base Domain to use for all faf services. Defaults to faforever.localhost")
99
config.define_string_list("local-services", args=False, usage="Names of services that you intend to run locally")
1010
cfg = config.parse()
11+
is_ci = os.getenv("CI", False)
1112
windows_bash_path = cfg.get("windows-bash-path", "C:\\Program Files\\Git\\bin\\bash.exe")
1213
host_ip = cfg.get("host-ip", "")
1314
local_services = cfg.get("local-services", [])
@@ -102,18 +103,24 @@ def helm_with_build_cache(chart, namespace="", values=[], set=[], specifier = ""
102103
command.extend(value_flags)
103104
command.extend(set_flags)
104105
command.extend(["--set", "baseDomain=" + base_domain])
105-
106-
deps = [chart]
107-
deps.extend(values)
108-
agnostic_local_resource(name=chart_resource + "-helm", cmd=command, labels=["helm"], deps=deps, allow_parallel=True)
109106

110-
if not os.path.exists(cached_yaml):
107+
if is_ci:
111108
agnostic_local(command)
109+
objects = read_yaml_stream(cached_yaml)
110+
if not objects:
111+
fail("No objects found for chart " + chart)
112+
else:
113+
deps = [chart]
114+
deps.extend(values)
115+
agnostic_local_resource(name=chart_resource + "-helm", cmd=command, labels=["helm"], deps=deps, allow_parallel=True)
116+
117+
if not os.path.exists(cached_yaml):
118+
agnostic_local(command)
112119

113-
objects = read_yaml_stream(cached_yaml)
114-
if not objects:
115-
agnostic_local(command)
116120
objects = read_yaml_stream(cached_yaml)
121+
if not objects:
122+
agnostic_local(command)
123+
objects = read_yaml_stream(cached_yaml)
117124

118125
watch_file(cached_yaml)
119126

@@ -144,7 +151,7 @@ def helm_with_build_cache(chart, namespace="", values=[], set=[], specifier = ""
144151
entryPoints = spec["entryPoints"]
145152
if "websecure" in entryPoints:
146153
entryPoints.append("web")
147-
if containers or job_template_containers:
154+
if not is_ci and (containers or job_template_containers):
148155
metadata = object["metadata"]
149156
if "annotations" not in metadata or not metadata["annotations"]:
150157
metadata["annotations"] = {}
@@ -245,8 +252,9 @@ k8s_resource(new_name="namespaces", objects=["faf-infra:namespace", "faf-apps:na
245252
k8s_resource(new_name="clusterroles", objects=["read-cm-secrets:clusterrole"], labels=["core"])
246253
k8s_resource(new_name="init-apps", objects=["init-apps:serviceaccount:faf-infra", "init-apps:serviceaccount:faf-apps", "allow-init-apps-read-app-config-infra:rolebinding", "allow-init-apps-read-app-config-apps:rolebinding"], resource_deps=["clusterroles"], labels=["core"])
247254

248-
k8s_yaml(helm_with_build_cache("disabled/reloader", namespace="faf-ops", values=["config/local.yaml"]))
249-
k8s_resource(workload="release-name-reloader", new_name="reloader", objects=["release-name-reloader:serviceaccount", "release-name-reloader-metadata-role:role", "release-name-reloader-role:clusterrole", "release-name-reloader-metadata-role-binding:rolebinding", "release-name-reloader-role-binding:clusterrolebinding"], resource_deps=["namespaces"], labels=["core"])
255+
if not is_ci:
256+
k8s_yaml(helm_with_build_cache("disabled/reloader", namespace="faf-ops", values=["config/local.yaml"]))
257+
k8s_resource(workload="release-name-reloader", new_name="reloader", objects=["release-name-reloader:serviceaccount", "release-name-reloader-metadata-role:role", "release-name-reloader-role:clusterrole", "release-name-reloader-metadata-role-binding:rolebinding", "release-name-reloader-role-binding:clusterrolebinding"], resource_deps=["namespaces"], labels=["core"])
250258

251259
storage_yaml = helm_with_build_cache("cluster/storage", values=["config/local.yaml"], set=["dataPath="+data_absolute_path])
252260
storage_yaml = to_hostpath_storage(storage_yaml, use_named_volumes=use_named_volumes)

0 commit comments

Comments
 (0)