name: Verify
on:
  workflow_call:
    inputs:
      staging:
        description: 'Whether the release to verify is in the staging repository'
        required: false
        default: false
        type: boolean
      version:
        description: 'Version to verify'
        required: true
        type: string
    secrets:
      google-chat-webhook-url:
        description: 'Google Chat Webhook URL'
        required: true
      repository-password:
        description: 'Password for authentication with the repository'
        required: false
      repository-username:
        description: 'Username for authentication with the repository'
        required: false
      token:
        description: 'Token to use for authentication with GitHub'
        required: true
jobs:
  verify:
    name: Verify
    runs-on: ubuntu-latest
    steps:
      - name: Check Out Release Verification Tests
        uses: actions/checkout@v4
        with:
          ref: 'cbe06d1b44f4bb5a094d516e59680e61a89e30aa'
          repository: spring-projects/spring-ws-release-verification
          token: ${{ secrets.token }}
      - name: Check Out Send Notification Action
        uses: actions/checkout@v4
        with:
          path: send-notification
          sparse-checkout: .github/actions/send-notification
      - name: Set Up Java
        uses: actions/setup-java@v4
        with:
          distribution: 'liberica'
          java-version: 17
      - name: Set Up Gradle
        uses: gradle/actions/setup-gradle@0bdd871935719febd78681f197cd39af5b6e16a6 # v4.2.2
        with:
          cache-read-only: false
      - name: Configure Gradle Properties
        shell: bash
        run: |
          mkdir -p $HOME/.gradle
          echo 'org.gradle.daemon=false' >> $HOME/.gradle/gradle.properties
      - name: Run Release Verification Tests
        env:
          RVT_OSS_REPOSITORY_PASSWORD: ${{ secrets.repository-password }}
          RVT_OSS_REPOSITORY_USERNAME: ${{ secrets.repository-username }}
          RVT_RELEASE_TYPE: oss
          RVT_STAGING: ${{ inputs.staging }}
          RVT_VERSION: ${{ inputs.version }}
        run: ./gradlew spring-ws-release-verification-tests:test
      - name: Upload Build Reports on Failure
        if: failure()
        uses: actions/upload-artifact@v4
        with:
          name: build-reports
          path: '**/build/reports/'
      - name: Send Notification
        if: failure()
        uses: ./send-notification/.github/actions/send-notification
        with:
          run-name: ${{ format('{0} | Verification | {1}', github.ref_name, inputs.version) }}
          status: ${{ job.status }}
          webhook-url: ${{ secrets.google-chat-webhook-url }}
