60 lines
1.5 KiB
Bash
Executable File
60 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
repo_root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
|
|
chart_dir="${repo_root}/helm"
|
|
rendered_manifest="$(mktemp --suffix=.yaml)"
|
|
release_name="${RELEASE_NAME:-agentguard-ci}"
|
|
|
|
cleanup() {
|
|
rm -f "${rendered_manifest}"
|
|
}
|
|
|
|
require_command() {
|
|
if ! command -v "$1" >/dev/null 2>&1; then
|
|
printf 'Missing required command: %s\n' "$1" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
run_kubectl_client_check() {
|
|
require_command kubectl
|
|
if ! kubectl apply --dry-run=client --validate=false -f "${rendered_manifest}" >/dev/null 2>&1; then
|
|
cat <<'EOF' >&2
|
|
kubectl client dry-run failed.
|
|
For Argo CRDs, this check can still be environment-sensitive and is optional here.
|
|
Re-run without RUN_KUBECTL_CLIENT_CHECK=1, or use RUN_KUBECTL_SERVER_CHECK=1 against a cluster with the CRDs installed.
|
|
EOF
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
run_kubectl_server_check() {
|
|
require_command kubectl
|
|
kubectl apply --dry-run=server -f "${rendered_manifest}" >/dev/null
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
|
|
require_command helm
|
|
require_command argo
|
|
|
|
printf '==> helm lint\n'
|
|
helm lint "${chart_dir}"
|
|
|
|
printf '==> helm template\n'
|
|
helm template "${release_name}" "${chart_dir}" > "${rendered_manifest}"
|
|
|
|
printf '==> argo lint --offline\n'
|
|
argo lint --offline --kinds=clusterworkflowtemplates "${rendered_manifest}"
|
|
|
|
if [[ "${RUN_KUBECTL_CLIENT_CHECK:-0}" == "1" ]]; then
|
|
printf '==> kubectl apply --dry-run=client\n'
|
|
run_kubectl_client_check
|
|
fi
|
|
|
|
if [[ "${RUN_KUBECTL_SERVER_CHECK:-0}" == "1" ]]; then
|
|
printf '==> kubectl apply --dry-run=server\n'
|
|
run_kubectl_server_check
|
|
fi
|