# 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 Java Amazon-Web-Services2 IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/amazon-web-services2/**"
      - "sdks/java/io/common/**"
      - "sdks/java/core/src/main/**"
      - "build.gradle"
      - "buildSrc/**"
      - "gradle/**"
      - "gradle.properties"
      - "gradlew"
      - "gradle.bat"
      - "settings.gradle.kts"
      - ".github/workflows/beam_PreCommit_Java_Amazon-Web-Services2_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/amazon-web-services2/**"
      - "sdks/java/io/common/**"
      - "sdks/java/core/src/main/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_Amazon-Web-Services2_IO_Direct.json'
      - "build.gradle"
      - "buildSrc/**"
      - "gradle/**"
      - "gradle.properties"
      - "gradlew"
      - "gradle.bat"
      - "settings.gradle.kts"
  issue_comment:
    types: [created]
  schedule:
    - cron: '0 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_Amazon-Web-Services2_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_Amazon-Web-Services2_IO_Direct"]
        job_phrase: ["Run Java_Amazon-Web-Services2_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_Amazon-Web-Services2_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run Amazon-Web-Services2 IO build script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:amazon-web-services2:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: run Amazon-Web-Services2 IO IT script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:amazon-web-services2:integrationTest
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'


# 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 Java Amazon-Web-Services IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/amazon-web-services/**"
      - "sdks/java/io/common/**"
      - "sdks/java/core/src/main/**"
      - "build.gradle"
      - "buildSrc/**"
      - "gradle/**"
      - "gradle.properties"
      - "gradlew"
      - "gradle.bat"
      - "settings.gradle.kts"
      - ".github/workflows/beam_PreCommit_Java_Amazon-Web-Services_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/amazon-web-services/**"
      - "sdks/java/io/common/**"
      - "sdks/java/core/src/main/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_Amazon-Web-Services_IO_Direct.json'
      - "build.gradle"
      - "buildSrc/**"
      - "gradle/**"
      - "gradle.properties"
      - "gradlew"
      - "gradle.bat"
      - "settings.gradle.kts"
  issue_comment:
    types: [created]
  schedule:
    - cron: '0 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_Amazon-Web-Services_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_Amazon-Web-Services_IO_Direct"]
        job_phrase: ["Run Java_Amazon-Web-Services_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_Amazon-Web-Services_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run Amazon-Web-Services IO build script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:amazon-web-services:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: run Amazon-Web-Services IO IT script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:amazon-web-services:integrationTest
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'


PreCommit Java Amqp IO Direct

# 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 Java Amqp IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/amqp/**"
      - ".github/workflows/beam_PreCommit_Java_Amqp_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/amqp/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_Amqp_IO_Direct.json'
  issue_comment:
    types: [created]
  schedule:
    - cron: '15 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_Amqp_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_Amqp_IO_Direct"]
        job_phrase: ["Run Java_Amqp_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_Amqp_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run Amqp IO build script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:amqp:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'


PreCommit Java Azure IO Direct

# 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 Java Azure IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/azure/**"
      - "sdks/java/io/common/**"
      - "sdks/java/core/src/main/**"
      - "build.gradle"
      - "buildSrc/**"
      - "gradle/**"
      - "gradle.properties"
      - "gradlew"
      - "gradle.bat"
      - "settings.gradle.kts"
      - ".github/workflows/beam_PreCommit_Java_Azure_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/azure/**"
      - "sdks/java/io/common/**"
      - "sdks/java/core/src/main/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_Azure_IO_Direct.json'
      - "build.gradle"
      - "buildSrc/**"
      - "gradle/**"
      - "gradle.properties"
      - "gradlew"
      - "gradle.bat"
      - "settings.gradle.kts"
  issue_comment:
    types: [created]
  schedule:
    - cron: '15 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_Azure_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_Azure_IO_Direct"]
        job_phrase: ["Run Java_Azure_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_Azure_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run Azure IO build script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:azure:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'


PreCommit Java Cassandra IO Direct

# 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 Java Cassandra IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/cassandra/**"
      - ".github/workflows/beam_PreCommit_Java_Cassandra_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/cassandra/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_Cassandra_IO_Direct.json'
  issue_comment:
    types: [created]
  schedule:
    - cron: '15 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_Cassandra_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_Cassandra_IO_Direct"]
        job_phrase: ["Run Java_Cassandra_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_Cassandra_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run Cassandra IO build script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:cassandra:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'


PreCommit Java Cdap IO Direct

# 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 Java Cdap IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/cdap/**"
      - "sdks/java/io/hadoop-common/**"
      - "sdks/java/io/hadoop-format/**"
      - ".github/workflows/beam_PreCommit_Java_Cdap_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/cdap/**"
      - "sdks/java/io/hadoop-common/**"
      - "sdks/java/io/hadoop-format/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_Cdap_IO_Direct.json'
  issue_comment:
    types: [created]
  schedule:
    - cron: '15 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_Cdap_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_Cdap_IO_Direct"]
        job_phrase: ["Run Java_Cdap_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_Cdap_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run Cdap IO build script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:cdap:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'


PreCommit Java Clickhouse IO Direct

# 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 Java Clickhouse IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/clickhouse/**"
      - ".github/workflows/beam_PreCommit_Java_Clickhouse_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/clickhouse/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_Clickhouse_IO_Direct.json'
  issue_comment:
    types: [created]
  schedule:
    - cron: '15 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_Clickhouse_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_Clickhouse_IO_Direct"]
        job_phrase: ["Run Java_Clickhouse_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_Clickhouse_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run Clickhouse IO build script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:clickhouse:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'


PreCommit Java Csv IO Direct

# 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 Java Csv IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/csv/**"
      - ".github/workflows/beam_PreCommit_Java_Csv_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/csv/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_Csv_IO_Direct.json'
  issue_comment:
    types: [created]
  schedule:
    - cron: '15 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_Csv_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_Csv_IO_Direct"]
        job_phrase: ["Run Java_Csv_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_Csv_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run Csv IO build script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:csv:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'


PreCommit Java Debezium IO Direct

# 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 Java Debezium IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/debezium/**"
      - ".github/workflows/beam_PreCommit_Java_Debezium_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/debezium/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_Debezium_IO_Direct.json'
  issue_comment:
    types: [created]
  schedule:
    - cron: '15 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_Debezium_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_Debezium_IO_Direct"]
        job_phrase: ["Run Java_Debezium_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_Debezium_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run Debezium IO build task
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:debezium:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: run Debezium IO additional tasks
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: |
            :sdks:java:io:debezium:expansion-service:build \
            :sdks:java:io:debezium:integrationTest \
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'


PreCommit Java ElasticSearch IO Direct

# 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 Java ElasticSearch IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/elasticsearch/**"
      - "sdks/java/io/elasticsearch-tests/**"
      - ".github/workflows/beam_PreCommit_Java_ElasticSearch_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/elasticsearch/**"
      - "sdks/java/io/elasticsearch-tests/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_ElasticSearch_IO_Direct.json'
  issue_comment:
    types: [created]
  schedule:
    - cron: '30 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_ElasticSearch_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_ElasticSearch_IO_Direct"]
        job_phrase: ["Run Java_ElasticSearch_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_ElasticSearch_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run ElasticSearch IO build task
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:elasticsearch:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: run ElasticSearch IO additional tasks
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: |
            :sdks:java:io:elasticsearch-tests:elasticsearch-tests-7:build \
            :sdks:java:io:elasticsearch-tests:elasticsearch-tests-8:build \
            :sdks:java:io:elasticsearch-tests:elasticsearch-tests-common:build \
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'


PreCommit Java Examples Dataflow

# 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 Java Examples Dataflow

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - 'model/**'
      - 'sdks/java/**'
      - 'runners/google-cloud-dataflow-java/**'
      - 'examples/java/**'
      - 'examples/kotlin/**'
      - 'release/**'
      - '.github/workflows/beam_PreCommit_Java_Examples_Dataflow.yml'
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - 'model/**'
      - 'sdks/java/**'
      - 'runners/google-cloud-dataflow-java/**'
      - 'examples/java/**'
      - 'examples/kotlin/**'
      - 'release/**'
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_Examples_Dataflow.json'
  issue_comment:
    types: [created]
  schedule:
    - cron: '30 1/6 * * *'
  workflow_dispatch:

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read
jobs:
  beam_PreCommit_Java_Examples_Dataflow:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    timeout-minutes: 75
    runs-on: [self-hosted, ubuntu-20.04, main]
    strategy:
      matrix:
        job_name: [beam_PreCommit_Java_Examples_Dataflow]
        job_phrase: [Run Java_Examples_Dataflow 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 Java_Examples_Dataflow 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
        with:
          java-version: default
      - name: run javaExamplesDataflowPrecommit script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :javaExamplesDataflowPrecommit
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'


PreCommit Java Examples Dataflow Java21

# 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 Java Examples Dataflow Java21

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
    - 'model/**'
    - 'sdks/java/**'
    - 'runners/google-cloud-dataflow-java/**'
    - 'examples/java/**'
    - 'examples/kotlin/**'
    - 'release/**'
    - '.github/workflows/beam_PreCommit_Java_Examples_Dataflow_Java21.yml'
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
    - 'model/**'
    - 'sdks/java/**'
    - 'runners/google-cloud-dataflow-java/**'
    - 'examples/java/**'
    - 'examples/kotlin/**'
    - 'release/**'
    - 'release/trigger_all_tests.json'
    - '.github/trigger_files/beam_PreCommit_Java_Examples_Dataflow_Java21.json'
  issue_comment:
    types: [created]
  schedule:
  - cron: '30 1/6 * * *'
  workflow_dispatch:

# 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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_Examples_Dataflow_Java21:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_Examples_Dataflow_Java21"]
        job_phrase: ["Run Java_Examples_Dataflow_Java21 PreCommit"]
    timeout-minutes: 75
    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 Java_Examples_Dataflow_Java21 PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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 }})
    # The test requires Java 21 and Java 8 versions.
    # Java 8 is installed second because JAVA_HOME needs to point to Java 8.
    - name: Setup environment
      uses: ./.github/actions/setup-environment-action
      with:
        java-version: |
          21
          8
    - name: Clean
      uses: ./.github/actions/gradle-command-self-hosted-action
      with:
        gradle-command: :clean
        arguments: |
          -PdisableSpotlessCheck=true \
          -PdisableCheckStyle=true \
          -PskipCheckerFramework \
    - name: Build and Test
      uses: ./.github/actions/gradle-command-self-hosted-action
      with:
        gradle-command: :runners:google-cloud-dataflow-java:examples:preCommit
        arguments: |
          -PdisableSpotlessCheck=true \
          -PdisableCheckStyle=true \
          -PtestJavaVersion=21 \
          -PskipCheckerFramework \
          -Pjava21Home=$JAVA_HOME_21_X64 \
        max-workers: 12
    - name: Archive JUnit Test Results
      uses: actions/upload-artifact@v4
      if: ${{ !success() }}
      with:
        name: JUnit Test Results
        path: "**/build/reports/tests/"
    - name: Publish JUnit Test Results
      uses: EnricoMi/publish-unit-test-result-action@v2
      if: always()
      with:
        commit: '${{ env.prsha || env.GITHUB_SHA }}'
        comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
        files: '**/build/test-results/**/*.xml'
    - name: Archive SpotBugs Results
      uses: actions/upload-artifact@v4
      with:
        name: SpotBugs Results
        path: '**/build/reports/spotbugs/*.html'


# 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 Java File-schema-transform IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/file-schema-transform/**"
      - ".github/workflows/beam_PreCommit_Java_File-schema-transform_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/file-schema-transform/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_File-schema-transform_IO_Direct.json'
  issue_comment:
    types: [created]
  schedule:
    - cron: '30 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_File-schema-transform_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_File-schema-transform_IO_Direct"]
        job_phrase: ["Run Java_File-schema-transform_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_File-schema-transform_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run File-schema-transform IO build script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:file-schema-transform:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
            -Dfile.encoding=UTF-8 \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'


PreCommit Java Flink Versions

# 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 Java Flink Versions

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - 'model/**'
      - 'runners/flink/**'
      - 'release/**'
      - '.github/workflows/beam_PreCommit_Java_Flink_Versions.yml'
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - 'model/**'
      - 'runners/flink/**'
      - 'release/**'
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_Flink_Versions.json'
  issue_comment:
    types: [created]
  schedule:
  - cron: '30 1/6 * * *'
  workflow_dispatch:

permissions:
  actions: write
  pull-requests: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_Flink_Versions:
    name: beam_PreCommit_Java_Flink_Versions (Run Java_Flink_Versions PreCommit)
    runs-on: [self-hosted, ubuntu-20.04, main]
    timeout-minutes: 120
    if: |
      github.event_name == 'push' ||
      github.event_name == 'workflow_dispatch' ||
      github.event_name == 'pull_request_target' ||
      (github.event_name == 'schedule' && github.repository == 'apache/beam') ||
      github.event.comment.body == 'Run Java_Flink_Versions PreCommit'
    steps:
      - uses: actions/checkout@v4
      - name: Setup repository
        uses: ./.github/actions/setup-action
        with:
          comment_phrase: 'Run Java_Flink_Versions PreCommit'
          github_token: ${{ secrets.GITHUB_TOKEN }}
      - name: Setup environment
        uses: ./.github/actions/setup-environment-action
        with:
          java-version: default
          python-version: default
      - name: run Java Flink Versions PreCommit script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :flinkPreCommit
          arguments: |
            -PdisableSpotlessCheck=true -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'


PreCommit Java GCP IO Direct

# 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 Java GCP IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "runners/core-construction-java/**"
      - "runners/core-java/**"
      - "sdks/java/core/src/main/**"
      - "sdks/java/extensions/arrow/**"
      - "sdks/java/extensions/google-cloud-platform-core/**"
      - "sdks/java/extensions/protobuf/**"
      - "sdks/java/testing/test-utils/**"
      - "sdks/java/io/common/**"
      - "sdks/java/io/expansion-service/**"
      - "sdks/java/io/google-cloud-platform/**"
      - ".github/workflows/beam_PreCommit_Java_GCP_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "runners/core-construction-java/**"
      - "runners/core-java/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_GCP_IO_Direct.json'
      - "sdks/java/core/src/main/**"
      - "sdks/java/extensions/arrow/**"
      - "sdks/java/extensions/google-cloud-platform-core/**"
      - "sdks/java/extensions/protobuf/**"
      - "sdks/java/testing/test-utils/**"
      - "sdks/java/io/common/**"
      - "sdks/java/io/expansion-service/**"
      - "sdks/java/io/google-cloud-platform/**"
  issue_comment:
    types: [created]
  schedule:
    - cron: '30 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_GCP_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_GCP_IO_Direct"]
        job_phrase: ["Run Java_GCP_IO_Direct PreCommit"]
    timeout-minutes: 120
    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 Java_GCP_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run PreCommit Java GCP IO Direct script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: |
            :sdks:java:io:google-cloud-platform:build \
            :sdks:java:io:google-cloud-platform:expansion-service:build \
            :sdks:java:io:google-cloud-platform:postCommit \
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
            -PenableJacocoReport \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'
      - name: Set Jacoco report path
        id: jacoco_report_path
        run: |
          echo "path=sdks/java/io/google-cloud-platform/build/reports/jacoco/test/jacocoTestReport.xml" >> $GITHUB_OUTPUT
      - name: Archive Jacoco Results
        uses: actions/upload-artifact@v4
        with:
          name: Jacoco Results
          path: '**/build/jacoco/report/**'
      - name: Upload coverage reports to Codecov
        uses: codecov/codecov-action@v3
        with:
          file: ${{ steps.jacoco_report_path.outputs.path }}
          flags: java


PreCommit Java Google-ads IO Direct

# 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 Java Google-ads IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
    - "sdks/java/io/google-ads/**"
    - ".github/workflows/beam_PreCommit_Java_Google-ads_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
    - "sdks/java/io/google-ads/**"
    - 'release/trigger_all_tests.json'
    - '.github/trigger_files/beam_PreCommit_Java_Google-ads_IO_Direct.json'
  issue_comment:
    types: [created]
  schedule:
  - cron: '0 */6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_Google-ads_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_Google-ads_IO_Direct"]
        job_phrase: ["Run Java_Google-ads_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_Google-ads_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run Google-ads IO build script
      uses: ./.github/actions/gradle-command-self-hosted-action
      with:
        gradle-command: :sdks:java:io:google-ads:build
        arguments: |
          -PdisableSpotlessCheck=true \
          -PdisableCheckStyle=true \
    - name: Archive JUnit Test Results
      uses: actions/upload-artifact@v4
      if: ${{ !success() }}
      with:
        name: JUnit Test Results
        path: "**/build/reports/tests/"
    - name: Publish JUnit Test Results
      uses: EnricoMi/publish-unit-test-result-action@v2
      if: always()
      with:
        commit: '${{ env.prsha || env.GITHUB_SHA }}'
        comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
        files: '**/build/test-results/**/*.xml'
    - name: Archive SpotBugs Results
      uses: actions/upload-artifact@v4
      if: always()
      with:
        name: SpotBugs Results
        path: '**/build/reports/spotbugs/*.html'
    - name: Publish SpotBugs Results
      uses: jwgmeligmeyling/spotbugs-github-action@v1.2
      if: always()
      with:
        name: Publish SpotBugs
        path: '**/build/reports/spotbugs/*.html'


PreCommit Java HBase IO Direct

# 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 Java HBase IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/hbase/**"
      - "sdks/java/io/hadoop-common/**"
      - ".github/workflows/beam_PreCommit_Java_HBase_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/hbase/**"
      - "sdks/java/io/hadoop-common/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_HBase_IO_Direct.json'
  issue_comment:
    types: [created]
  schedule:
    - cron: '45 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_HBase_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_HBase_IO_Direct"]
        job_phrase: ["Run Java_HBase_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_HBase_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run HBase IO build script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:hbase:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'


PreCommit Java HCatalog IO Direct

# 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 Java HCatalog IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/hcatalog/**"
      - "sdks/java/io/hadoop-common/**"
      - ".github/workflows/beam_PreCommit_Java_HCatalog_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/hcatalog/**"
      - "sdks/java/io/hadoop-common/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_HCatalog_IO_Direct.json'
  issue_comment:
    types: [created]
  schedule:
    - cron: '45 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_HCatalog_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_HCatalog_IO_Direct"]
        job_phrase: ["Run Java_HCatalog_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_HCatalog_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run HCatalog IO build script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:hcatalog:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'


PreCommit Java Hadoop IO Direct

# 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 Java Hadoop IO Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/hadoop-file-system/**"
      - "sdks/java/io/common/**"
      - "sdks/java/core/src/main/**"
      - "build.gradle"
      - "buildSrc/**"
      - "gradle/**"
      - "gradle.properties"
      - "gradlew"
      - "gradle.bat"
      - "settings.gradle.kts"
      - "examples/java/**"
      - "sdks/java/testing/test-utils/**"
      - "sdks/java/io/hadoop-common/**"
      - "sdks/java/io/hadoop-format/**"
      - ".github/workflows/beam_PreCommit_Java_Hadoop_IO_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/hadoop-file-system/**"
      - "sdks/java/io/common/**"
      - "sdks/java/core/src/main/**"
      - "build.gradle"
      - "buildSrc/**"
      - "gradle/**"
      - "gradle.properties"
      - "gradlew"
      - "gradle.bat"
      - "settings.gradle.kts"
      - "examples/java/**"
      - "sdks/java/testing/test-utils/**"
      - "sdks/java/io/hadoop-common/**"
      - "sdks/java/io/hadoop-format/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_Hadoop_IO_Direct.json'
  issue_comment:
    types: [created]
  schedule:
    - cron: '45 1/6 * * *'
  workflow_dispatch:

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_Hadoop_IO_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_Hadoop_IO_Direct"]
        job_phrase: ["Run Java_Hadoop_IO_Direct PreCommit"]
    timeout-minutes: 60
    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 Java_Hadoop_IO_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run Hadoop IO build script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:hadoop-file-system:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: run Hadoop Common IO build script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:hadoop-common:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: run Hadoop Format IO build script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :sdks:java:io:hadoop-format:build
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'


PreCommit Java IOs Direct

# 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 Java IOs Direct

on:
  push:
    tags: ['v*']
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/common/**"
      - "sdks/java/core/src/main/**"
      - "buildSrc/**"
      - ".github/workflows/beam_PreCommit_Java_IOs_Direct.yml"
  pull_request_target:
    branches: ['master', 'release-*']
    paths:
      - "sdks/java/io/common/**"
      - "sdks/java/core/src/main/**"
      - 'release/trigger_all_tests.json'
      - '.github/trigger_files/beam_PreCommit_Java_IOs_Direct.json'
  issue_comment:
    types: [created]
  workflow_dispatch:
# disable cron run because the tasks are covered by the single IO precommits below

#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: write
  checks: write
  contents: read
  deployments: read
  id-token: none
  issues: write
  discussions: read
  packages: read
  pages: read
  repository-projects: read
  security-events: read
  statuses: read

# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
  group: '${{ github.workflow }} @ ${{ github.event.issue.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

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

jobs:
  beam_PreCommit_Java_IOs_Direct:
    name: ${{ matrix.job_name }} (${{ matrix.job_phrase }})
    strategy:
      matrix:
        job_name: ["beam_PreCommit_Java_IOs_Direct"]
        job_phrase: ["Run Java_IOs_Direct PreCommit"]
    timeout-minutes: 120
    if: |
      github.event_name == 'push' ||
      github.event_name == 'pull_request_target' ||
      github.event_name == 'workflow_dispatch' ||
      github.event.comment.body == 'Run Java_IOs_Direct PreCommit'
    runs-on: [self-hosted, ubuntu-20.04, main]
    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: run Java IOs PreCommit script
        uses: ./.github/actions/gradle-command-self-hosted-action
        with:
          gradle-command: :javaioPreCommit
          arguments: |
            -PdisableSpotlessCheck=true \
            -PdisableCheckStyle=true \
            -Dfile.encoding=UTF-8 \
      - name: Archive JUnit Test Results
        uses: actions/upload-artifact@v4
        if: ${{ !success() }}
        with:
          name: JUnit Test Results
          path: "**/build/reports/tests/"
      - name: Publish JUnit Test Results
        uses: EnricoMi/publish-unit-test-result-action@v2
        if: always()
        with:
          commit: '${{ env.prsha || env.GITHUB_SHA }}'
          comment_mode: ${{ github.event_name == 'issue_comment'  && 'always' || 'off' }}
          files: '**/build/test-results/**/*.xml'
      - name: Archive SpotBugs Results
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: SpotBugs Results
          path: '**/build/reports/spotbugs/*.html'
      - name: Publish SpotBugs Results
        uses: jwgmeligmeyling/spotbugs-github-action@v1.2
        if: always()
        with:
          name: Publish SpotBugs
          path: '**/build/reports/spotbugs/*.html'