Repository navigation
feat(#56): boot the explicit-token, single-node and >= 26.11.1 root-password-file routes in CI - #65
Merged
robfrank merged 1 commit intoOct 23, 2026
Conversation
…assword-file routes in CI Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
6 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #56
The kind integration suite now boots every route the chart can take to hand the root password and the HA cluster token to the server.
integration-reusable.ymlgains aclusterTokenSecretinput (it creates the Secret and setsarcadedb.credentials.clusterToken.secret.*) and areplicaCountinput.ci/integration-test.shtakesCLUSTER_TOKEN_SECRET/CLUSTER_TOKEN_KEY/REPLICAS. It works out which token Secret the chart should mount (mirroringarcadedb.credentials.mountClusterToken), and phase 9's file branch checks for exactly that: when a token is expected,clusterTokenPathis present and the projectedclusterTokenfile comes from the expected Secret/key. When none is expected,clusterTokenPathis absent. The env-var route must be unused in both cases. WithREPLICAS=1the Raft phases (3, 6, 7, 12) are skipped and pod-0 takes the writes.New jobs:
lint.yml/integration-cluster-token: HA, user root password Secret + user cluster token Secret, appVersion image.lint.yml/integration-single-node:replicaCount: 1.latest-image.yml/integration-root-password-file-snapshot: HA, user root password Secret, no token,26.11.1-SNAPSHOT. The chart reads that tag as >= 26.11.1, so it mounts the password file only and the server derives the token from it (fix(#10462): HA derives its cluster token from rootPasswordPath, and the StatefulSet mounts its own token arcadedb#10479, merged 2026-10-21). Phase 12, a write through a follower, checks that the nodes derived matching tokens.Finding ledger
clusterToken.secret.name→ two Secrets, both filesintegration-cluster-token(PR CI)rootPasswordPathonly26.11.1-SNAPSHOT); running it on PRs against a pinned 26.11.1 is #64rootPasswordPathonlyintegration-single-node(PR CI)Test plan
actionlint .github/workflows/*.ymlclean;shellcheck -S warning ci/integration-test.shclean (the two remaining SC2016 infos were already there)helm templateand ran phase 9's jq projected-volume lookup on it: generated →arcadedb-credentials-secret/clusterToken; explicit token →ct/clusterToken; single node and 26.11.1-SNAPSHOT + user Secret → no token file, no env var-Xmx768M). All 12 phases passed (or were skipped as intended) for each: single-node, cluster-token, snapshot-file (26.11.1-SNAPSHOT), default HA (regression)integration,integration-native,integration-root-password-env,integration-cluster-token,integration-single-nodegreenintegration-root-password-file-snapshotCoverage
Invariant: every route
arcadedb.credentials.rootPasswordFromFile/mountClusterTokencan choose is booted by at least one kind job._helpers.tpl)integration,integration-native, latest guard (existing)integration-root-password-env(existing, #54)integration-cluster-token(new)integration-root-password-file-snapshot(new, weekly guard)integration-single-node(new)autoscaling.enabledwithreplicaCount: 1arcadedb.ha.enabledtreats it the same asreplicaCount > 1, so the route is identical to the rows above; helm-unittest covers the switchmountClusterTokenroute as the explicit-token row, with a different Secret name for the password; helm-unittest covers the renderingKnown gaps
lint.ymlonce it is released; README release-bump checklist step 4 says the same).Adversarial pass
Not run as a separate subagent: this session had no subagent-spawning tool. I did a self-review instead:
REPLICAS=1withROOT_PASSWORD_FROM=envor with a token Secret would assert a route the chart never takes → real, so the script refuses those combinations up front.arcadedb.server.rootPasswordis in the pod env on the file route.Review cycles
f5c0c93, the initial change. Noclaudereview arrived within 15 minutes. This repository has no Claude Code Review workflow (.github/workflowsholds only integration-reusable, latest-image, lint and release), and earlier PRs such as feat(#52): allow a Gremlin port other than 8182 when gremlin-server.yaml sets it #60 got no bot review either, so no review will come.Deferred items
None (no review feedback was received).
Final state
timeout: the automated reviewer never responded. All 8 PR checks are green, and the dispatched latest-image guard run is green too. The PR is ready for human review. Merging is the developer's call.🤖 Generated with Claude Code