#    Licensed to the Apache Software Foundation (ASF) under one
#    or more contributor license agreements.  See the NOTICE file
#    distributed with this work for additional information
#    regarding copyright ownership.  The ASF licenses this file
#    to you under the Apache License, Version 2.0 (the
#    "License"); you may not use this file except in compliance
#    with the License.  You may obtain a copy of the License at
#      http://www.apache.org/licenses/LICENSE-2.0
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS,
#    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#    See the License for the specific language governing permissions and
#    limitations under the License.

name: PreCommit Spotless

on:
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - 'buildSrc/**'
      - 'it/**'
      - 'sdks/java/**'
      - 'runners/**'
      - 'examples/java/**'
      - 'examples/kotlin/**'
      - '.test-infra/jenkins/'
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Spotless.json'
  issue_comment:
    types: [created]
  schedule:
    - cron: '0 3/6 * * *'
  workflow_dispatch:

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.pull_request.number || github.event.pull_request.head.label || github.sha || github.head_ref || github.ref }}-${{ github.event.schedule || github.event.comment.id || github.event.sender.login }}'
  cancel-in-progress: true

#Setting explicit permissions for the action to avoid the default permissions which are `write-all` in case of pull_request_target event
permissions:
  actions: write
  pull-requests: read
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: read
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

env:
  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
  GRADLE_ENTERPRISE_CACHE_USERNAME: ${{ secrets.GE_CACHE_USERNAME }}
  GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GE_CACHE_PASSWORD }}

jobs:
  beam_PreCommit_Spotless:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    timeout-minutes: 120
    runs-on: [self-hosted, ubuntu-24.04, main]
    strategy:
      fail-fast: false
      matrix:
        job_name: [beam_PreCommit_Spotless]
        job_phrase: [Run Spotless PreCommit]
    if: |
      github.event_name == 'push' ||
      github.event_name == 'pull_request_target' ||
      (github.event_name == 'schedule' && github.repository == 'apache/beam') ||
      github.event_name == 'workflow_dispatch' ||
      github.event.comment.body == 'Run Spotless PreCommit'
    steps:
      - uses: actions/checkout@v4
      - name: Setup repository
        uses: ./.github/actions/setup-action
        with:
          comment_phrase: ${{ matrix.job_phrase }}
          github_token: ${{ secrets.GITHUB_TOKEN }}
          github_job: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
      - name: Setup environment
        uses: ./.github/actions/setup-environment-action
      - name: Install rsync
        run: sudo apt-get update && sudo apt-get install -y rsync
      - name: run Spotless PreCommit script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: spotlessCheck checkStyleMain checkStyleTest :buildSrc:spotlessCheck
          arguments: -PdisableSpotlessApply
      - name: Upload test report
        uses: actions/upload-artifact@v4
        with:
          name: java-code-coverage-report
          path: "**/build/reports/checkstyle/*.xml"
      - name: Publish checkstyle check
        uses: jwgmeligmeyling/checkstyle-github-action@v1
        if: always()
        with:
          path: '**/build/reports/checkstyle/*.xml'