name: Constellation destroy description: "Destroy a running Constellation cluster." inputs: kubeconfig: description: "The kubeconfig for the cluster." required: true selfManagedInfra: description: "Use self-managed infrastructure instead of infrastructure created by the Constellation CLI." required: true runs: using: "composite" steps: - name: Delete persistent volumes if: inputs.kubeconfig != '' shell: bash env: KUBECONFIG: ${{ inputs.kubeconfig }} PV_DELETION_TIMEOUT: "120" # 2 minutes timeout for pv deletion run: | ELAPSED=0 echo "::group::Wait for PV deletion" # Scrap namespaces that contain PVCs for namespace in `kubectl get namespace --no-headers=true -o custom-columns=":metadata.name"`; do if [[ `kubectl get pvc -n $namespace --no-headers=true -o custom-columns=":metadata.name" | wc -l` -gt 0 ]]; then kubectl delete namespace $namespace --wait fi done until [[ "$(kubectl get pv -o json | jq '.items | length')" == "0" ]] || [[ $ELAPSED -gt $PV_DELETION_TIMEOUT ]]; do echo $(kubectl get pv -o json | jq '.items | length') PV remaining.. sleep 1 ELAPSED=$((ELAPSED+1)) done if [[ $ELAPSED -gt $PV_DELETION_TIMEOUT ]]; then echo "Timed out waiting for PV deletion.." exit 1 fi echo "::endgroup::" - name: Constellation terminate if: inputs.selfManagedInfra != 'true' shell: bash run: | constellation terminate --yes --tf-log=DEBUG - name: Constellation terminate (self-managed) if: inputs.selfManagedInfra == 'true' shell: bash working-directory: ${{ github.workspace }}/e2e-infra run: | terraform init terraform destroy -auto-approve rm -f ${{ github.workspace }}/constellation-state.yaml rm -f ${{ github.workspace }}/constellation-admin.conf