name: Gradle Tests
on:
  push:
    branches:
      - '**'
    tags-ignore:
      - '**'
  # Triggers the workflow on labeled PRs only.
  pull_request_target:
    types: [labeled]
# Ensures that only the latest commit is running for each PR at a time.
concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}-${{ github.ref }}
  cancel-in-progress: true
jobs:
  Gradle-Tests:
    if: contains(github.event.pull_request.labels.*.name, 'safe to test') || github.event_name == 'push'
    name: ${{ matrix.os }}-gradle-${{ matrix.gradle-version }}
    strategy:
      fail-fast: false
      matrix:
        os: [ ubuntu, windows, macos ]
        gradle-version: [5.6.4, 8.3]
    runs-on: ${{ matrix.os }}-latest
    env:
      GRADLE_OPTS: -Dorg.gradle.daemon=false
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.sha }}

      - name: Setup Java
        uses: actions/setup-java@v4
        with:
          distribution: 'temurin'
          java-version: '11'

      - name: Setup Gradle
        uses: gradle/gradle-build-action@v2
        with:
          gradle-version: ${{ matrix.gradle-version }}

      - name: Setup Go with cache
        uses: jfrog/.github/actions/install-go-with-cache@main

      - name: Install local Artifactory
        uses: jfrog/.github/actions/install-local-artifactory@main
        with:
          RTLIC: ${{ secrets.RTLIC }}

      - name: Run Gradle tests
        run: go test -v github.com/jfrog/jfrog-cli --timeout 0 --test.gradle
