test(ci): restore the theme mount - the A/B shows the restart is pre-existing
Validate Helm Charts / Detect changed charts (pull_request) Successful in 3s
Validate Helm Charts / Resource quantities (pull_request) Successful in 14s
Validate Helm Charts / Build keycloak (pull_request) Successful in 4s
Validate Helm Charts / Trivy config keycloak (pull_request) Successful in 12s
Install-test / Install-test keycloak (pull_request) Successful in 3m10s
Validate Helm Charts / Install-test (pull_request) Successful in 3m10s
Publish Helm Chart with patched Application Version / publish-helm-chart (push) Successful in 7s
Publish Keycloak Helm Chart / Publish Keycloak Helm Chart (push) Successful in 7s
SonarQube Analysis / SonarQube Analysis (push) Successful in 28s

This commit was merged in pull request #92.
This commit is contained in:
jklein committed 2026-10-06 11:43:46 +00:00
1 parent 8cd0c14e3f
commit 6e196c26a5
1 file changed
+46 -47
+46 -47
View File
@@ -30,32 +30,39 @@
# first over the database would fail the run. Measured in Gitea PR #87: # first over the database would fail the run. Measured in Gitea PR #87:
# 71.8s from `helm install` to both Ready, 0 restarts - three runs, all # 71.8s from `helm install` to both Ready, 0 restarts - three runs, all
# three 72s and 0 restarts. # three 72s and 0 restarts.
# THE RUNS OF PR #92 WERE NOT THAT, AND THE NUMBERS ARE RECORDED RATHER # THAT WAS LUCK, OR A FAST WEEK, AND NOT AN INVARIANT - which took an A/B
# THAN SMOOTHED. Identical pod spec in all four - the later commits on that # inside Gitea PR #92 to establish, because the first five runs there made
# branch change comments only: # it look like the new theme mount had destabilized the start:
# run 585: 101s, ONE restart on one of the two pods # WITH the theme mount (spec of #88)
# run 590: 82s, 0 restarts # run 585: 101s, ONE restart on one pod
# run 593: 191s, 0 restarts # run 590: 82s, 0
# run 595: 101s, ONE restart on one of the two pods # run 593: 191s, 0
# Three things that are worth more than the average: the restart is # run 595: 101s, ONE
# INTERMITTENT on an unchanged spec (2 of 4), it is always exactly ONE on # run 597: 111s, ONE -> 3 of 5
# ONE pod, about 35s before that pod reports Ready - and it does not track # WITHOUT it (the same branch, the pair commented out; pod template
# the runner's speed, which was the first explanation and does not hold: # hash 5844db56b6, i.e. BYTE-IDENTICAL to the spec PR #87 measured)
# the FASTEST (82s) and the SLOWEST (191s) run restarted nothing, and the # run 598: 81s, 0
# two that restarted were both 101s. # run 599: 171s, ONE -> 1 of 2
# WHAT THE RESTART IS HAS NOT BEEN ESTABLISHED, and that is the lasting # So the restart happens WITHOUT the mount as well, and #88 is not its
# finding of the series: the harness dumps container logs only when a run # cause. It is pre-existing, intermittent behaviour of THIS chart's first
# FAILS (diagnose() hangs off the EXIT trap behind "RC -ne 0") and all four # install: always exactly one restart on one pod, 35-80s before that pod
# passed - A GREEN RUN CANNOT EXPLAIN A RESTART IT REPORTS. Answering it # reports Ready. It does not track the runner's speed either - the fastest
# (81s) and the slowest (191s) run of the whole series restarted nothing.
# WHAT THE RESTART IS HAS NOT BEEN ESTABLISHED, and that is the finding
# worth keeping: the harness dumps container logs only when a run FAILS
# (diagnose() hangs off the EXIT trap behind "RC -ne 0") and all seven runs
# PASSED - A GREEN RUN CANNOT EXPLAIN A RESTART IT REPORTS. Answering it
# means making the final-state step print the restart reasons whenever a # means making the final-state step print the restart reasons whenever a
# counter is above zero; that is a change to ci/run-install-test.sh and it # counter is above zero; that is a change to ci/run-install-test.sh with a
# was deliberately NOT made inside #88. # CI-CD wiki obligation of its own, and it was deliberately NOT made inside
# The counting stops here on purpose - every further commit adds a run, and # #88. A first install that serializes two replicas on the Liquibase
# a comment that chases the tally is wrong at the next push. What is worth # migration lock is a plausible place for it - stated as the hypothesis it
# carrying is the shape, not the tally: "0 restarts" is an observation, not # is, because nothing here measured it.
# an invariant of this chart, and a first install that serializes two # THE METHOD IS THE PART TO REUSE: a counter that moved in the same round
# replicas on a schema migration lock is a plausible place for one - which # as a change is not evidence against the change until the control case has
# is a hypothesis, stated as one, because nothing here measured it. # run on the SAME machine. Three clean runs two days earlier were not that
# control, and treating them as one would have cost this PR its conclusion
# in both directions.
# 5. A MOUNTED LOGIN THEME SURVIVES ALL OF THAT (Gitea #88) - the full # 5. A MOUNTED LOGIN THEME SURVIVES ALL OF THAT (Gitea #88) - the full
# argument sits at keycloak.extraVolumes further down, including what it # argument sits at keycloak.extraVolumes further down, including what it
# still does not prove. # still does not prove.
@@ -181,28 +188,20 @@ keycloak:
# the subpath hides nothing is a property of the mount path rather than a # the subpath hides nothing is a property of the mount path rather than a
# measurement - and the kcLogoIdP line needs a browser plus a realm setting, # measurement - and the kcLogoIdP line needs a browser plus a realm setting,
# neither of which exists in CI. # neither of which exists in CI.
# TEMPORARILY DISABLED FOR AN A/B MEASUREMENT, RESTORED BEFORE THIS PR IS extraVolumes:
# MERGED. Three of five runs with the mount restarted one pod once, while the - name: login-theme
# three runs of PR #87 without it restarted none - too close to be dismissed configMap:
# and not establishable from a green log. So the control case is measured on name: ci-keycloak-theme
# the SAME runner: this commit is the chart's pre-#88 fixture, the next one items:
# puts the mount back with the numbers written down. - key: theme.properties
# Control runs so far: 598 -> 81s, 0 restarts (pod template hash 5844db56b6, path: login/theme.properties
# i.e. byte-identical to the spec PR #87 measured). extraVolumeMounts:
# If this commit is what - name: login-theme
# reaches main, the restore was lost and the install-test no longer walks the # THE SUBPATH, AND THE WHOLE POINT OF THE EXAMPLE: a volume on
# path #88 added. # /opt/keycloak/themes would hide the image's own three themes and break
# extraVolumes: # the login page while the pod stayed Ready.
# - name: login-theme mountPath: /opt/keycloak/themes/ci-theme
# configMap: readOnly: true
# name: ci-keycloak-theme
# items:
# - key: theme.properties
# path: login/theme.properties
# extraVolumeMounts:
# - name: login-theme
# mountPath: /opt/keycloak/themes/ci-theme
# readOnly: true
ingress: ingress:
# Left ON although no ingress controller answers in CI: the point is that # Left ON although no ingress controller answers in CI: the point is that