name: e2e

on:
  workflow_dispatch:
  push:
    branches: [ '*' ]
    tags-ignore: [ '*' ]

jobs:
  kubernetes:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Setup Flux
        uses: fluxcd/flux2/action@main
      - name: Setup Kubernetes
        uses: helm/kind-action@v1.7.0
        with:
          cluster_name: flux
      - name: Install Flux in Kubernetes Kind
        run: flux install
      - name: Setup cluster reconciliation
        run: |
          flux create source git flux-system \
          --url=${{ github.event.repository.html_url }} \
          --branch=${GITHUB_REF#refs/heads/} \
          --username=${GITHUB_ACTOR} \
          --password=${{ secrets.GITHUB_TOKEN }} \
          --ignore-paths="clusters/**/flux-system/"
          flux create kustomization flux-system \
          --source=flux-system \
          --path=./clusters/staging
      - name: Verify cluster reconciliation
        run: |
          kubectl -n flux-system wait kustomization/infra-controllers --for=condition=ready --timeout=5m
          kubectl -n flux-system wait kustomization/apps --for=condition=ready --timeout=5m
      - name: Verify helm reconciliation
        run: |
          kubectl -n podinfo wait helmrelease/podinfo --for=condition=ready --timeout=5m
      - name: Debug failure
        if: failure()
        run: |
          kubectl -n flux-system get all
          kubectl -n flux-system logs deploy/source-controller
          kubectl -n flux-system logs deploy/kustomize-controller
          kubectl -n flux-system logs deploy/helm-controller
          flux get all --all-namespaces