Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/retired-repo-links.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"version": 1,
"repositories": ["devantler-tech/reusable-workflows"],
"paths": ["README.md", "AGENTS.md"],
"exceptions": []
}
59 changes: 56 additions & 3 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -630,7 +630,7 @@ jobs:
|| (github.event_name == 'pull_request'
&& github.event.pull_request.head.repo.full_name == github.repository
&& needs.changes.outputs.govuln-allowlist == 'true')
uses: devantler-tech/.github/.github/workflows/validate-go-project.yaml@ef34177c48310d4e8d6605233cb7218b926dcc55 # v7.2.11
uses: devantler-tech/.github/.github/workflows/validate-go-project.yaml@fca583ac795d56928c5b542944b6e0963ea1e270 # v7.8.5
# The canonical defaults make a default-branch run answer "did the check run" rather than
# "did the diff touch a Go file". On main the branch's green IS the protection
# signal, so a path filter that skips the suite or the scan leaves main green
Expand Down Expand Up @@ -1838,7 +1838,7 @@ jobs:

- name: 📥 Restore KSail binary
# Pin the identical published action until actionlint supports $/ references.
uses: devantler-tech/ksail/.github/actions/restore-ksail-binary@f9172ab810fdcb94b47351d04d70708f6878e10a
uses: devantler-tech/ksail/.github/actions/restore-ksail-binary@3115397431e2bdf31d911930908a9002a93a4340
with:
artifact-id: ${{ needs.build-artifact.outputs.artifact-id }}
binary-sha256: ${{ needs.build-artifact.outputs.binary-sha256 }}
Expand Down Expand Up @@ -2205,7 +2205,7 @@ jobs:
with:
persist-credentials: false
- name: 🧹 Free runner disk
uses: devantler-tech/ksail/.github/actions/free-disk-space@32f92acde3dcf290d21d50639a805f0cf42b7b30
uses: devantler-tech/ksail/.github/actions/free-disk-space@3115397431e2bdf31d911930908a9002a93a4340
- name: ⚙️ Setup Go
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
with:
Expand Down Expand Up @@ -2288,12 +2288,64 @@ jobs:
if-no-files-found: error
retention-days: 14

retired-repo-links:
name: Retired repository links
runs-on: ubuntu-latest
permissions:
contents: read
timeout-minutes: 10
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Check active documentation
id: links
uses: devantler-tech/.github/actions/validate-retired-repo-links@bd0035dd8f41fcf1459b878882b8897443f8dc59 # v4.9.4
with:
enabled: "true"
- name: Require a completed scan
env:
VALIDATED: ${{ steps.links.outputs.validated }}
run: test "$VALIDATED" = true
- name: Check out the exact validator for refusal controls
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: devantler-tech/.github
ref: bd0035dd8f41fcf1459b878882b8897443f8dc59 # v4.9.4
path: .retired-link-validator-source
persist-credentials: false
- name: Prove retired links and incomplete scans fail
env:
GOWORK: "off"
GOFLAGS: ""
GOTOOLCHAIN: local
run: |
set -euo pipefail
control=$(mktemp -d "$RUNNER_TEMP/retired-links.XXXXXX")
trap 'rm -rf "$control"' EXIT
mkdir "$control/.github"
cp .github/retired-repo-links.json "$control/.github/"
cp README.md AGENTS.md "$control/"
go -C .retired-link-validator-source/actions/validate-retired-repo-links build -mod=readonly -trimpath -o "$control/validator" .
printf '\nhttps://github.com/devantler-tech/reusable-workflows\n' >>"$control/README.md"
status=0
"$control/validator" --root "$control" >"$control/negative.log" 2>&1 || status=$?
test "$status" = 1 || { cat "$control/negative.log"; exit 1; }
grep -Eq '^README.md:[0-9]+: link targets retired repository devantler-tech/reusable-workflows$' "$control/negative.log"
rm "$control/.github/retired-repo-links.json"
status=0
"$control/validator" --root "$control" >"$control/missing.log" 2>&1 || status=$?
test "$status" = 2 || { cat "$control/missing.log"; exit 1; }
grep -q '^Invalid configuration:' "$control/missing.log"
echo 'PASS: clean scan, seeded retired link rejection, and missing configuration refusal'

require-checks-in-pr:
name: ${{ github.event_name == 'workflow_dispatch' && inputs.run_local_recovery_trial && 'Local Recovery Trial - Checks' || 'CI - Required Checks' }}
runs-on: ubuntu-latest
timeout-minutes: 5
needs:
[
retired-repo-links,
rate-limit-gate,
changes,
ci-go,
Expand Down Expand Up @@ -2333,6 +2385,7 @@ jobs:
- uses: devantler-tech/actions/aggregate-job-checks@1d726483facb9340655489913f609082677be8f5 # v13.10.6
with:
job-results: >-
${{ needs.retired-repo-links.result }}
${{ needs.rate-limit-gate.result }}
${{ needs.changes.result }}
${{ needs.ci-go.result }}
Expand Down
2 changes: 2 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,8 @@ linters:
- github.com/kubescape/kubescape/v3
- github.com/moby/go-archive
- k8s.io/pod-security-admission
# Flux meta's unchanged API retains the embedded Kubernetes minor (#7259).
- k8s.io/apimachinery
wsl_v5:
allow-first-in-block: true
allow-whole-block: false
Expand Down
2 changes: 2 additions & 0 deletions docs/src/content/docs/guides/cluster-provisioning.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ spec:

For a KSail-managed Cluster Autoscaler on Talos with Hetzner, `cluster diff` also compares the installed Helm values with the values rendered by the current KSail version. A mismatch appears as `cluster.autoscaler.node.chartValues`; `cluster update` applies it even when `ksail.yaml` has not changed. KSail runs the same check for cert-manager when `spec.cluster.certManager` is `Enabled`, and reports a mismatch as `cluster.certManager.chartValues`. Both operations use the resolved cluster context. Releases managed by Flux or Argo CD are excluded from this check and remain under GitOps control.

KSail recognizes a Flux-owned release from its HelmRelease even when Helm's storage labels do not identify Flux. This discovery requires permission to list HelmReleases across namespaces; if that ownership read fails, KSail reports the failure rather than treating an unreadable release as unmanaged. Clusters without the Flux HelmRelease API continue to use Helm's storage labels.

If a release cannot be inspected, KSail prints a warning and continues with the other diff checks. Resolve that warning before treating the absence of a chart-values change as confirmation that the component's settings match.

## Version Upgrades
Expand Down
17 changes: 11 additions & 6 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/devantler-tech/ksail/v7

go 1.26.8
go 1.26.9

// Exclude the standalone google.golang.org/grpc/stats/opentelemetry module to avoid
// ambiguous import errors. The opentelemetry stats package is included in the main
Expand All @@ -16,7 +16,7 @@ require (
github.com/fatih/color v1.19.0
github.com/fluxcd/helm-controller/api v1.6.5
github.com/fluxcd/kustomize-controller/api v1.9.5
github.com/fluxcd/pkg/apis/meta v1.31.0
github.com/fluxcd/pkg/apis/meta v1.32.0
github.com/fluxcd/source-controller/api v1.9.5
github.com/getsops/sops/v3 v3.13.3
github.com/gkampitakis/go-snaps v0.5.23
Expand All @@ -39,7 +39,7 @@ require (
helm.sh/helm/v4 v4.2.4
k8s.io/api v0.36.5
k8s.io/apiextensions-apiserver v0.36.5
k8s.io/apimachinery v0.36.5
k8s.io/apimachinery v0.37.0
k8s.io/cli-runtime v0.36.5
k8s.io/client-go v0.36.5
k8s.io/kubectl v0.36.5
Expand Down Expand Up @@ -84,7 +84,7 @@ require (
github.com/googleapis/gax-go/v2 v2.26.2
github.com/gopacket/gopacket v1.7.3
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674
github.com/hetznercloud/hcloud-go/v2 v2.47.0
github.com/hetznercloud/hcloud-go/v2 v2.49.0
github.com/invopop/jsonschema v0.14.0
github.com/kubescape/kubescape/v3 v3.0.48
github.com/kubescape/opa-utils v0.0.314
Expand Down Expand Up @@ -956,7 +956,7 @@ require (
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.71.0 // indirect
go.opentelemetry.io/contrib/instrumentation/runtime v0.62.0 // indirect
go.opentelemetry.io/otel v1.46.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.21.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.22.0
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.44.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.44.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.45.0 // indirect
Expand Down Expand Up @@ -984,7 +984,7 @@ require (
golang.org/x/exp v0.0.0-20260908205506-85c1c2202aba // indirect
golang.org/x/exp/typeparams v0.0.0-20260209203927-2842357ff358 // indirect
golang.org/x/image v0.45.0 // indirect
golang.org/x/net v0.59.0 // indirect
golang.org/x/net v0.60.0 // indirect
golang.org/x/sys v0.48.0
golang.org/x/telemetry v0.0.0-20260908163034-4bcc4b2ee518 // indirect
golang.org/x/time v0.15.0 // indirect
Expand Down Expand Up @@ -1127,3 +1127,8 @@ tool (
github.com/golangci/golangci-lint/v2/cmd/golangci-lint
golang.org/x/tools/cmd/deadcode
)

// Flux meta v1.32.0 has unchanged Go APIs but requires Kubernetes v0.37.0.
// Keep its runtime compatible with the embedded v0.36 tools until #7259 lands.
// Qualify this mapping so a later requirement cannot reuse it without validation.
replace k8s.io/apimachinery v0.37.0 => k8s.io/apimachinery v0.36.5
24 changes: 12 additions & 12 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -940,8 +940,8 @@ github.com/fluxcd/pkg/apis/acl v0.10.0 h1:KPfAmELNvtvaz8wixnm/MYXqa+MJf7ntVVMUU9
github.com/fluxcd/pkg/apis/acl v0.10.0/go.mod h1:a87i2A7AlFO5N2J8CxtzaUCCDmuLLWOHwkKu3eJF5fY=
github.com/fluxcd/pkg/apis/kustomize v1.19.2 h1:/E8Nmn1XdAGUIqxI5vK60WemyBX3pIpfmP3mr/E3p9c=
github.com/fluxcd/pkg/apis/kustomize v1.19.2/go.mod h1:HryXaJ1GpvagUOmh5uMkVtXVlfXWdKjc3/5IlLsjyzI=
github.com/fluxcd/pkg/apis/meta v1.31.0 h1:5niQvTirK0wTE0TfRjnUSdmu6GTSbAFzrdnovtZ9rJ8=
github.com/fluxcd/pkg/apis/meta v1.31.0/go.mod h1:Gx+YRq26a+mTbCjotSXC7/6kSSyo0zXQ8JnsEXf2vVk=
github.com/fluxcd/pkg/apis/meta v1.32.0 h1:jWuNuIziUM8NOrhZB7vovdFQ4wBYRNJoAn+XUoYlj1I=
github.com/fluxcd/pkg/apis/meta v1.32.0/go.mod h1:bZmU0RbSwFzsCg9sgjhbSWxgSbUy+3Oh/s7qUCZjwPk=
github.com/fluxcd/pkg/oci v0.45.0 h1:lPtxqqzDOF3TAYx+Y91nULFiLzgmE8XDHt/uZwBqx44=
github.com/fluxcd/pkg/oci v0.45.0/go.mod h1:i4kFlYDC84u6vtIE54eco/ArcLPXqTv+/Gt7ncSKmoE=
github.com/fluxcd/pkg/ssa v0.77.0 h1:HaDg7XDQGfVTFY379GrnnhrON1CQLjrLmyGbbTw5Ohc=
Expand Down Expand Up @@ -1480,8 +1480,8 @@ github.com/hashicorp/vault/api v1.23.0 h1:gXgluBsSECfRWTSW9niY2jwg2e9mMJc4WoHNv4
github.com/hashicorp/vault/api v1.23.0/go.mod h1:zransKiB9ftp+kgY8ydjnvCU7Wk8i9L0DYWpXeMj9ko=
github.com/henvic/httpretty v0.2.0 h1:U4pKgF9SV4uRrE/7PF85TVnCJxXA91zKFpYU0iFwFOw=
github.com/henvic/httpretty v0.2.0/go.mod h1:4LSlqxtJoYd+gt1lsqh9omUUziIVwoVsxdW15hZHTcI=
github.com/hetznercloud/hcloud-go/v2 v2.47.0 h1:SI7C4cvdYReb2aHUEQ8KBMOqxNnmd4hOZti1SbPq3Qk=
github.com/hetznercloud/hcloud-go/v2 v2.47.0/go.mod h1:pdG7fFGlYsCAaJ9r0QOIF0O6wQcpbJxT2VT8aP6XlIc=
github.com/hetznercloud/hcloud-go/v2 v2.49.0 h1:QXONxfgXIF99PFJknkVw+LrQQB4PB5IbEjEDh4Hfmig=
github.com/hetznercloud/hcloud-go/v2 v2.49.0/go.mod h1:J9QH6j8pRH0K3+HlqgOlQ8abXagWTD/GpTkfra2et+g=
github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
github.com/hhrutter/lzw v1.0.0 h1:laL89Llp86W3rRs83LvKbwYRx6INE8gDn0XNb1oXtm0=
Expand Down Expand Up @@ -2031,8 +2031,8 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
github.com/onsi/gomega v1.42.1 h1:iN1rCUX+44NZ1Dc97MPoeFYbFR0vh8zxoxMFwKdyZ6I=
github.com/onsi/gomega v1.42.1/go.mod h1:REff/hsDsodHoKlWsP2mAPhu1+5/6hVYNf9rIEBpeSg=
github.com/onsi/gomega v1.43.0 h1:VlG/1FxqNxhSO+lq/OHBNaaqwiBK/mO8JbVkX9Y+FeU=
github.com/onsi/gomega v1.43.0/go.mod h1:REff/hsDsodHoKlWsP2mAPhu1+5/6hVYNf9rIEBpeSg=
github.com/open-policy-agent/gatekeeper/v3 v3.17.0 h1:8jiY9rgWRofEJeJLm4gyme97fwvqTbv9+QoerMGXCuU=
github.com/open-policy-agent/gatekeeper/v3 v3.17.0/go.mod h1:LIk/6du1AV47s+aU1ovKNKzOCHIsEmEImUN/72DL3zw=
github.com/open-policy-agent/opa v1.17.1 h1:wO0MOux/VCqY41aVAD6Toe1p3A7O7DlRZ1RHmYSpoS8=
Expand Down Expand Up @@ -2736,8 +2736,8 @@ go.opentelemetry.io/otel v1.46.0 h1:FHt5/CDyVxi/8IM1CH7VE/rRgq3kLHa2mSTVMO8AWyc=
go.opentelemetry.io/otel v1.46.0/go.mod h1:Gj3SEScelsNC45tp4nSxRYlS+f5iez7W8XPMCt905kE=
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0 h1:deI9UQMoGFgrg5iLPgzueqFPHevDl+28YKfSpPTI6rY=
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0/go.mod h1:PFx9NgpNUKXdf7J4Q3agRxMs3Y07QhTCVipKmLsMKnU=
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.21.0 h1:fvNHGyo3CdRv/DQveXqhqBxnKTDyRaC5sMSQxilX/A0=
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.21.0/go.mod h1:zyGrjRKL2B/6+Jc/m4/otPoZqV2MY9ZjC/aBraRO7zc=
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.22.0 h1:lYk7RmxdLK865qLwibroNGldHa1U7SWKYYvNjlK7PIo=
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.22.0/go.mod h1:6GvlND0H0xdUJanOtIAn0xfwLkauh1tmsYEEVSMDdqY=
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.44.0 h1:SUplec5dp06reu1zaXmOXdvqH398taqrDXqUl99jxSc=
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.44.0/go.mod h1:ho2g4N+ane+swq5I/VBkKWnRDY4kUINH3FuqyZqX/Ug=
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.44.0 h1:RuynHbfU8JUEw7DyONgkVYg2SVtsoF28y0LGIr69jgA=
Expand Down Expand Up @@ -2766,8 +2766,8 @@ go.opentelemetry.io/otel/sdk v1.46.0 h1:h5CNQQjEbuQXY/JfZtgt3i7HVFV3aHPO2OAwO2eT
go.opentelemetry.io/otel/sdk v1.46.0/go.mod h1:GAERFXFt5SYCEB+YiKUbMBeza6UaDH7GmGOZEfh2gSM=
go.opentelemetry.io/otel/sdk/log v0.22.0 h1:PRL+s6P63XT4E/bheEflopPUpVxuvANqZwtt89yhoGk=
go.opentelemetry.io/otel/sdk/log v0.22.0/go.mod h1:JNp0sBELrjCTcu5W3GzABVypeU6vDJjBS+X0JISuz+g=
go.opentelemetry.io/otel/sdk/log/logtest v0.21.0 h1:X+JBBgKlswCGYsmgL0CnoUUtlE//VB345c84jYAYkdQ=
go.opentelemetry.io/otel/sdk/log/logtest v0.21.0/go.mod h1:HD1575K8e6sIFBBDd5tZB3t9DlMytWXq9FuR+Y4rfjE=
go.opentelemetry.io/otel/sdk/log/logtest v0.22.0 h1:infPnfNrhCNgOUZRs3gWUg8vhoBUHihq02gwK05gzlg=
go.opentelemetry.io/otel/sdk/log/logtest v0.22.0/go.mod h1:gkQZA3z15Bv3KU9vigBTi8dFechSozRP7v94X4VZv+s=
go.opentelemetry.io/otel/sdk/metric v1.46.0 h1:0piZ26EG4RBfebb2jhDH6ERCYHoVWduc3kLgPCwSnSE=
go.opentelemetry.io/otel/sdk/metric v1.46.0/go.mod h1:I1PbKrdVc8Qu8HYVDNtqVIwLwjNrhsV/uFuxfwg8mO4=
go.opentelemetry.io/otel/trace v1.46.0 h1:OULy7ccdJnZtJ0UDYFOIGaCmiWzJ8Vi2G/Rsu60qs1c=
Expand Down Expand Up @@ -2972,8 +2972,8 @@ golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
golang.org/x/net v0.59.0 h1:5zfYln+w5XCxwrnMMJPufRgNoXEaGxl0wo5GqPXyues=
golang.org/x/net v0.59.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg=
golang.org/x/net v0.60.0 h1:79p50tfZlm0J9YfoDsSi639qSXNGVwEzOPLCxM2FsYU=
golang.org/x/net v0.60.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
Expand Down
6 changes: 3 additions & 3 deletions images/ksail-analysis-runner/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@ RUN printf 'APT::Snapshot "20261005T000000Z";\n' > /etc/apt/apt.conf.d/99ksail-a

RUN set -eu; \
case "${TARGETARCH}" in \
amd64) go_arch=amd64; go_sha=d0f743b33e8d8945e6b1f432edd15785c70507121d6e2a723b21285eddf8b57b; \
amd64) go_arch=amd64; go_sha=42d158b4d8f7b61ac0a830567c940a86098fb7aac52e467a5ebec03ef5cc2f8d; \
node_arch=x64; node_sha=df450af89261115ef9f9e3830c3eeb2cc9213b63c720b1af623cb5dcbe2e02de ;; \
arm64) go_arch=arm64; go_sha=211ffced9dcb9633a55eac6364816ec0ddd951389a740e88fa8b3337971bdda0; \
arm64) go_arch=arm64; go_sha=4a97373d49fcacdcf3694fea368a500b00ee3e963974f3e7514132717632f052; \
node_arch=arm64; node_sha=a44aeb94849a299b22df10b9e622ec2f605c2183501bc40590705131de7c740f ;; \
*) echo "Unsupported architecture: ${TARGETARCH}" >&2; exit 1 ;; \
esac; \
curl --fail --silent --show-error --location --max-time 120 \
"https://go.dev/dl/go1.26.8.linux-${go_arch}.tar.gz" --output /tmp/go.tar.gz; \
"https://go.dev/dl/go1.26.9.linux-${go_arch}.tar.gz" --output /tmp/go.tar.gz; \
printf '%s /tmp/go.tar.gz\n' "${go_sha}" | sha256sum --check --strict; \
tar -xzf /tmp/go.tar.gz -C /usr/local; \
curl --fail --silent --show-error --location --max-time 120 \
Expand Down
2 changes: 1 addition & 1 deletion images/ksail-analysis-runner/smoke.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ if touch /usr/local/ksail-analysis-write-probe 2>/dev/null; then
echo 'Root filesystem unexpectedly writable' >&2
exit 1
fi
test "$(go version)" = "go version go1.26.8 linux/$(go env GOARCH)"
test "$(go version)" = "go version go1.26.9 linux/$(go env GOARCH)"
test "$(node --version)" = v22.23.3
test "$(go env CGO_ENABLED)" = 1
test "$(go env GOFLAGS)" = -tags=desktop
Expand Down
2 changes: 1 addition & 1 deletion images/ksail-analysis-runner/smoke_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ esac`,
"pkg-config": "exit 0",
"cp": "echo 'live smoke attempted to bootstrap the active runner' >&2; exit 99",
"go": `case "$1" in
version) printf 'go version go1.26.8 linux/amd64\n' ;;
version) printf 'go version go1.26.9 linux/amd64\n' ;;
env) case "$2" in
GOARCH) printf 'amd64\n' ;;
CGO_ENABLED) printf '1\n' ;;
Expand Down
2 changes: 1 addition & 1 deletion internal/ciharness/binary_artifact_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func TestKSailBinaryArtifactDockerConsumer(t *testing.T) {
restore := findHarnessStep(t, consumer.Steps, "📥 Restore KSail binary")
assert.Equal(t,
"devantler-tech/ksail/.github/actions/restore-ksail-binary@"+
"f9172ab810fdcb94b47351d04d70708f6878e10a", restore.Uses)
"3115397431e2bdf31d911930908a9002a93a4340", restore.Uses)
assert.Equal(
t,
"${{ needs.build-artifact.outputs.artifact-id }}",
Expand Down
8 changes: 5 additions & 3 deletions internal/ciharness/go_maintenance_caller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,13 +82,14 @@ func validateGoMaintenanceIdentity(workflow ciWorkflow, caller todosWorkflow) er

job, found := workflow.Jobs["ci-go"]
// Reviewed catalogue revisions preserve the read-only maintenance boundary.
// One adds test-mode caches and the latest only moves the signed-fix pins; the caller still
// disables signed-fix jobs.
// The latest adds opt-in disk measurements and capacity-based cleanup. This
// caller keeps their defaults and still explicitly disables signed-fix jobs.
// Keep explicit reviewed identities: a syntactically valid SHA alone is insufficient.
reviewed := job.Uses == prefix+"0600006235510307a04efebcac1ac1f363f5f862" ||
job.Uses == prefix+"498fb4b11f129928d3af9a90e9c5a46f1c4dbd77" ||
job.Uses == prefix+"2fa404276b0ce5c0527683b080e39045045c4e42" ||
job.Uses == prefix+"ef34177c48310d4e8d6605233cb7218b926dcc55"
job.Uses == prefix+"ef34177c48310d4e8d6605233cb7218b926dcc55" ||
job.Uses == prefix+"fca583ac795d56928c5b542944b6e0963ea1e270"
if !found || !reviewed || len(job.Steps) != 0 ||
caller.Jobs["ci-go"].RunsOn != "" || !reflect.DeepEqual(job.Needs, []string{"changes"}) {
return errGoMaintenanceIdentity
Expand Down Expand Up @@ -130,6 +131,7 @@ func TestGoMaintenanceCallerAcceptsReviewedReleaseRevisions(t *testing.T) {
"498fb4b11f129928d3af9a90e9c5a46f1c4dbd77",
"2fa404276b0ce5c0527683b080e39045045c4e42",
"ef34177c48310d4e8d6605233cb7218b926dcc55",
"fca583ac795d56928c5b542944b6e0963ea1e270",
} {
t.Run(revision, func(t *testing.T) {
t.Parallel()
Expand Down
Loading
Loading