name: sonobuoy
description: "Execute the e2e test framework sonobuoy."

inputs:
  cloudProvider:
    description: "CSP name necessary for artifact naming."
    required: true
  sonobuoyVersion:
    description: "Version of sonobuoy test CLI to use."
    default: "0.56.12"
    required: true
  sonobuoyTestSuiteCmd:
    description: "Which tests should be run?"
  kubeconfig:
    description: "The kubeconfig of the cluster to test."
    required: true

runs:
  using: "composite"
  steps:
    - name: Install sonobuoy
      shell: bash
      run: |
        HOSTOS="$(go env GOOS)"
        HOSTARCH="$(go env GOARCH)"
        curl -sLO https://github.com/vmware-tanzu/sonobuoy/releases/download/v${{ inputs.sonobuoyVersion }}/sonobuoy_${{ inputs.sonobuoyVersion }}_${HOSTOS}_${HOSTARCH}.tar.gz
        tar -xzf sonobuoy_${{ inputs.sonobuoyVersion }}_${HOSTOS}_${HOSTARCH}.tar.gz
        install sonobuoy /usr/local/bin

    - name: Sonobuoy version
      run: sonobuoy version
      shell: bash

    - name: Run e2e test
      shell: bash
      env:
        KUBECONFIG: ${{ inputs.kubeconfig }}
      run: sonobuoy run --wait=300 ${{ inputs.sonobuoyTestSuiteCmd }} --kubeconfig constellation-admin.conf

    - name: Download results
      shell: bash
      env:
        KUBECONFIG: ${{ inputs.kubeconfig }}
      run: sonobuoy retrieve --kubeconfig constellation-admin.conf

    - name: Upload test results
      if: ${{ always() && !env.ACT }}
      uses: actions/upload-artifact@83fd05a356d7e2593de66fc9913b3002723633cb # tag=v3.1.1
      with:
        name: "sonobuoy_logs_${{ inputs.cloudProvider}}.tar.gz"
        path: "*_sonobuoy_*.tar.gz"

    - name: Publish test results
      if: ${{ !env.ACT }}
      uses: mikepenz/action-junit-report@d507ab47ffeb036bd3671233143d8026470aa955 # v3.6.2
      with:
        report_paths: "**/junit_01.xml"
        fail_on_failure: true
