This repository has been archived on 2026-11-08. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
james.maesandCodex 6318d90e96 feat: centralize lightweight GitOps rendering validation (#50)
Add a read-only native worker and canonical consumer bridge. Verify the pinned Kustomize binary, render every configuration without logging resources, and audit adoption. Behavioral and audit tests pass; all five marketing GitOps configurations render successfully.

Co-authored-by: Codex <noreply@openai.com>
2026-10-20 21:54:25 -05:00

39 lines
1.5 KiB
YAML

name: GitOps validation
'on':
workflow_call:
permissions:
contents: read
jobs:
validate:
runs-on: ubuntu-24.04
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- name: Install verified Kustomize
shell: bash
run: |
set -euo pipefail
tool_dir="$RUNNER_TEMP/qqq-kustomize"
mkdir -p "$tool_dir"
curl --fail --silent --show-error --location --retry 2 --max-time 60 \
https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v5.7.1/kustomize_v5.7.1_linux_amd64.tar.gz \
--output "$tool_dir/kustomize.tar.gz"
echo "ea375e7372f9aa029129d4b2d16c66b7750b7f1213c4f66f910d981c895818d8 $tool_dir/kustomize.tar.gz" | sha256sum --check --status
tar -xzf "$tool_dir/kustomize.tar.gz" -C "$tool_dir" kustomize
echo "$tool_dir" >> "$GITHUB_PATH"
- name: Render every Kustomization
shell: bash
run: |
set -euo pipefail
mapfile -d '' manifests < <(find . -path './.git' -prune -o -type f \( -name kustomization.yaml -o -name kustomization.yml -o -name Kustomization \) -print0)
if (( ${#manifests[@]} == 0 )); then
echo 'No Kustomization found' >&2
exit 1
fi
for manifest in "${manifests[@]}"; do
directory=$(dirname "$manifest")
# Rendered Secrets must never enter logs or uploaded artifacts.
kustomize build "$directory" >/dev/null
printf 'Validated %s\n' "$directory"
done