name: Chart CI

on:
  pull_request:
    paths:
      - 'charts/**'
      - 'config/initializers/version.rb'
      - '.github/workflows/chart-ci.yml'
  push:
    branches:
      - main
    paths:
      - 'charts/**'
      - 'config/initializers/version.rb'
      - '.github/workflows/chart-ci.yml'

jobs:
  version-sync:
    name: Verify Helm ↔ Rails version sync
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Check version alignment
        shell: bash
        run: |
          set -euo pipefail

          RAILS_VERSION=$(grep -oP '"\K[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?' config/initializers/version.rb | head -n 1 || true)
          if [ -z "$RAILS_VERSION" ]; then
            echo "::error::Could not extract a version string from config/initializers/version.rb — ensure it contains a quoted semver like VERSION = \"1.2.3\""
            exit 1
          fi
          CHART_VERSION=$(sed -n 's/^version: //p' charts/sure/Chart.yaml | head -n 1)
          APP_VERSION=$(sed -n 's/^appVersion: "\{0,1\}\([^"]*\)"\{0,1\}/\1/p' charts/sure/Chart.yaml | head -n 1)

          echo "Rails version (version.rb):     $RAILS_VERSION"
          echo "Helm chart version (Chart.yaml): $CHART_VERSION"
          echo "Helm appVersion (Chart.yaml):    $APP_VERSION"

          ERRORS=0

          if [ "$RAILS_VERSION" != "$CHART_VERSION" ]; then
            echo "::error::Chart version ($CHART_VERSION) does not match Rails version ($RAILS_VERSION)"
            ERRORS=$((ERRORS + 1))
          fi

          if [ "$RAILS_VERSION" != "$APP_VERSION" ]; then
            echo "::error::Chart appVersion ($APP_VERSION) does not match Rails version ($RAILS_VERSION)"
            ERRORS=$((ERRORS + 1))
          fi

          if [ "$ERRORS" -gt 0 ]; then
            echo ""
            echo "To fix: ensure version in config/initializers/version.rb matches"
            echo "both 'version' and 'appVersion' in charts/sure/Chart.yaml"
            exit 1
          fi

          echo "All versions are in sync."

  helm-checks:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Install Helm
        uses: azure/setup-helm@v4.3.1

      - name: Add chart dependencies repositories
        run: |
          helm repo add cloudnative-pg https://cloudnative-pg.github.io/charts
          helm repo add ot-helm https://ot-container-kit.github.io/helm-charts
          helm repo update

      - name: Build chart dependencies
        run: helm dependency build charts/sure

      - name: Lint chart
        run: helm lint charts/sure

      - name: Render templates
        run: helm template sure charts/sure --kube-version 1.25.0 >/tmp/sure-chart-rendered.yaml
