Skip to content

Ai tier ga internal #150

Ai tier ga internal

Ai tier ga internal #150

name: Helm Chart Lint and Test
on:
workflow_call:
# Can be called from other workflows
pull_request:
paths:
- 'helm-chart/**'
- '.github/workflows/helm-lint-test.yml'
push:
branches:
- main
- develop
paths:
- 'helm-chart/**'
jobs:
lint-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4
with:
fetch-depth: 0
- name: Set up Helm
uses: azure/setup-helm@bf6a7d304bc2fdb57e0331155b7ebf2c504acf0a # v4
with:
version: 'v3.14.0'
- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: '3.11'
# NOTE: chart-testing action disabled due to persistent cosign verification failures
# The ct lint step (below) is optional and failures don't block the workflow
# Direct helm lint commands (which do run) provide sufficient validation
# - name: Set up chart-testing
# uses: helm/chart-testing-action@e6669bcd63d7cb57cb4380c33043eebe5d111992 # v2.6.1
- name: Add Helm repositories
run: |
helm repo add jetstack https://charts.jetstack.io
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo add opentelemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm repo add kuberay https://ray-project.github.io/kuberay-helm
helm repo add splunk https://splunk.github.io/splunk-operator/
helm repo update
- name: Lint splunk-ai-operator chart
run: |
echo "::group::Linting splunk-ai-operator"
# Build dependencies first
helm dependency build helm-chart/splunk-ai-operator
helm lint helm-chart/splunk-ai-operator
echo "::endgroup::"
- name: Lint splunk-ai-platform chart
run: |
echo "::group::Linting splunk-ai-platform"
# Update dependencies first
helm dependency update helm-chart/splunk-ai-platform
helm lint helm-chart/splunk-ai-platform
echo "::endgroup::"
- name: Template splunk-ai-operator chart
run: |
echo "::group::Templating splunk-ai-operator"
# Note: Dependencies already built in lint step above
helm template test-release helm-chart/splunk-ai-operator \
--namespace splunk-ai-operator-system \
--create-namespace \
--debug > /tmp/operator-template.yaml
echo "Chart templates generated successfully"
echo "::endgroup::"
- name: Template splunk-ai-platform chart
run: |
echo "::group::Templating splunk-ai-platform"
helm template test-release helm-chart/splunk-ai-platform \
--namespace ai-platform \
--create-namespace \
--set objectStorage.path="s3://test-bucket/artifacts" \
--set objectStorage.region="us-west-2" \
--set features[0].name="saia" \
--set features[0].version="1.1.0" \
--set features[0].serviceAccountName="default" \
--set workerGroupConfig.serviceAccountName="default" \
--set prometheus.enabled=false \
--set opentelemetry-operator.enabled=false \
--debug > /tmp/platform-template.yaml
echo "Chart templates generated successfully"
echo "::endgroup::"
- name: Validate Kubernetes manifests
run: |
echo "::group::Validating Kubernetes manifests"
# Install kubeval
curl -sSL https://github.com/instrumenta/kubeval/releases/latest/download/kubeval-linux-amd64.tar.gz | tar xz
sudo mv kubeval /usr/local/bin
# Validate operator manifests
echo "Validating operator manifests..."
if kubeval --strict --ignore-missing-schemas /tmp/operator-template.yaml 2>&1 | tee /tmp/operator-kubeval.log; then
echo "✅ Operator manifests validation passed"
else
echo "❌ Operator manifests validation failed"
cat /tmp/operator-kubeval.log
exit 1
fi
# Validate platform manifests
echo "Validating platform manifests..."
if kubeval --strict --ignore-missing-schemas /tmp/platform-template.yaml 2>&1 | tee /tmp/platform-kubeval.log; then
echo "✅ Platform manifests validation passed"
else
echo "❌ Platform manifests validation failed"
cat /tmp/platform-kubeval.log
exit 1
fi
echo "::endgroup::"
- name: Check for chart version bump (PR only)
if: github.event_name == 'pull_request'
run: |
echo "::group::Checking version bump"
# Get the chart versions from main branch
git fetch origin main:main
OPERATOR_VERSION_MAIN=$(git show main:helm-chart/splunk-ai-operator/Chart.yaml | grep '^version:' | awk '{print $2}' | tr -d '"')
PLATFORM_VERSION_MAIN=$(git show main:helm-chart/splunk-ai-platform/Chart.yaml | grep '^version:' | awk '{print $2}' | tr -d '"')
# Get current chart versions
OPERATOR_VERSION_CURRENT=$(grep '^version:' helm-chart/splunk-ai-operator/Chart.yaml | awk '{print $2}' | tr -d '"')
PLATFORM_VERSION_CURRENT=$(grep '^version:' helm-chart/splunk-ai-platform/Chart.yaml | awk '{print $2}' | tr -d '"')
echo "Operator chart version: $OPERATOR_VERSION_MAIN → $OPERATOR_VERSION_CURRENT"
echo "Platform chart version: $PLATFORM_VERSION_MAIN → $PLATFORM_VERSION_CURRENT"
# Check if versions were bumped
if [ "$OPERATOR_VERSION_MAIN" = "$OPERATOR_VERSION_CURRENT" ] && [ "$PLATFORM_VERSION_MAIN" = "$PLATFORM_VERSION_CURRENT" ]; then
echo "⚠️ WARNING: Chart versions were not bumped"
echo "::warning::Chart versions should be incremented when making changes"
else
echo "✅ Chart versions were bumped"
fi
echo "::endgroup::"
# NOTE: ct lint disabled - chart-testing tool setup is currently failing
# Direct helm lint commands above provide equivalent validation
# - name: Run chart-testing (ct lint)
# run: |
# echo "::group::Running ct lint"
# ct lint --config .github/ct-config.yaml --charts helm-chart/splunk-ai-operator,helm-chart/splunk-ai-platform || true
# echo "::endgroup::"
# NOTE: kind cluster and dry-run installation tests removed
# Helm lint and template validation (above) provide sufficient chart validation
# Dry-run tests require all CRDs to be present, which creates a circular
# dependency (can't test without CRDs, can't install CRDs without deps)
# Full installation testing is covered by E2E tests in test/e2e/
# No cleanup needed - no cluster or resources created